我是 Prolog 新手,有一些疑问。
我需要编写一个函数 form_equiv(A,B) 来告诉我们 B 是否等于 A,其中 A 和 B 应该是命题。
我知道两个命题是等价的,如果
同义反复 (A 当且仅当 B) = TRUE
但是我怎样才能创建一个函数来检查公式何时是同义反复。
顺便说一句,我不能仅使用内置函数 AND、OR 和 NOT。
现在这是我到目前为止所拥有的:
and(P,Q) :- P, Q, !.
or(P,Q) :- (P; Q), !.
impl(P,Q) :- or(not(P),Q).
syss(P,Q) :- and(impl(P,Q),impl(Q,P)).
t.
f :- fail.
t(_).
f(_) :- fail.
:- op(400,xf,not).
:- op(500,xfx,and).
:- op(500,xfx,or).
:- op(600,xfx,impl).
:- op(700,xfx,syss).
Run Code Online (Sandbox Code Playgroud)
我在 Haskell 中完成了一个类似的程序,但我对 Prolog 真的很陌生。
谁能帮我写一个函数来检查公式是否是同义反复?
提前致谢...