INST : (term,term) subst -> thm -> thm

SYNOPSIS
Instantiates free variables in a theorem.

DESCRIBE
INST is a rule for substituting arbitrary terms for free variables in a theorem:
             A |- t               INST [x1 |-> t1,...,xn |-> tn]
   -----------------------------
    A |- t[t1,...,tn/x1,...,xn]
where the variables x1, ..., xn are not free in the assumptions A.

FAILURE
INST fails if a variable being instantiated is free in the assumptions.

EXAMPLE
In the following example a theorem is instantiated for a specific term:
  
   - load"arithmeticTheory";

   - CONJUNCT1 arithmeticTheory.ADD_CLAUSES;
   |- 0 + m = m

   - INST [``m:num`` |-> ``2*x``] 
          (CONJUNCT1 arithmeticTheory.ADD_CLAUSES);

   val it = |- 0 + (2 * x) = 2 * x : thm

SEEALSO  INST_TY_TERM,   INST_TYPE,   ISPEC,   ISPECL,   SPEC,   SPECL,   SUBS,   subst,   SUBST

HOL  Kananaskis 0