GNU Prolog 的同义反复检查器

发布于 2024-11-29 16:11:40 字数 1539 浏览 1 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

网名女生简单气质 2024-12-06 16:11:40

如果您想要 Prolog 中的可扩展定理证明器,请查看精益定理证明器系列,其中 leanCOP 是主要代表;它在 555 字节的 Prolog 中处理经典的一阶逻辑。

1.0版本是以下程序:

prove(M,I) :- append(Q,[C|R],M), \+member(-_,C),
 append(Q,R,S), prove([!],[[-!|C]|S],[],I).
prove([],_,_,_).
prove([L|C],M,P,I) :- (-N=L; -L=N) -> (member(N,P);
 append(Q,[D|R],M), copy_term(D,E), append(A,[N|B],E),
 append(A,B,F), (D==E -> append(R,Q,S); length(P,K), K<I,
 append(R,[D|Q],S)), prove(F,S,[L|P],I)), prove(C,M,P,I).

leanCOP网站具有更多可读版本,具有更多功能。您必须自己实现相等和算术。

If you want an extensible theorem prover in Prolog, check out the family of lean theorem provers, of which leanCOP is the main representative; it handles classical first-order logic in 555 bytes of Prolog.

Version 1.0 is the following program:

prove(M,I) :- append(Q,[C|R],M), \+member(-_,C),
 append(Q,R,S), prove([!],[[-!|C]|S],[],I).
prove([],_,_,_).
prove([L|C],M,P,I) :- (-N=L; -L=N) -> (member(N,P);
 append(Q,[D|R],M), copy_term(D,E), append(A,[N|B],E),
 append(A,B,F), (D==E -> append(R,Q,S); length(P,K), K<I,
 append(R,[D|Q],S)), prove(F,S,[L|P],I)), prove(C,M,P,I).

The leanCOP website has more readable versions, with more features. You'll have to implement equality and arithmetic yourself.

烟柳画桥 2024-12-06 16:11:40

您可以使用约束逻辑编程来解决您的问题。平等
直接给你一个结果(例如 GNU Prolog):

?- X*X #= 4.
X = 2

对于不等式,你通常需要要求系统生成
设置约束后的实例化。这通常是
通过标签指令完成(例如 GNU Prolog):

?- 27 * (X + 2) #\= (9 * X) + 18.
X = _#22(0..14913080)
?- 27 * (X + 2) #\= (9 * X) + 18, fd_labeling(X).
X = 0 ? ;
X = 1 ? ;
X = 2 ? ;
Etc..

可以在此处找到显示哪些 prolog 具有哪种 CLP 的列表。只是
检查 CLP 多列。

Prolog 系统概述,Ulrich Neumerkel

再见

You could use constraint logic programming for your problem. Equality
gives you directly a result (example GNU Prolog):

?- X*X #= 4.
X = 2

For inequality you will typically need to ask the system to generate
instanciations after the constraints have been set up. This is typically
done via a labeling directive (example GNU Prolog):

?- 27 * (X + 2) #\= (9 * X) + 18.
X = _#22(0..14913080)
?- 27 * (X + 2) #\= (9 * X) + 18, fd_labeling(X).
X = 0 ? ;
X = 1 ? ;
X = 2 ? ;
Etc..

A list that shows which prologs do have which kind of CLP can be found here. Just
check the CLP multi column.

Overview of Prolog Systems, Ulrich Neumerkel

Bye

兰花执着 2024-12-06 16:11:40

我在 中找到了一些同义反复检查器Ben-Ari、Mordechai 的《计算机科学数学逻辑》,不幸的是,它们涵盖了布尔逻辑。他的优点是在 Prolog 中实现,并提出了与自动证明或求解此类方程(或自动验证证明)相关的各种方法。

I've found some tautology checkers, in Mathematical Logic for Computer Science by Ben-Ari, Mordechai, unfortunately they cover boolean logic. What advantage, his implementations are in Prolog, and present a variety of approaches related with automated proving, or solving such equations (or, automatically verifying proofs).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文