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.
(If the goal is x ≠ y
, introduce x = y
.)
Otherwise, for a goal P
, replace it with ¬ ¬ P
and introduce ¬ P
.
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
, introduce x = y
.)
Otherwise, for a propositional goal P
, replace it with ¬ ¬ P
(attempt to find a Decidable
instance, but otherwise falling back to working classically)
and introduce ¬ P
.
For a non-propositional goal use False.elim
.
Equations
- false_or_by_contra = Lean.ParserDescr.node `false_or_by_contra 1024 (Lean.ParserDescr.nonReservedSymbol "false_or_by_contra" false)
Instances For
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
, introduce x = y
.)
Otherwise, for a propositional goal P
, replace it with ¬ ¬ P
(attempt to find a Decidable
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
, introduce x = y
.)
Otherwise, for a propositional goal P
, replace it with ¬ ¬ P
(attempt to find a Decidable
instance, but otherwise falling back to working classically)
and introduce ¬ P
.
For a non-propositional goal use False.elim
.
Equations
- tacticFalse_or_by_contra = Lean.ParserDescr.node `tacticFalse_or_by_contra 1024 (Lean.ParserDescr.nonReservedSymbol "false_or_by_contra" false)