(defun archdemo nil (init-prolog) (<- (arch (a ?y ?x ?z)) (on ?x ?y) (on ?x ?z) (block ?x) (tower ?y) (tower ?z)) (<- (tower ?x) (block ?x)) (<- (tower (t ?x ?y)) (on ?x ?y) (block ?x) (tower ?y)) (<- (on B (t A ?z)) (on B A)) (<- (on D (t B ?z)) (on D B)) (<- (on D (t C ?z)) (on D C)) (<- (block A)) (<- (block B)) (<- (block C)) (<- (block D)) (<- (block E)) (<- (on B A)) (<- (on D B)) (<- (on D C)) )
[11]> (archdemo) ON [12]> (?- (arch ?x)) ?X = (A (T B A) D (T B A)); ?X = (A (T B A) D B); ?X = (A (T B A) D C); ?X = (A A B A); ?X = (A B D (T B A)); ?X = (A B D B); ?X = (A B D C); ?X = (A C D (T B A)); ?X = (A C D B); ?X = (A C D C); No.