46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
(define (domain BLOCKS)
 | 
						|
  (:requirements :strips :typing)
 | 
						|
  (:types block)
 | 
						|
  (:predicates (on ?x - block ?y - block)
 | 
						|
           (ontable ?x - block)
 | 
						|
           (clear ?x - block)
 | 
						|
           (handempty)
 | 
						|
           (holding ?x - block)
 | 
						|
           )
 | 
						|
 | 
						|
  (:action pick-up
 | 
						|
         :parameters (?x - block)
 | 
						|
         :preconditionX (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 (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 (on ?x ?y) (clear ?x) (handempty))
 | 
						|
         :effect
 | 
						|
         (and (holding ?x)
 | 
						|
           (clear ?y)
 | 
						|
           (not (clear ?x))
 | 
						|
           (not (handempty))
 | 
						|
           (not (on ?x ?y)))))
 |