(Defdomain logistics ( ;; basic operators (:operator (!load-truck ?obj ?truck ?loc) ((compatible ?obj ?truck) (obj-at ?obj ?loc) (truck-at ?truck ?loc)) ((obj-at ?obj ?loc)) ;;delete list ((in-truck ?obj ?truck))) ;;add list (:operator (!unload-truck ?obj ?truck ?loc) () ((in-truck ?obj ?truck)) ((obj-at ?obj ?loc))) (:operator (!load-airplane ?obj ?airplane ?loc) ((compatible ?obj ?airplane)) ((obj-at ?obj ?loc)) ((in-airplane ?obj ?airplane))) ;;Ke: please fill this (:operator (!unload-airplane ?obj ?airplane ?loc) () ((in-airplane ?obj ?airplane)) ((obj-at ?obj ?loc))) (:operator (!drive-truck ?truck ?locfrom ?locto) () ((truck-at ?truck ?locfrom)) ((truck-at ?truck ?locto))) (:operator (!fly-airplane ?airplane ?airportfrom ?airportto) () ((airplane-at ?airplane ?airportfrom)) ((airplane-at ?airplane ?airportto))) (:operator (!do-nothing) () () () 0) (:method (achieve-goals (list ?goal . ?goals)) () ((achieve-single-goal ?goal) (achieve-goals ?goals))) (:method (achieve-goals nil) () ((!do-nothing))) (:method (achieve-single-goal (obj-at ?package ?loc)) ;;============================================= ;;transmission in the same city, loctruck==loc1 ;;============================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city) (IN-CITY ?loc1 ?city) (TRUCK ?truck ?city) (truck-at ?truck ?locTruck) (same ?locTruck ?loc1) (compatible ?package ?truck) ) ( (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?loc) (!unload-truck ?package ?truck ?loc) ) ;;============================================= ;;transmission in the same city, loctruck!=loc1 ;;============================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city) (IN-CITY ?loc1 ?city) (TRUCK ?truck ?city) (truck-at ?truck ?locTruck) (different ?locTruck ?loc1) (compatible ?package ?truck) ) ( (!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?loc) (!unload-truck ?package ?truck ?loc) ) ;;==================================== ;;origin and destination are the same ;;==================================== ( (obj-at ?package ?loc1) (same ?loc1 ?loc) ) ( (!do-nothing) ) ;;========================================= ;; transmission between two diffrent cities ;;========================================= ;;========================================================= ;;#1 loctruck==loc1, airportI==airport, loctruck2==airport2 ;;========================================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (same ?airportI ?airport) (same ?locTruck ?loc1) (same ?loctruck2 ?airport2) (different ?city ?city2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( ;;(!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) ;;(!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) ;;(!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================= ;;#2 loctruck!=loc1, airportI==airport, loctruck2==airport2 ;;========================================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (same ?airportI ?airport) (different ?locTruck ?loc1) (same ?loctruck2 ?airport2) (different ?city ?city2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( (!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) ;;(!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) ;;(!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================= ;;#3 loctruck==loc1, airportI!=airport, loctruck2==airport2 ;;========================================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (different ?airportI ?airport) (same ?locTruck ?loc1) (same ?loctruck2 ?airport2) (different ?city ?city2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( ;;(!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) (!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) ;;(!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================= ;;#4 loctruck==loc1, airportI==airport, loctruck2!=airport2 ;;========================================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (same ?airportI ?airport) (same ?locTruck ?loc1) (different ?loctruck2 ?airport2) (different ?city ?city2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( ;;(!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) ;;(!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) (!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================== ;;#5 locturck!=loc1, airportI!=airport, loctruck2==airport2 ;;========================================================== ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (different ?airportI ?airport) (different ?locTruck ?loc1) (same ?loctruck2 ?airport2) (different ?city ?city2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( (!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) (!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) ;;(!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================== ;;#6 loctruck!=loc1, airportI==airport, loctruck2!=airport2 ;;========================================================== ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (different ?city ?city2) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (same ?airportI ?airport) (different ?locTruck ?loc1) (different ?loctruck2 ?airport2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( (!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) ;;(!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) (!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================== ;;#7 loctruck==loc1, airportI!=airport, loctruck2!=airport2 ;;========================================================== ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (different ?city ?city2) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (different ?airportI ?airport) (same ?locTruck ?loc1) (different ?loctruck2 ?airport2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( ;;(!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) (!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) (!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ;;========================================================= ;;#8 loctruck!=loc1, airportI!=airport, loctruck2!=airport2 ;;========================================================= ( (obj-at ?package ?loc1) (IN-CITY ?loc ?city2) (IN-CITY ?loc1 ?city) (different ?city ?city2) (AIRPORT ?airport) (AIRPORT ?airport2) (AIRPORT ?airportI) (IN-CITY ?airport ?city) (IN-CITY ?airport2 ?city2) (TRUCK ?truck ?city) (TRUCK ?truck2 ?city2) (truck-at ?truck ?locTruck) (truck-at ?truck2 ?locTruck2) (airplane-at ?airplane ?airportI) (different ?airportI ?airport) (different ?locTruck ?loc1) (different ?loctruck2 ?airport2) (compatible ?package ?truck) (compatible ?package ?truck2) (compatible ?package ?airplane) ) ( (!drive-truck ?truck ?locTruck ?loc1) (!load-truck ?package ?truck ?loc1) (!drive-truck ?truck ?loc1 ?airport) (!unload-truck ?package ?truck ?airport) (!fly-airplane ?airplane ?airportI ?airport) (!load-airplane ?package ?airplane ?airport) (!fly-airplane ?airplane ?airport ?airport2) (!unload-airplane ?package ?airplane ?airport2) (!drive-truck ?truck2 ?locTruck2 ?airport2) (!load-truck ?package ?truck2 ?airport2) (!drive-truck ?truck2 ?airport2 ?loc) (!unload-truck ?package ?truck2 ?loc) ) ) ;;**************************************** ;;* axioms statements * ;;**************************************** ;;(1) (:- (same ?x ?x) ()) ;;(2) (:- (sameCity ?a ?b) ((IN-CITY ?a ?c) (IN-CITY ?b ?c)) ) ;;(3) (:- (differentCity ?a ?b) ((IN-CITY ?a ?c) (IN-CITY ?b ?d) (different ?c ?d)) ) ;;(4) (:- (different ?x ?y) ((not (same ?x ?y)))) ;;(5) (:- (type ?v Truck) ((type ?v smallTruck))) (:- (type ?v Truck) ((type ?v mediumTruck))) (:- (type ?v Truck) ((type ?v bigTruck))) (:- (type ?o Package) ((type ?o smallPackage))) (:- (type ?o Package) ((type ?o mediumPackage))) (:- (type ?o Package) ((type ?o bigPackage))) (:- (type ?a Airplane) ((type ?a smallPlane))) (:- (type ?a Airplane) ((type ?a mediumPlane))) (:- (type ?a Airplane) ((type ?a bigPlane))) ;;(6) (:- (compatible ?o ?v) ((type ?o smallPackage))) (:- (compatible ?o ?v) ((type ?o mediumPackage) (type ?v mediumTruck))) (:- (compatible ?o ?v) ((type ?v bigTruck))) (:- (compatible ?o ?a) ((type ?o mediumPackage) (type ?a mediumPlane))) (:- (compatible ?o ?a) ((type ?a bigPlane))) (:- (compatible ?o ?v) ( (trulyGenericPackage ?o) (trulyGenericTruck ?v))) (:- (compatible ?o ?a) ( (trulyGenericPackage ?o) (trulyGenericAirplane ?a))) (:- (trulyGenericPackage ?o) ((type ?o Package) (not (type ?o bigPackage)) (not (type ?o mediumPackage)) (not (type ?o smallPackage)))) (:- (trulyGenericTruck ?v) ((type ?v Truck) (not (type ?v bigTruck)) (not (type ?v mediumTruck)) (not (type ?v smallTruck)))) (:- (trulyGenericAirplane ?a) ((type ?a Airplane) (not (type ?a bigPlane)) (not (type ?a mediumPlane)) (not (type ?a smallPlane)))) ;; (:- (compatible ?o ?v) ((type ?o Package) (not (type ?o bigPackage)) (not (type ?o mediumPackage)))) ;; (:- (compatible ?o ?a) ((type ?a Airplane) (not (type ?a smallPlane)) (not (type ?a mediumPlane)))) ;; (:- (compatible ?o ?v) ((type ?v Truck) (not (type ?v smallTruck)) (not (type ?v mediumTruck)))) ;; (:- (type ?v Truck) ((type ?v smallTruck))) ;; (:- (type ?v Truck) ((type ?v mediumTruck))) ;; (:- (type ?v Truck) ((type ?v bigTruck))) ;; (:- (type ?o Package) ((type ?o smallPackage))) ;; (:- (type ?o Package) ((type ?o mediumPackage))) ;; (:- (type ?o Package) ((type ?o bigPackage))) ;; (:- (type ?a Airplane) ((type ?a smallPlane))) ;; (:- (type ?a Airplane) ((type ?a mediumPlane))) ;; (:- (type ?a Airplane) ((type ?a bigPlane))) ;;(6) ;; (:- (type ?v smallTruck) ((not (type ?v mediumTruck)) (not(type ?v bigTruck)) (type ?v truck)) ;; (:- (type ?v mediumTruck) ((not (type ?v smallTruck)) (not(type ?v bigTruck)) (type ?v truck)) ;; (:- (type ?v bigTruck) ((not (type ?v smallTruck)) (not(type ?v mediumTruck)) (type ?V truck)) ;; (:- (type ?p smallPackage) ((not (type ?p mediumPackage)) (not(type ?p bigPackage)) (type ?p package)) ;; (:- (type ?p mediumPackage) ((not (type ?p smallPackage)) (not(type ?p bigPackage)) (type ?p package)) ;; (:- (type ?p bigPackage) ((not (type ?p smallPackage)) (not(type ?p mediumPackage)) (type ?p package)) ;; (:- (transport ?x) ((vehicle ?x))) ) )