Prologの挙動が追えない
add(0, Y, Y). add(s(X), Y, s(Z)) :- add(X, Y, Z). mul(0, _, 0). mul(s(X), Y, Z) :- mul(X, Y, Z1), add(Z1, Y, Z).
こうした場合に
?- mul(X, Y, s(s(s(s(0))))).
これが上手く動かない。ていうか終了しない。traceをじっくり眺めて研究する必要がありそうっていうかPrologの挙動が分かるような文書を探すほうが手っ取り早いか。とりあえず探索問題一つ思いついた。
追記:どうも解が見つからない時に挙動がおかしくなってるようす。終了条件が無いからか?→どうやって終了条件を付ければ良いか考える。