\DOC AC_CONV \TYPE {AC_CONV : (thm * thm) -> conv} \SYNOPSIS Proves equality of terms using associative and commutative laws. \KEYWORDS conversion,associative, commutative. \DESCRIBE Suppose {_} is a function, which is assumed to be infix in the following syntax, and {ath} and {cth} are theorems expressing its associativity and commutativity; they must be of the following form, except that any free variables may have arbitrary names and may be universally quantified: { ath = |- m _ (n _ p) = (m _ n) _ p cth = |- m _ n = n _ m } Then the conversion {AC_CONV(ath,cth)} will prove equations whose left and right sides can be made identical using these associative and commutative laws. \FAILURE Fails if the associative or commutative law has an invalid form, or if the term is not an equation between AC-equivalent terms. \EXAMPLE Consider the terms {x + SUC t + ((3 + y) + z)} and {3 + SUC t + x + y + z}. {AC_CONV} proves them equal. { - AC_CONV(ADD_ASSOC,ADD_SYM) (Term `x + (SUC t) + ((3 + y) + z) = 3 + (SUC t) + x + y + z`); > val it = |- (x + ((SUC t) + ((3 + y) + z)) = 3 + ((SUC t) + (x + (y + z)))) = T } \COMMENTS Note that the preproved associative and commutative laws for the operators {+}, {*}, {/\} and {\/} are already in the right form to give to {AC_CONV}. \SEEALSO Conv.SYM_CONV. \ENDDOC