(define (domain CIIRC-Testbed-TASE) (:requirements :action-costs :typing :negative-preconditions :disjunctive-preconditions :equality) (:types PersonnelClass Person EquipmentClass Equipment MaterialClass MaterialDefinition MaterialLot) (:constants PC_MaintenanceEngineer - PersonnelClass EC_Shuttle - EquipmentClass EC_Robot - EquipmentClass EC_BaseplateCarrier - EquipmentClass EC_PositioningUnit - EquipmentClass EC_TransportationNode - EquipmentClass MC_Body - MaterialClass MC_Truck - MaterialClass MC_Pickable - MaterialClass MC_Baseplate - MaterialClass MC_TruckComponent - MaterialClass MC_Chassis - MaterialClass MC_Cabin - MaterialClass MD_StakeBed-White-White-White - MaterialDefinition MD_Cabin-Silver - MaterialDefinition MD_StakeBed-Black-Blue-White - MaterialDefinition MD_Body-Dumper-Yellow - MaterialDefinition MD_Dumper-White-Transparent-Yellow - MaterialDefinition MD_Tank-Black-White-Black - MaterialDefinition MD_Body-OpenTop-Blue - MaterialDefinition MD_TruckBaseplate - MaterialDefinition MD_Chassis-Black - MaterialDefinition MD_Cabin-Yellow - MaterialDefinition MD_Body-Tank-Black - MaterialDefinition MD_Cabin-Blue - MaterialDefinition MD_OpenTop-Black-Yellow-Blue - MaterialDefinition MD_Dumper-White-Silver-Silver - MaterialDefinition MD_Body-Dumper-Silver - MaterialDefinition MD_Chassis-White - MaterialDefinition MD_Cabin-Transparent - MaterialDefinition MD_Body-StakeBed-White - MaterialDefinition MD_Tank-Black-Blue-Silver - MaterialDefinition MD_Cabin-White - MaterialDefinition MD_Body-Tank-Silver - MaterialDefinition EC_Table - EquipmentClass ) (:predicates (PersonClassed ?P - Person ?C - PersonnelClass) (EquipmentClassed ?E - Equipment ?C - EquipmentClass) (MaterialClassed ?D - MaterialDefinition ?C - MaterialClass) (MaterialDefined ?L - MaterialLot ?D - MaterialDefinition) (MaterialLotClassed ?L - MaterialLot ?C - MaterialClass) (RobotOccupied ?E - Equipment) (TransportationNodeOccupied ?E - Equipment) (PositioningUnitLocked ?E - Equipment) (RobotEnabled ?E - Equipment) (TransportationNodeConnection ?F ?T - Equipment) (EquipmentLocation ?E ?R - Equipment) (ReachesTo ?R ?E - Equipment) (MaterialLocation ?M - MaterialLot ?E - Equipment) (MaterialRaw ?M - MaterialLot) (DefinitionMountable ?M ?B - MaterialDefinition) (ClassMountable ?M ?B - MaterialClass) (Mounted ?M ?B - MaterialLot) (MaterialLotAssembly ?W ?P - MaterialLot) (MaterialDefinitionAssembly ?W ?P - MaterialDefinition) ) (:functions (total-cost) (shuttle-time ?FROM ?TO - Equipment) ) (:action LockPositioningUnit :parameters (?E - Equipment) :precondition (and (EquipmentClassed ?E EC_PositioningUnit) (not (PositioningUnitLocked ?E)) ) :effect (and (increase (total-cost) 1) (PositioningUnitLocked ?E) ) ) (:action UnlockPositioningUnit :parameters (?E - Equipment) :precondition (and (EquipmentClassed ?E EC_PositioningUnit) (PositioningUnitLocked ?E) ) :effect (and (increase (total-cost) 1) (not (PositioningUnitLocked ?E)) ) ) (:action MoveShuttle :parameters (?SHUTTLE ?FROM ?TO - Equipment) :precondition (and (EquipmentClassed ?SHUTTLE EC_Shuttle) (or (EquipmentClassed ?FROM EC_PositioningUnit) (EquipmentClassed ?FROM EC_TransportationNode) ) (imply (EquipmentClassed ?FROM EC_PositioningUnit) (not (PositioningUnitLocked ?FROM)) ) (imply (EquipmentClassed ?FROM EC_TransportationNode) (TransportationNodeOccupied ?FROM) ) (or (EquipmentClassed ?TO EC_PositioningUnit) (EquipmentClassed ?TO EC_TransportationNode) ) (imply (EquipmentClassed ?TO EC_PositioningUnit) (not (PositioningUnitLocked ?TO)) ) (imply (EquipmentClassed ?TO EC_TransportationNode) (not (TransportationNodeOccupied ?TO)) ) (TransportationNodeConnection ?FROM ?TO) (EquipmentLocation ?SHUTTLE ?FROM) (not (EquipmentLocation ?SHUTTLE ?TO)) ) :effect (and (not (TransportationNodeOccupied ?FROM)) (TransportationNodeOccupied ?TO) (increase (total-cost) (shuttle-time ?FROM ?TO)) (not (EquipmentLocation ?SHUTTLE ?FROM)) (EquipmentLocation ?SHUTTLE ?TO) ) ) (:action Pick :parameters (?ROBOT ?CARRIER - Equipment ?PICKABLE ?BASEPLATE - MaterialLot ?SUBCARRIER - Equipment) :precondition (and (EquipmentClassed ?ROBOT EC_Robot) (not (RobotOccupied ?ROBOT)) (RobotEnabled ?ROBOT) (EquipmentClassed ?CARRIER EC_BaseplateCarrier) (MaterialLotClassed ?PICKABLE MC_Pickable) (MaterialLotClassed ?BASEPLATE MC_Baseplate) (MaterialRaw ?PICKABLE) (MaterialLocation ?BASEPLATE ?CARRIER) (Mounted ?PICKABLE ?BASEPLATE) (not (MaterialLocation ?PICKABLE ?ROBOT)) (imply (EquipmentClassed ?CARRIER EC_Table) (and (ReachesTo ?ROBOT ?CARRIER) (= ?CARRIER ?SUBCARRIER) ) ) (imply (EquipmentClassed ?CARRIER EC_Shuttle) (and (EquipmentClassed ?SUBCARRIER EC_PositioningUnit) (EquipmentLocation ?CARRIER ?SUBCARRIER) (ReachesTo ?ROBOT ?SUBCARRIER) (PositioningUnitLocked ?SUBCARRIER) ) ) ) :effect (and (RobotOccupied ?ROBOT) (increase (total-cost) 5) (not (Mounted ?PICKABLE ?BASEPLATE)) (MaterialLocation ?PICKABLE ?ROBOT) ) ) (:action Place :parameters (?ROBOT ?CARRIER - Equipment ?PICKABLE ?BASEPLATE - MaterialLot ?SUBCARRIER - Equipment) :precondition (and (EquipmentClassed ?ROBOT EC_Robot) (RobotOccupied ?ROBOT) (RobotEnabled ?ROBOT) (EquipmentClassed ?CARRIER EC_BaseplateCarrier) (MaterialLotClassed ?PICKABLE MC_Pickable) (MaterialLotClassed ?BASEPLATE MC_Baseplate) (MaterialRaw ?PICKABLE) (MaterialLocation ?BASEPLATE ?CARRIER) (not (Mounted ?PICKABLE ?BASEPLATE)) (MaterialLocation ?PICKABLE ?ROBOT) (imply (EquipmentClassed ?CARRIER EC_Table) (and (ReachesTo ?ROBOT ?CARRIER) (= ?CARRIER ?SUBCARRIER) ) ) (imply (EquipmentClassed ?CARRIER EC_Shuttle) (and (EquipmentClassed ?SUBCARRIER EC_PositioningUnit) (EquipmentLocation ?CARRIER ?SUBCARRIER) (ReachesTo ?ROBOT ?SUBCARRIER) (PositioningUnitLocked ?SUBCARRIER) ) ) ) :effect (and (not (RobotOccupied ?ROBOT)) (increase (total-cost) 5) (Mounted ?PICKABLE ?BASEPLATE) (not (MaterialLocation ?PICKABLE ?ROBOT)) ) ) (:action Assemble :parameters (?ROBOT ?CARRIER - Equipment ?PICKABLE ?BASE ?ASSEMBLY ?BASEPLATE - MaterialLot ?SUBCARRIER - Equipment) :precondition (and (EquipmentClassed ?ROBOT EC_Robot) (RobotOccupied ?ROBOT) (RobotEnabled ?ROBOT) (EquipmentClassed ?CARRIER EC_BaseplateCarrier) (MaterialLotClassed ?PICKABLE MC_Pickable) (MaterialLotClassed ?BASE MC_TruckComponent) (MaterialLotClassed ?ASSEMBLY MC_Truck) (MaterialLotClassed ?BASEPLATE MC_Baseplate) (MaterialRaw ?PICKABLE) (MaterialLocation ?BASEPLATE ?CARRIER) (Mounted ?BASE ?BASEPLATE) (or (exists ( ?AMD - MaterialDefinition ?PMD - MaterialDefinition ?BMD - MaterialDefinition) (and (MaterialDefined ?ASSEMBLY ?AMD) (MaterialDefined ?PICKABLE ?PMD) (MaterialDefined ?BASE ?BMD) (MaterialDefinitionAssembly ?AMD ?PMD) (MaterialDefinitionAssembly ?AMD ?BMD) (DefinitionMountable ?PMD ?BMD) ) ) (exists ( ?PMC - MaterialClass ?BMC - MaterialClass ?AMD - MaterialDefinition ?PMD - MaterialDefinition ?BMD - MaterialDefinition) (and (MaterialDefined ?ASSEMBLY ?AMD) (MaterialDefined ?PICKABLE ?PMD) (MaterialDefined ?BASE ?BMD) (MaterialClassed ?BMD ?BMC) (MaterialClassed ?PMD ?PMC) (MaterialDefinitionAssembly ?AMD ?PMD) (MaterialDefinitionAssembly ?AMD ?BMD) (ClassMountable ?PMC ?BMC) ) ) ) (not (exists (?A - MaterialLot) (and (not (= ?A ?ASSEMBLY) ) (MaterialLotAssembly ?A ?BASE) ) ) ) (not (exists (?BP - MaterialLot) (and (not (= ?BP ?BASEPLATE) ) (Mounted ?ASSEMBLY ?BP) ) ) ) (not (Mounted ?PICKABLE ?BASEPLATE)) (MaterialLocation ?PICKABLE ?ROBOT) (imply (EquipmentClassed ?CARRIER EC_Table) (and (ReachesTo ?ROBOT ?CARRIER) (= ?CARRIER ?SUBCARRIER) ) ) (imply (EquipmentClassed ?CARRIER EC_Shuttle) (and (EquipmentClassed ?SUBCARRIER EC_PositioningUnit) (EquipmentLocation ?CARRIER ?SUBCARRIER) (ReachesTo ?ROBOT ?SUBCARRIER) (PositioningUnitLocked ?SUBCARRIER) ) ) ) :effect (and (not (RobotOccupied ?ROBOT)) (increase (total-cost) 5) (Mounted ?PICKABLE ?BASE) (not (MaterialRaw ?PICKABLE)) (not (MaterialRaw ?BASE)) (MaterialLotAssembly ?ASSEMBLY ?PICKABLE) (MaterialLotAssembly ?ASSEMBLY ?BASE) (Mounted ?ASSEMBLY ?BASEPLATE) (MaterialLocation ?ASSEMBLY ?CARRIER) (MaterialLocation ?PICKABLE ?CARRIER) (not (MaterialLocation ?PICKABLE ?ROBOT)) ) ) (:action RepairRobot :parameters (?ENGINEER - Person ?ROBOT - Equipment) :precondition (and (PersonClassed ?ENGINEER PC_MaintenanceEngineer) (EquipmentClassed ?ROBOT EC_Robot) (not (RobotEnabled ?ROBOT)) ) :effect (and (RobotEnabled ?ROBOT) (increase (total-cost) 99) ) ) )