SUBS : (thm list -> thm -> thm)
A1|-t1=v1 ... An|-tn=vn A|-t --------------------------------------------- SUBS[A1|-t1=v1;...;An|-tn=vn] A1 u ... u An u A |- t[v1,...,vn/t1,...,tn] (A|-t)No matching is involved; the occurrence of each ti being substituted for must be a free in t (see SUBST_MATCH). An occurrence which is not free can be substituted by using rewriting rules such as REWRITE_RULE, PURE_REWRITE_RULE and ONCE_REWRITE_RULE.
#let thm1 = SPECL ["m:num"; "n:num"] ADD_SYM #and thm2 = CONJUNCT1 ADD_CLAUSES;; thm1 = |- m + n = n + m thm2 = |- 0 + m = mdepending on the occurrence of free subterms
#SUBS [thm1; thm2] (ASSUME "(n + 0) + (0 + m) = m + n");; . |- (n + 0) + m = n + m #SUBS [thm1; thm2] (ASSUME "!n. (n + 0) + (0 + m) = m + n");; . |- !n. (n + 0) + m = m + n