PSPECPairRules.PSPEC : (term -> thm -> thm)
Specializes the conclusion of a theorem.
When applied to a term q and a theorem
A |- !p. t, then PSPEC returns the theorem
A |- t[q/p]. If necessary, variables will be renamed prior
to the specialization to ensure that q is free for
p in t, that is, no variables free in
q become bound after substitution.
A |- !p. t
-------------- PSPEC "q"
A |- t[q/p]
Fails if the theorem’s conclusion is not a paired universal
quantification, or if p and q have different
types.
PSPEC specialised paired quantifications.
- PSPEC (Term `(1,2)`) (ASSUME (Term`!(x,y). (x + y) = (y + x)`));
> val it = [.] |- 1 + 2 = 2 + 1 : thm
PSPEC treats paired structures of variables as variables
and preserves structure accordingly.
- PSPEC (Term `x:'a#'a`) (ASSUME (Term `!(x:'a,y:'a). (x,y) = (x,y)`));
> val it = [.] |- x = x : thm
Thm.SPEC, PairRules.IPSPEC, PairRules.PSPECL, PairRules.PSPEC_ALL, PairRules.PGEN, PairRules.PGENL