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