Pure Prolog Peano Number Apartness
Pure Prolog Peano Number Apartness
让我们假设有 pure_2 Prolog with dif/2 和 pure_1 Prolog without dif/2。我们能否意识到
值的 Peano apartness,即 Peano 数,不使用 dif/2?因此,假设我们在 pure_2 Prolog:
中有这样的 Peano 分离度
/* pure_2 Prolog */
neq(X, Y) :- dif(X, Y).
我们能否用更纯粹的定义替换 neq(X,Y),即来自不使用 dif/2 的 pure_1 Prolog?所以我们有一个终止谓词 neq/2 可以决定 Peano 数的不等式?那么它的定义是什么?
/* pure_1 Prolog */
neq(X, Y) :- ??
使用 中的 less
:
less(0, s(_)).
less(s(X), s(Y)) :- less(X, Y).
neq(X, Y) :- less(X, Y); less(Y, X).
我想到了别的东西,它来自Peano Axioms中的两个,这也是鲁滨逊算术的一部分。第一个公理已经是一个 Horn 子句,讲的是 apartness:
∀x(0 ≠ S(x))
∀x∀y(S(x) = S(y) ⇒ x = y)
对第二个公理应用对立给出。
公理现在是一个 Horn 子句,谈论的是独立性:
∀x∀y(x ≠ y ⇒ S(x) ≠ S(y))
现在我们已经准备好编写一些 Prolog 代码了。
添加一些对称性我们得到:
neq(0, s(_)).
neq(s(_), 0).
neq(s(X), s(Y)) :- neq(X, Y).
以下是一些示例查询。谓词是否留下选择
点取决于 Prolog 系统。我得到:
SWI-Prolog 8.3.15(一些选择点):
?- neq(s(s(0)), s(s(0))).
false.
?- neq(s(s(0)), s(0)).
true ;
false.
Jekejeke Prolog 1.4.6(无选择点):
?- neq(s(s(0)), s(s(0))).
No
?- neq(s(s(0)), s(0)).
Yes
让我们假设有 pure_2 Prolog with dif/2 和 pure_1 Prolog without dif/2。我们能否意识到 值的 Peano apartness,即 Peano 数,不使用 dif/2?因此,假设我们在 pure_2 Prolog:
中有这样的 Peano 分离度/* pure_2 Prolog */
neq(X, Y) :- dif(X, Y).
我们能否用更纯粹的定义替换 neq(X,Y),即来自不使用 dif/2 的 pure_1 Prolog?所以我们有一个终止谓词 neq/2 可以决定 Peano 数的不等式?那么它的定义是什么?
/* pure_1 Prolog */
neq(X, Y) :- ??
使用 less
:
less(0, s(_)).
less(s(X), s(Y)) :- less(X, Y).
neq(X, Y) :- less(X, Y); less(Y, X).
我想到了别的东西,它来自Peano Axioms中的两个,这也是鲁滨逊算术的一部分。第一个公理已经是一个 Horn 子句,讲的是 apartness:
∀x(0 ≠ S(x))
∀x∀y(S(x) = S(y) ⇒ x = y)
对第二个公理应用对立给出。
公理现在是一个 Horn 子句,谈论的是独立性:
∀x∀y(x ≠ y ⇒ S(x) ≠ S(y))
现在我们已经准备好编写一些 Prolog 代码了。
添加一些对称性我们得到:
neq(0, s(_)).
neq(s(_), 0).
neq(s(X), s(Y)) :- neq(X, Y).
以下是一些示例查询。谓词是否留下选择
点取决于 Prolog 系统。我得到:
SWI-Prolog 8.3.15(一些选择点):
?- neq(s(s(0)), s(s(0))).
false.
?- neq(s(s(0)), s(0)).
true ;
false.
Jekejeke Prolog 1.4.6(无选择点):
?- neq(s(s(0)), s(s(0))).
No
?- neq(s(s(0)), s(0)).
Yes