false_or_by_contra
tactic #
Changes the goal to False
, retaining as much information as possible:
- If the goal is
False
, do nothing. - If the goal is an implication or a function type, introduce the argument and restart.
(In particular, if the goal is
x ≠ y
, introducex = y
.) - Otherwise, for a propositional goal
P
, replace it with¬ ¬ P
(attempting to find aDecidable
instance, but otherwise falling back to working classically) and introduce¬ P
. - For a non-propositional goal use
False.elim
.
Changes the goal to False
, retaining as much information as possible:
- If the goal is
False
, do nothing. - If the goal is an implication or a function type, introduce the argument and restart.
(In particular, if the goal is
x ≠ y
, introducex = y
.) - Otherwise, for a propositional goal
P
, replace it with¬ ¬ P
(attempting to find aDecidable
instance, but otherwise falling back to working classically) and introduce¬ P
. - For a non-propositional goal use
False.elim
.