我在prolog中用运算符〜(not),v(或)和^(和)创建了一个程序。如何检查公式是否为角项?
例如:
?- hclause((A ^ ~B) v (~A ^ C))
true.
提前致谢!
答案 0 :(得分:3)
不确定但是......如果您将^
和v
定义为二元运算符,将~
定义为一元运算符,例如
:- op(400, fx, ~).
:- op(500, xfy, ^).
:- op(600, xfy, v).
检查正确的公式应该是自动的(否则会给出错误)。
记住操作员定义仅为"句法糖"例如,A ^ B
是^(A, B)
的替代版本。
如果您想查看(A ^ ~B) v (~A ^ C)
的真实含义(v
,^
和~
的定义),您可以使用write_canonical/1
,所以
write_canonical((A ^ ~B) v (~A ^ C)),
我获得了
v(^(_4,~(_7)),^(~(_4),_15))