INSTThm.INST : (term,term) subst -> thm -> thm
Instantiates free variables in a theorem.
INST is a rule for substituting arbitrary terms for free
variables in a theorem.
A |- t INST [x1 |-> t1,...,xn |-> tn]
-----------------------------
A[t1,...,tn/x1,...,xn]
|-
t[t1,...,tn/x1,...,xn]
Fails if, for 1 <= i <= n, some xi is
not a variable, or if some xi has a different type than its
intended replacement ti.
In the following example a theorem is instantiated for a specific term:
- load"arithmeticTheory";
- CONJUNCT1 arithmeticTheory.ADD_CLAUSES;
> val it = |- 0 + m = m : thm
- INST [``m:num`` |-> ``2*x``]
(CONJUNCT1 arithmeticTheory.ADD_CLAUSES);
val it = |- 0 + (2 * x) = 2 * x : thm
Drule.INST_TY_TERM, Thm.INST_TYPE, Drule.ISPEC, Drule.ISPECL, Thm.SPEC, Drule.SPECL, Drule.SUBS, Term.subst, Thm.SUBST, Lib.|->