EXISTS_EQUATION : term -> thm -> thm
- SYNOPSIS
-
Derives existence from explicit equational constraint.
- DESCRIPTION
-
Given a term `x = t` where x does not occur free in t, and a
theorem A |- p[x], the rule EXISTS_EQUATION returns
A - {x = t} |- ?x. p[x]. Normally, the equation x = t is one of the
hypotheses of the theorem, so this rule allows one to derive an existence
assertion ignoring the actual ``definition''.
- FAILURE CONDITIONS
-
Fails if the term is not an equation, if the LHS is not a variable, or if the
variable occurs free in the RHS.
- EXAMPLE
-
# let th = (UNDISCH o EQT_ELIM o SIMP_CONV[ARITH])
`x = 3 ==> ODD(x) /\ x > 2`;;
val th : thm = x = 3 |- ODD x /\ x > 2
# EXISTS_EQUATION `x = 3` th;;
val it : thm = |- ?x. ODD x /\ x > 2
Note that it is not obligatory for the term to be an assumption:
# EXISTS_EQUATION `x = 1` (REFL `x:num`);;
val it : thm = |- ?x. x = x
- SEE ALSO
-
EXISTS, SIMPLE_EXISTS.