;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 4 Op-blocks world ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ( define ( domain blocks ) ( :requirements :strips :typing :equality ) ( :types block ) ( :predicates ( on ?x - block ?y - block ) ( ontable ?x - block ) ( clear ?x - block ) ( handempty ) ( holding ?x - block ) ) ( :action pick-up :parameters ( ?x - block ) :precondition ( and ( clear ?x ) ( ontable ?x ) ( handempty ) ) :effect ( and ( not ( ontable ?x ) ) ( not ( clear ?x ) ) ( not ( handempty ) ) ( holding ?x ) ) ) ( :action put-down :parameters ( ?x - block ) :precondition ( holding ?x ) :effect ( and ( not ( holding ?x ) ) ( clear ?x ) ( handempty ) ( ontable ?x ) ) ) ( :action stack :parameters ( ?x - block ?y - block ) :precondition ( and ( not ( = ?x ?y ) ) ( holding ?x ) ( clear ?y ) ) :effect ( and ( not ( holding ?x ) ) ( not ( clear ?y ) ) ( clear ?x ) ( handempty ) ( on ?x ?y ) ) ) ( :action unstack :parameters ( ?x - block ?y - block ) :precondition ( and ( not ( = ?x ?y ) ) ( on ?x ?y ) ( clear ?x ) ( handempty ) ) :effect ( and ( holding ?x ) ( clear ?y ) ( not ( clear ?x ) ) ( not ( handempty ) ) ( not ( on ?x ?y ) ) ) ) )