feat(library/logic/axioms/prop_complete): add by_cases, by_contradiction
This commit is contained in:
parent
003a2c1e2c
commit
5ef510f290
2 changed files with 12 additions and 7 deletions
|
@ -5,9 +5,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Module: logic.axioms.classical
|
||||
Author: Leonardo de Moura
|
||||
-/
|
||||
|
||||
import logic.connectives logic.quantifiers logic.cast algebra.relation
|
||||
|
||||
open eq.ops
|
||||
|
||||
axiom prop_complete (a : Prop) : a = true ∨ a = false
|
||||
|
@ -28,6 +26,16 @@ or.elim (prop_complete a)
|
|||
(assume Ht : a = true, or.inl (of_eq_true Ht))
|
||||
(assume Hf : a = false, or.inr (not_of_eq_false Hf))
|
||||
|
||||
-- this supercedes by_cases in decidable
|
||||
definition by_cases {p q : Prop} (Hpq : p → q) (Hnpq : ¬p → q) : q :=
|
||||
or.elim (em p) (assume Hp, Hpq Hp) (assume Hnp, Hnpq Hnp)
|
||||
|
||||
-- this supercedes by_contradiction in decidable
|
||||
theorem by_contradiction {p : Prop} (H : ¬p → false) : p :=
|
||||
by_cases
|
||||
(assume H1 : p, H1)
|
||||
(assume H1 : ¬p, false.rec _ (H H1))
|
||||
|
||||
theorem eq_false_or_eq_true (a : Prop) : a = false ∨ a = true :=
|
||||
cases (λ x, x = false ∨ x = true)
|
||||
(or.inr rfl)
|
||||
|
|
|
@ -8,9 +8,7 @@ Authors: Jeremy Avigad, Leonardo de Moura
|
|||
Useful logical identities. Since we are not using propositional extensionality, some of the
|
||||
calculations use the type class support provided by logic.instances.
|
||||
-/
|
||||
|
||||
import logic.connectives logic.instances logic.quantifiers logic.cast
|
||||
|
||||
open relation decidable relation.iff_ops
|
||||
|
||||
theorem or.right_comm (a b c : Prop) : (a ∨ b) ∨ c ↔ (a ∨ c) ∨ b :=
|
||||
|
@ -37,7 +35,6 @@ calc
|
|||
... ↔ (b ∧ a) ∧ c : {and.comm}
|
||||
... ↔ b ∧ (a ∧ c) : and.assoc
|
||||
|
||||
|
||||
theorem not_not_iff {a : Prop} [D : decidable a] : (¬¬a) ↔ a :=
|
||||
iff.intro
|
||||
(assume H : ¬¬a,
|
||||
|
|
Loading…
Add table
Reference in a new issue