Specializes the conclusion of a theorem with its own quantified variables.
DESCRIBE
When applied to a theorem A |- !x1...xn. t, the inference rule SPEC_ALL
returns the theorem A |- t[x1'/x1]...[xn'/xn] where the xi' are distinct
variants of the corresponding xi, chosen to avoid clashes with any variables
free in the assumption list and with the names of constants. Normally xi' is
just xi, in which case SPEC_ALL simply removes all universal quantifiers.
A |- !x1...xn. t
--------------------------- SPEC_ALL
A |- t[x1'/x1]...[xn'/xn]
FAILURE
Never fails.
EXAMPLE
The following example shows how variables are also renamed to avoid clashing
with the names of constants.
#let v=mk_var(`T`,":bool") in ASSUME "!^v. ^v \/ ~^v";;
!T. T \/ ~T |- !T. T \/ ~T
#SPEC_ALL it;;
!T. T \/ ~T |- T' \/ ~T'