(in-package "UCPOP") (define (domain lunar-lockout) (:operator MoveRowRight1TO4 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 1) (blocked ?row 5) (clear ?row 2) (clear ?row 3) (clear ?row 4)) :effect (:and (:not (at ?obj ?row 1)) (:not (blocked ?row 1)) (:not (clear ?row 4)) (at ?obj ?row 4) (blocked ?row 4) (clear ?row 1)) ) (:operator MoveRowRight1TO3 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 1) (blocked ?row 4) (clear ?row 2) (clear ?row 3) (clear ?row 3)) :effect (:and (:not (at ?obj ?row 1)) (:not (blocked ?row 1)) (:not (clear ?row 3)) (at ?obj ?row 3) (blocked ?row 3) (clear ?row 1)) ) (:operator MoveRowRight1TO2 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 1) (blocked ?row 3) (clear ?row 2)) :effect (:and (:not (at ?obj ?row 1)) (:not (blocked ?row 1)) (:not (clear ?row 2)) (at ?obj ?row 2) (blocked ?row 2) (clear ?row 1)) ) (:operator MoveRowRight2TO4 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 2) (blocked ?row 5) (clear ?row 3) (clear ?row 4)) :effect (:and (:not (at ?obj ?row 2)) (:not (blocked ?row 2)) (:not (clear ?row 4)) (at ?obj ?row 4) (blocked ?row 4) (clear ?row 2)) ) (:operator MoveRowRight2TO3 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 2) (blocked ?row 4) (clear ?row 3)) :effect (:and (:not (at ?obj ?row 2)) (:not (blocked ?row 2)) (:not (clear ?row 3)) (at ?obj ?row 3) (blocked ?row 3) (clear ?row 2)) ) (:operator MoveRowRight3TO4 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 3) (blocked ?row 5) (clear ?row 4)) :effect (:and (:not (at ?obj ?row 3)) (:not (blocked ?row 3)) (:not (clear ?row 4)) (at ?obj ?row 4) (blocked ?row 4) (clear ?row 3)) ) (:operator MoveRowLeft5TO2 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 5) (blocked ?row 1) (clear ?row 2) (clear ?row 3) (clear ?row 4)) :effect (:and (:not (at ?obj ?row 5)) (:not (blocked ?row 5)) (:not (clear ?row 2)) (at ?obj ?row 2) (blocked ?row 2) (clear ?row 5)) ) (:operator MoveRowLeft5TO3 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 5) (blocked ?row 2) (clear ?row 4) (clear ?row 3)) :effect (:and (:not (at ?obj ?row 5)) (:not (blocked ?row 5)) (:not (clear ?row 3)) (at ?obj ?row 3) (blocked ?row 3) (clear ?row 5)) ) (:operator MoveRowLeft5TO4 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 5) (blocked ?row 3) (clear ?row 4)) :effect (:and (:not (at ?obj ?row 5)) (:not (blocked ?row 5)) (:not (clear ?row 4)) (at ?obj ?row 4) (blocked ?row 4) (clear ?row 5)) ) (:operator MoveRowLeft4TO2 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 4) (blocked ?row 1) (clear ?row 2) (clear ?row 3)) :effect (:and (:not (at ?obj ?row 4)) (:not (blocked ?row 4)) (:not (clear ?row 2)) (at ?obj ?row 2) (blocked ?row 2) (clear ?row 4)) ) (:operator MoveRowLeft4TO3 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 4) (blocked ?row 2) (clear ?row 3)) :effect (:and (:not (at ?obj ?row 4)) (:not (blocked ?row 4)) (:not (clear ?row 3)) (at ?obj ?row 3) (blocked ?row 3) (clear ?row 4)) ) (:operator MoveRowLeft3TO2 :parameters ((OBJECT ?obj) (ROW ?row)) :precondition (:and (at ?obj ?row 3) (blocked ?row 1) (clear ?row 2)) :effect (:and (:not (at ?obj ?row 3)) (:not (blocked ?row 3)) (:not (clear ?row 2)) (at ?obj ?row 2) (blocked ?row 2) (clear ?row 3)) ) (:operator MoveColDownaTOd :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj a ?col) (blocked e ?col) (clear b ?col) (clear c ?col) (clear d ?col)) :effect (:and (:not (at ?obj a ?col)) (:not (blocked a ?col)) (:not (clear d ?col)) (at ?obj d ?col) (blocked d ?col) (clear a ?col)) ) (:operator MoveColDownaTOc :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj a ?col) (blocked d ?col) (clear b ?col) (clear c ?col) ) :effect (:and (:not (at ?obj a ?col)) (:not (blocked a ?col)) (:not (clear c ?col)) (at ?obj c ?col) (blocked c ?col) (clear a ?col)) ) (:operator MoveColDownaTOb :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj a ?col) (blocked c ?col) (clear b ?col) ) :effect (:and (:not (at ?obj a ?col)) (:not (blocked a ?col)) (:not (clear b ?col)) (at ?obj b ?col) (blocked b ?col) (clear a ?col)) ) (:operator MoveColDownbTOd :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj b ?col) (blocked e ?col) (clear c ?col) (clear d ?col)) :effect (:and (:not (at ?obj b ?col)) (:not (blocked b ?col)) (:not (clear d ?col)) (at ?obj d ?col) (blocked d ?col) (clear b ?col)) ) (:operator MoveColDownbTOc :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj b ?col) (blocked d ?col) (clear c ?col) ) :effect (:and (:not (at ?obj b ?col)) (:not (blocked b ?col)) (:not (clear c ?col)) (at ?obj c ?col) (blocked c ?col) (clear b ?col)) ) (:operator MoveColDowncTOd :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj c ?col) (blocked e ?col) (clear c ?col) (clear d ?col)) :effect (:and (:not (at ?obj c ?col)) (:not (blocked c ?col)) (:not (clear d ?col)) (at ?obj d ?col) (blocked d ?col) (clear c ?col)) ) (:operator MoveColUpeTOb :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj e ?col) (blocked a ?col) (clear b ?col) (clear c ?col) (clear d ?col)) :effect (:and (:not (at ?obj e ?col)) (:not (blocked e ?col)) (:not (clear b ?col)) (at ?obj b ?col) (blocked b ?col) (clear e ?col)) ) (:operator MoveColUpeTOc :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj e ?col) (blocked b ?col) (clear c ?col) (clear d ?col)) :effect (:and (:not (at ?obj e ?col)) (:not (blocked e ?col)) (:not (clear c ?col)) (at ?obj c ?col) (blocked c ?col) (clear e ?col)) ) (:operator MoveColUpeTOd :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj e ?col) (blocked c ?col) (clear d ?col)) :effect (:and (:not (at ?obj e ?col)) (:not (blocked e ?col)) (:not (clear d ?col)) (at ?obj d ?col) (blocked d ?col) (clear e ?col)) ) (:operator MoveColUpdTOb :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj d ?col) (blocked a ?col) (clear b ?col) (clear c ?col) ) :effect (:and (:not (at ?obj d ?col)) (:not (blocked d ?col)) (:not (clear b ?col)) (at ?obj b ?col) (blocked b ?col) (clear d ?col)) ) (:operator MoveColUpdTOc :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj d ?col) (blocked b ?col) (clear c ?col) ) :effect (:and (:not (at ?obj d ?col)) (:not (blocked d ?col)) (:not (clear c ?col)) (at ?obj c ?col) (blocked c ?col) (clear d ?col)) ) (:operator MoveColUpcTOb :parameters ((OBJECT ?obj) (COL ?col)) :precondition (:and (at ?obj c ?col) (blocked a ?col) (clear b ?col) ) :effect (:and (:not (at ?obj c ?col)) (:not (blocked c ?col)) (:not (clear b ?col)) (at ?obj b ?col) (blocked b ?col) (clear c ?col)) ) )