假设你碰巧知道这$P
是真的当且仅当$Q
它是真的。您可以编写一对完整性约束来强制执行此操作:
:- $P, not $Q.
:- $Q, not $P.
但是,有时$P
和$Q
是相当长的表达式;例如,:- truth(martin, 2), house_assign(turner, H1), animal_assign(P2, whales), house_assign(P2, H2), not opposite(H1, H2).
最好只写一次。有没有办法在 clgo 中简洁地指定这个?
(相关:https ://stackoverflow.com/a/28319815/23845 中的 Q4 ;那里的建议明确表示谓词中 P/Q 的真实性,因此您可以对其进行比较。这真的是唯一的方法吗?)