\DOC SPOSE_NOT_THEN \TYPE {SPOSE_NOT_THEN : (thm -> tactic) -> tactic} \SYNOPSIS

advertisement
\DOC SPOSE_NOT_THEN
\TYPE {SPOSE_NOT_THEN : (thm -> tactic) -> tactic}
\SYNOPSIS
Initiate proof by contradiction.
\KEYWORDS
contradiction.
\DESCRIBE
{SPOSE_NOT_THEN} provides a flexible way to start a proof by
contradiction.
Simple tactics for contradiction proofs often simply negate the goal and
place it on the assumption list. However, if the goal is quantified, as
is often the case, then more processing is required in order to get it
into a suitable form for subsequent work. {SPOSE_NOT_THEN ttac} negates
the current goal, pushes the negation inwards, and applies {ttac} to it.
\FAILURE
Never fails, unless {ttac} fails.
\EXAMPLE
Suppose we want to prove Euclid's theorem.
{
!m. ?n. prime n /\ m < n
}
The classic proof is by contradiction. However, if we start such a
proof with {CCONTR_TAC}, we get the goal
{
{ ~!m. ?n. prime n /\ m < n } ?- F
}
and one would immediately want to simplify the assumption, which is a
bit awkward. Instead, an invocation {SPOSE_NOT_THEN ASSUME_TAC} yields
{
{ ?m. !n. ~prime n \/ ~(m < n) } ?- F
}
and {SPOSE_NOT_THEN STRIP_ASSUME_TAC} results in
{
{ !n. ~prime n \/ ~(m < n) } ?- F
}
\SEEALSO
Tactic.CCONTR_TAC, Tactic.CONTR_TAC, Tactic.ASSUME_TAC,
Tactic.STRIP_ASSUME_TAC.
\ENDDOC
Download