\DOC PSTRIP_ASSUME_TAC \TYPE {PSTRIP_ASSUME_TAC : thm_tactic} \KEYWORDS

advertisement
\DOC PSTRIP_ASSUME_TAC
\TYPE {PSTRIP_ASSUME_TAC : thm_tactic}
\KEYWORDS
tactic.
\LIBRARY pair
\SYNOPSIS
Splits a theorem into a list of theorems and then adds them to the
assumptions.
\DESCRIBE
Given a theorem {th} and a goal {(A,t)}, {PSTRIP_ASSUME_TAC th} splits
{th} into
a list of theorems. This is done by recursively breaking conjunctions
into
separate conjuncts, cases-splitting disjunctions, and eliminating paired
existential quantifiers by choosing arbitrary variables. Schematically,
the following rules are applied:
{
A ?- t
====================== PSTRIP_ASSUME_TAC (A' |- v1 /\ ... /\ vn)
A u {{v1,...,vn}} ?- t
A ?- t
================================= PSTRIP_ASSUME_TAC (A' |- v1 \/ ...
\/ vn)
A u {{v1}} ?- t ... A u {{vn}} ?- t
A ?- t
==================== PSTRIP_ASSUME_TAC (A' |- ?p. v)
A u {{v[p'/p]}} ?- t
}
where {p'} is a variant of the pair {p}.
If the conclusion of {th} is not a conjunction, a disjunction or a paired
existentially quantified term, the whole theorem {th} is added to the
assumptions.
As assumptions are generated, they are examined to see if they solve the
goal
(either by being alpha-equivalent to the conclusion of the goal or by
deriving
a contradiction).
The assumptions of the theorem being split are not added to the
assumptions of
the goal(s), but they are recorded in the proof. This means that if {A'}
is
not a subset of the assumptions {A} of the goal (up to alpha-conversion),
{PSTRIP_ASSUME_TAC (A'|-v)} results in an invalid tactic.
\FAILURE
Never fails.
\USES
{PSTRIP_ASSUME_TAC} is used when applying a previously proved theorem to
solve
a goal, or when enriching its assumptions so that resolution,
rewriting with assumptions and other operations involving assumptions
have
more to work with.
\SEEALSO
PSTRIP_THM_THEN, ,PSTRIP_ASSUME_TAC, PSTRIP_GOAL_THEN, PSTRIP_TAC.
\ENDDOC
Download