%log term : highlevel. (* %log counters : highlevel. %log timers : highlevel. %log sel : highlevel. *) (* predicates loc : type cargo : type plane : type cargoAt : cargo -> loc -> prop planeAt : plane -> loc -> prop aboard : cargo -> plane -> prop hasFuel,noFuel : plane -> prop gasAvail : loc -> prop *) (* axioms *) load : (O) (L) (P) cargoAt(O,L) -o planeAt(P,L) -o (aboard(O,P) * planeAt(P,L)). unload : (O) (L) (P) planeAt(P,L) -o aboard(O,P) -o (cargoAt(O,L) * planeAt(P,L)). fly : (P) (L1) (L2) planeAt(P,L1) -o hasFuel(P) -o (noFuel(P) * planeAt(P,L2)). refuel : (L) (P) planeAt(P,L) -o noFuel(P) -o gasAvail(L) -o (hasFuel(P) * planeAt(P,L) * gasAvail(L)). (* Tests *) % can load cargo into a plane %prove cargoAt(O1,NY) -o planeAt(P747,NY) -o aboard(O1,P747) * #. % can move refuel and then move cargo (* O1 : cargo, O2: cargo, P747 : plane, NY : loc, SF : loc *) %prove cargoAt(O1,NY) -o cargoAt(O2,NY) -o planeAt(P747, NY) -o gasAvail(NY) -o noFuel(P747) -o (cargoAt(O1,LA) * cargoAt(O2, LA) * planeAt(P747, LA) * noFuel(P747) * gasAvail(NY)).