Boolo的奇怪推理最初是用等式 here 制定的。它是函数f和谓词d的递归定义,通过N +的语法,自然数不带零,从1和s(。)生成。
但它也可以用Horn Clauses制定。逻辑内容不完全相同,谓词f只捕获函数的正面,但问题类型是相同的。采取以下Prolog计划:
f(_, 1, s(1)).
f(1, s(X), s(s(Y))) :- f(1, X, Y).
f(s(X), s(Y), T) :- f(s(X), Y, Z), f(X, Z, T).
d(1).
d(s(X)) :- d(X).
上一次查询的理论逻辑结果是什么,你能否证明我们的时间和空间中有一个计算机程序可以产生结果,即在gist上发布程序并且每个人都可以运行它?
?- f(X,X,Y).
X = 1,
Y = s(1)
X = s(1),
Y = s(s(s(1)))
X = s(s(1)),
Y = s(s(s(s(s(s(s(s(s(s(...))))))))))
ERROR: Out of global stack
?- f(s(s(s(s(1)))), s(s(s(s(1)))), X), d(X).
如果执行认证结果工作的程序不是像 here 那样的Prolog解释器,那么这项工作特别适用于这个Prologish问题公式的工作是什么?