0
我在序言中用运算符〜(not),v(or)和^(and)创建了一个程序。我怎样才能检查一个公式是否是一个号角条款?检查一个公式是否是一个号角语句
例如:
?- hclause((A^~B) v (~A^C))
true.
提前感谢!
我在序言中用运算符〜(not),v(or)和^(and)创建了一个程序。我怎样才能检查一个公式是否是一个号角条款?检查一个公式是否是一个号角语句
例如:
?- hclause((A^~B) v (~A^C))
true.
提前感谢!
不知道理解,但...如果你定义^
和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))
可以在你的问题中,为你的Horn子句添加Backus-Naur形式?你想检查一个条款的公式或足够检查一个字符串中的公式(类似“hclause(”(A ^〜B)v(〜A^C)“)? – max66
一个公式,它应该能够检查每个子句 – zer0kai
对不起,但是......这并没有回答我的问题,你只需要检查'hclause(“(A ^〜B)v(〜A^C)”)的'hclause/',那里的公式是在一个字符串中?如果是这样,应该很简单(一种)。 – max66