ISPECL : term list -> thm -> thm

SYNOPSIS
Specializes a theorem zero or more times, with type instantiation if necessary.

DESCRIPTION
ISPECL is an iterative version of ISPEC
         A |- !x1...xn.t
   -----------------------------  ISPECL [`t1`,...,`tn`]
    A' |- t[t1,...tn/x1,...,xn]
(where ti is free for xi in tm) in which A' results from applying all the corresponding type instantiations to the assumption list A.

FAILURE CONDITIONS
ISPECL fails if the list of terms is longer than the number of quantified variables in the term, or if the type instantiation fails.

EXAMPLE
  # ISPECL [`x:num`; `2`] EQ_SYM_EQ;;
  val it : thm = |- x = 2 <=> 2 = x
Note that the corresponding call to SPECL would fail because of the type mismatch:
  # SPECL [`x:num`; `2`] EQ_SYM_EQ;;
  Exception: Failure "SPECL".

SEE ALSO
INST_TYPE, INST, ISPEC, SPEC, SPECL, type_match.