检查公式是否是角项

时间:2016-12-16 11:16:33

标签: prolog

我在prolog中用运算符〜(not),v(或)和^(和)创建了一个程序。如何检查公式是否为角项?

例如:

?- hclause((A ^ ~B) v (~A ^ C))
true.

提前致谢!

1 个答案:

答案 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))