Suppose you happen to know that $P is true if and only if $Q is true. You can write a pair of integrity constraints to enforce this:
:- $P, not $Q.
:- $Q, not $P.
However, sometimes $P and $Q are fairly long expressions; e.g., :- truth(martin, 2), house_assign(turner, H1), animal_assign(P2, whales), house_assign(P2, H2), not opposite(H1, H2). and it would be preferable to only have to write them once. Is there a way to concisely specify this in clingo?
(Related: Q4 in https://stackoverflow.com/a/28319815/23845 ; the suggestion there is explicitly represent the truthiness of P/Q in the predicate, so you can do a comparison on it. Is this really the only way?)