PROVE_HYP : thm -> thm -> thm
- SYNOPSIS
-
Eliminates a provable assumption from a theorem.
- DESCRIPTION
-
When applied to two theorems, PROVE_HYP gives a new theorem with the
conclusion of the second and the union of the assumption list minus the
conclusion of the first theorem.
A1 |- t1 A2 |- t2
------------------------- PROVE_HYP
A1 u (A2 - {t1}) |- t2
If t1 does not occurr in A2 then the function simply returns the second
theorem A2 |- t2 unchanged without including the assumptions A1.
- FAILURE CONDITIONS
-
Never fails.
- EXAMPLE
-
# let th1 = CONJUNCT2(ASSUME `p /\ q /\ r`)
and th2 = CONJUNCT2(ASSUME `q /\ r`);;
val th1 : thm = p /\ q /\ r |- q /\ r
val th2 : thm = q /\ r |- r
# PROVE_HYP th1 th2;;
val it : thm = p /\ q /\ r |- r
- COMMENTS
-
This is sometimes known as the Cut rule. Although it is not necessary for the
conclusion of the first theorem to be the same as an assumption of the second,
PROVE_HYP is otherwise of doubtful value.
- SEE ALSO
-
DEDUCT_ANTISYM_RULE, DISCH, MP, UNDISCH.