FILTER_DISCH_THEN
Tactic.FILTER_DISCH_THEN : (thm_tactic -> term -> tactic)
Conditionally gives to a theorem-tactic the antecedent of an implicative goal.
If FILTER_DISCH_THEN
’s second argument, a term, does not
occur in the antecedent, then FILTER_DISCH_THEN
removes the
antecedent and then creates a theorem by ASSUME
ing it. This
new theorem is passed to FILTER_DISCH_THEN
’s first
argument, which is subsequently expanded. For example, if
A ?- t
======== f (ASSUME u)
B ?- v
then
A ?- u ==> t
============== FILTER_DISCH_THEN f
B ?- v
Note that FILTER_DISCH_THEN
treats ~u
as
u ==> F
.
FILTER_DISCH_THEN
will fail if a term which is
identical, or alpha-equivalent to w
occurs free in the
antecedent. FILTER_DISCH_THEN
will also fail if the theorem
is an implication or a negation.
FILTER_DISCH_THEN
is most easily understood by first
understanding DISCH_THEN
.
For preprocessing an antecedent before moving it to the assumptions, or for using antecedents and then throwing them away.
Thm.DISCH
, Drule.DISCH_ALL
, Tactic.DISCH_TAC
, Thm_cont.DISCH_THEN
, Tactic.FILTER_DISCH_TAC
,
Drule.NEG_DISCH
, Tactic.STRIP_TAC
, Drule.UNDISCH
, Drule.UNDISCH_ALL
, Tactic.UNDISCH_TAC