小编Mas*_*5MX的帖子

Prolog中如何判断两个命题公式是否等价?

我是 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 真的很陌生。

谁能帮我写一个函数来检查公式是否是同义反复?

提前致谢...

logic boolean-logic prolog propositional-calculus

2
推荐指数
1
解决办法
361
查看次数