INST_TYPE : (hol_type,hol_type) subst -> thm -> thm
A |- t
----------------------------------- INST_TYPE[vty1|->ty1,..., vtyn|->tyn]
A |- t[ty1,...,tyn/vty1,...,vtyn]
where none of the types vtyi are free in the assumption list.
Variables will be renamed if necessary to prevent distinct variables becoming
identical after the instantiation.
- SPECL [``a:num``, ``b:num``] EQ_SYM_EQ; uncaught exception HOL_ERRThe failure occurred because EQ_SYM_EQ contains polymorphic types. The desired specialization can be obtained by using INST_TYPE:
- load "numTheory";
> val it = () : unit
- SPECL [(--`a:num`--), (--`b:num`--)]
(INST_TYPE [``:'a`` |-> ``:num``] EQ_SYM_EQ);
> val it = |- (a = b) = (b = a) : thm