Prove equivalence under idempotence, symmetry and associativity of conjunction.
DESCRIBE
CONJUNCTS_CONV takes a pair of terms "t1" and "t2", and proves
|- t1 = t2 if t1 and t2 are equivalent up to idempotence, symmetry and
associativity of conjunction. That is, if t1 and t2 are two (different)
arbitrarily-nested conjunctions of the same set of terms, then
CONJUNCTS_CONV (t1,t2) returns |- t1 = t2. Otherwise, it fails.
FAILURE
Fails if t1 and t2 are not equivalent, as described above.
EXAMPLE
#CONJUNCTS_CONV ("(P /\ Q) /\ R", "R /\ (Q /\ R) /\ P");;
|- (P /\ Q) /\ R = R /\ (Q /\ R) /\ P
USES
Used to reorder a conjunction. First sort the conjuncts in a term
t1 into the desired order (e.g. lexicographic order, for
normalization) to get a new term t2, then call
CONJUNCTS_CONV(t1,t2).
COMMENTS
This is not a true conversion, so perhaps it ought to be called
something else.