PEXISTS : term * term -> thm -> thm)
STRUCTURE
LIBRARY
pair
SYNOPSIS
Introduces paired existential quantification given a particular witness.
DESCRIPTION
When applied to a pair of terms and a theorem, where the first term a paired existentially quantified pattern indicating the desired form of the result, and the second a witness whose substitution for the quantified pair gives a term which is the same as the conclusion of the theorem, PEXISTS gives the desired theorem.
    A |- t[q/p]
   -------------  EXISTS ("?p. t","q")
    A |- ?p. t

FAILURE
Fails unless the substituted pattern is the same as the conclusion of the theorem.
EXAMPLE
The following examples illustrate the various uses of PEXISTS:
   - PEXISTS (Term`?x. x + 2 = x + 2`, Term`1`) (REFL (Term`1 + 2`));
   > val it = |- ?x. x + 2 = x + 2 : thm

   - PEXISTS (Term`?y. 1 + y = 1 + y`, Term`2`) (REFL (Term`1 + 2`));
   > val it = |- ?y. 1 + y = 1 + y : thm

   - PEXISTS (Term`?(x,y). x + y = x + y`, Term`(1,2)`) (REFL (Term`1 + 2`));
   > val it = |- ?(x,y). x + y = x + y : thm

   - PEXISTS (Term`?(a:'a,b:'a). (a,b) = (a,b)`, Term`ab:'a#'a`) 
             (REFL (Term `ab:'a#'a`));
   > val it = |- ?(a,b). (a,b) = (a,b) : thm

SEEALSO
HOL  Kananaskis-10