ASSOC_CONV : thm -> term -> thm

SYNOPSIS
Right-associates a term with respect to an associative binary operator.

DESCRIPTION
The conversion ASSOC_CONV expects a theorem asserting that a certain binary operator is associative, in the standard form (with optional universal quantifiers):
  x op (y op z) = (x op y) op z
It is then applied to a term, and will right-associate any toplevel combinations built up from the operator op. Note that if op is polymorphic, the type instance of the theorem needs to be the same as in the term to which it is applied.

FAILURE CONDITIONS
May fail if the theorem is malformed. On application to the term, it never fails, but returns a reflexive theorem when itis inapplicable.

EXAMPLE
  # ASSOC_CONV ADD_ASSOC `((1 + 2) + 3) + (4 + 5) + (6 + 7)`;;
  val it : thm = |- ((1 + 2) + 3) + (4 + 5) + 6 + 7 = 1 + 2 + 3 + 4 + 5 + 6 + 7

  # ASSOC_CONV CONJ_ASSOC `((p /\ q) /\ (r /\ s)) /\ t`;;
  val it : thm = |- ((p /\ q) /\ r /\ s) /\ t <=> p /\ q /\ r /\ s /\ t

SEE ALSO
AC, CNF_CONV, CONJ_ACI_RULE, DISJ_ACI_RULE, DNF_CONV.