たとえば以下のようなプログラムを書いて走らせ,
どのようなことを行っているか考えてみよ.
(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.