% A module about AIRTRAVEL, this time with actual air!

%  This module is very similar to BRIEFCASE
%  (and I think adding MOVE_TO_REGION to BRIEFCASE
%  would give us LOGISTICS).

include "airtravel"

module AIRTRAVEL_AIR;

  import AIRTRAVEL;

  objects
    Air : Supporter;

  actions
    TakeOff; Land;

  variables
    x : Thing;
    m : Person;
    p : Place;

  import MOUNT;
    Mount(AirForce1, Air) is TakeOff;

  import MOUNT;
    Mount(AirForce1, Ground) is Land;
  
  axioms
    % Must take off before flying
    nonexecutable Fly(p) if Support(AirForce1)=Ground;

     % Must land before getting in or out
    nonexecutable (Board(m) | Disembark(m)) if Support(AirForce1)!=Ground;

    % Only the plane can be freely flying
    constraint Support(x)=Air -> x=AirForce1;
