COND_REWR_CANON transforms a theorem into a form accepted by COND_REWR_TAC.
The input theorem should be an implication of the following form
!x1 ... xn. P1[xi] ==> ... ==> !y1 ... ym. Pr[xi,yi] ==>
(!z1 ... zk. u[xi,yi,zi] = v[xi,yi,zi])
where each antecedent Pi itself may be a conjunction or
disjunction. The output theorem will have all universal quantifications
moved to the outer most level with possible renaming to prevent
variable capture, and have all antecedents which are a conjunction
transformed to implications. The output theorem will be in the
following form
!x1 ... xn y1 ... ym z1 ... zk.
P11[xi] ==> ... ==> P1p[xi] ==> ... ==>
Pr1[xi,yi] ==> ... ==> Prq[x1,yi] ==> (u[xi,yi,zi] = v[xi,yi,zi])