SUBST_OCCS_TAC : (int list * thm) list -> tactic
A ?- t ============================= SUBST_OCCS_TAC [(l1,A1|-t1=u1),..., A ?- t[u1,...,un/t1,...,tn] (ln,An|-tn=un)]
SUBST_OCCS_TAC automatically renames bound variables to prevent free variables in ui becoming bound after substitution.
?- (m + n) + (n + m) = (m + n) + (m + n)
SUBST_OCCS_TAC [([3], SPECL [Term `m:num`, Term `n:num`] arithmeticTheory.ADD_SYM)]
?- (m + n) + (n + m) = (m + n) + (n + m)