<div dir="ltr"><div>Thank you, Professor Fuchs, for such detailed explanation. It helps me a lot.<br><br></div>-- Tany<br><div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, May 13, 2015 at 6:24 AM, Norbert E. Fuchs <span dir="ltr"><<a href="mailto:fuchs@ifi.uzh.ch" target="_blank">fuchs@ifi.uzh.ch</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class=""><br>
> On 13 May 2015, at 4:36 , Tiantian Gao <<a href="mailto:gao.tany@gmail.com">gao.tany@gmail.com</a>> wrote:<br>
><br>
> Satchmo theorem prover is coded in Prolog. I am curious where I can get its open source code for Satchmo? BTW, which version of Satchmo RACE reasoner is based on to conduct reasoning?<br>
<br>
</span>Hi Tiantian Gao<br>
<br>
I am the author of RACE.<br>
<br>
Currently I am about to make RACE shipshape, i.e. cleaning the code, updating the documentation, and collecting and organising the many text cases, before I will submit it to GitHub with a GNU Lesser General Public License.<br>
<br>
I do not quite understand your question<br>
<span class=""><br>
> which version of Satchmo RACE reasoner is based on to conduct reasoning?<br>
<br>
<br>
</span>Do you mean the version of Prolog in which RACE is coded? If yes, I am currently using the latest stable version of SWI Prolog, i.e. the Unix version 6.4.1, respectively the Mac application version 6.6.6. But RACE should run with most other versions of SWI Prolog. If you mean which version of the original Satchmo RACE is based on, I cannot give you a concrete answer. I based RACE many years ago on the following version of the original Satchmo<br>
<br>
> satisfiable :-<br>
>   setof(Clause, violated_instance(Clause), Clauses),<br>
>   !,<br>
>   satisfy_all(Clauses),<br>
>   satisfiable.<br>
><br>
> satisfiable.<br>
><br>
><br>
> violated_instance((satchmo_clause(B,H))) :-<br>
>   satchmo_clause(B,H),<br>
>   B,<br>
>   \+ H.<br>
><br>
><br>
> satisfy_all([]).<br>
><br>
> satisfy_all([(satchmo_clause(_B,H)) | RestClauses]) :-<br>
>   H,<br>
>   !,<br>
>   satisfy_all(RestClauses).<br>
> satisfy_all([satchmo_clause(_B,H) | RestClauses]) :-<br>
>   satisfy(H),<br>
>   satisfy_all(RestClauses).<br>
><br>
> /*<br>
> satisfy((A,B)) :-<br>
>   !,<br>
>   satisfy(A),<br>
>   satisfy(B).<br>
> */<br>
><br>
> satisfy((A;B)) :-<br>
>   !,<br>
>   (satisfy(A) ; satisfy(B)).<br>
><br>
> satisfy(Atom) :-<br>
>   \+ Atom = fail,<br>
>   (<br>
>     predicate_property(Atom, built_in)<br>
>     -><br>
>     call(Atom)<br>
>   ;<br>
>     assume(Atom)<br>
>   ).<br>
><br>
><br>
> assume(Atom) :-<br>
>   nl, write(['Asserting  ': Atom]),<br>
>   asserta(Atom).<br>
><br>
> assume(Atom) :-<br>
>   nl, write(['Retracting ': Atom]),<br>
>   retract(Atom),<br>
>   !,<br>
>   fail.<br>
<br>
but have since strongly modified and expanded RACE's code – keeping only the basic idea of forward reasoning with clauses/rules – as you can see from the size of the respective programs. While the original Satchmo consists of some 20 lines, RACE consists of 9 modules with altogether 350k, not counting the ACE parsing engine APE that translates ACE axioms and theorems into the logic form of discourse representation structures.<br>
<br>
Let me know if you have further questions. I am also interested to learn about your experience with the web-interface of RACE – which by the way is always up to date.<br>
<br>
Regards.<br>
<span class="HOEnZb"><font color="#888888"><br>
Norbert E. Fuchs<br>
Department of Informatics & Institute of Computational Linguistics<br>
University of Zurich<br>
<br>
<br>
<br>
<br>
</font></span></blockquote></div><br></div></div></div>