有人看过SATCHMO定理证明器的一个好的开源Prolog实现吗?

有人看过SATCHMO定理证明器的一个好的开源Prolog实现吗?,prolog,theorem-proving,Prolog,Theorem Proving,我已经看过很多关于SATCHMO定理证明器的论文,它们讨论了Prolog的实现。但到目前为止,我发现的唯一一个源代码实现是在一本书中,它实际上是有限的,仅用于给出一个如何评估和触发规则的示例。有人看过Prolog中SATCHMO的开源实现吗 注意,我不是指Django的Python语言工具Satchmo,这就是为什么我没有将Satchmo包含在标签中,因为堆栈溢出显示为该标签的主要定义。一个月前,当我把为硕士论文收集的所有论文扔进垃圾箱时,不知怎的,我知道有一天我会后悔的。因为我的论文是关于用约

我已经看过很多关于SATCHMO定理证明器的论文,它们讨论了Prolog的实现。但到目前为止,我发现的唯一一个源代码实现是在一本书中,它实际上是有限的,仅用于给出一个如何评估和触发规则的示例。有人看过Prolog中SATCHMO的开源实现吗


注意,我不是指Django的Python语言工具Satchmo,这就是为什么我没有将Satchmo包含在标签中,因为堆栈溢出显示为该标签的主要定义。

一个月前,当我把为硕士论文收集的所有论文扔进垃圾箱时,不知怎的,我知道有一天我会后悔的。因为我的论文是关于用约束扩展SATCHMO的,所以有一些关于SATCHMO的论文展示了不同的实现

无论如何,一个很好的起点是:。其中一位教授Francois Bry是SATCHMO的开发者之一,他的团队在不同方向上进行了大量的扩展工作。请看一下编译SATCHMO。PMS研究所的人员应该能够澄清您是否可以将代码用于非学术性工作。对于学术工作来说,应该没有问题


有关SATCHMO的所有内容的概述(虽然已经有几年了),您可以使用以下参考书目:

关于SATCHMO的第一篇论文(也在上面提到的“主题变体”中列出)是

Rainer Manthey和François Bry。SATCHMO:用Prolog实现的定理证明程序。《第九届自动扣减国际会议记录》,第415-434页。斯普林格·维拉格,1988年

本文介绍了几种Satchmo的Prolog实现,并讨论了它们的优点。并举例说明。下面是一个Satchmo版本,我用它作为我的reasoner竞赛的起点,以尝试控制英语:

:- op(1200, xfx, '--->').
:- unknown(_, fail).

satisfiable :-
  setof(Clause, violated_instance(Clause), Clauses),
  !,
  satisfy_all(Clauses),
  satisfiable.
satisfiable.

violated_instance((B ---> H)) :-
  (B ---> H),
  B,
  \+ H.

satisfy_all([]).

satisfy_all([(_B ---> H) | RestClauses]) :-
  H,
  !,
  satisfy_all(RestClauses).
satisfy_all([(_B ---> H) | RestClauses]) :-
  satisfy(H),
  satisfy_all(RestClauses).

/*
satisfy((A,B)) :-
  !,
  satisfy(A),
  satisfy(B).  
*/

satisfy((A;B)) :-
  !,
  (satisfy(A) ; satisfy(B)).  

satisfy(Atom) :-
  \+ Atom = untrue,
  (
    predicate_property(Atom, built_in)
    ->
    call(Atom)
  ;
    assume(Atom)
  ).

assume(Atom) :-
%  nl, write(['Asserting  ': Atom]),
  asserta(Atom).

assume(Atom) :-
%  nl, write(['Retracting ': Atom]),
  retract(Atom),
  !,
  fail.         

另一篇漂亮的Lean Theorum Prover论文,有12行神奇的序言,提供了一个名为LeanTAP的SATCHMO替代方案:Beckert/Posegga: