feat(library/logic/classes/decidable): generalize 'by_cases' theorem
This commit is contained in:
parent
fa25ddc8e6
commit
35e68fea76
3 changed files with 5 additions and 7 deletions
|
@ -11,7 +11,7 @@ import logic data.num tools.tactic struc.binary tools.helper_tactics
|
|||
import logic.classes.inhabited
|
||||
|
||||
open tactic binary eq_ops
|
||||
open decidable (hiding induction_on rec_on)
|
||||
open decidable
|
||||
open relation -- for subst_iff
|
||||
open helper_tactics
|
||||
|
||||
|
@ -117,8 +117,7 @@ have general : ∀n, decidable (n = m), from
|
|||
take n, rec_on n
|
||||
(inr (ne.symm succ_ne_zero))
|
||||
(λ (n' : ℕ) (iH2 : decidable (n' = succ m')),
|
||||
have d1 : decidable (n' = m'), from iH1 n',
|
||||
decidable.rec_on d1
|
||||
decidable.by_cases
|
||||
(assume Heq : n' = m', inl (congr_arg succ Heq))
|
||||
(assume Hne : n' ≠ m',
|
||||
have H1 : succ n' ≠ succ m', from
|
||||
|
|
|
@ -241,8 +241,7 @@ have general : ∀n, decidable (n ≤ m), from
|
|||
rec_on n
|
||||
(decidable.inl zero_le)
|
||||
(take (n' : ℕ) (iH2 : decidable (n' ≤ succ m')),
|
||||
have d1 : decidable (n' ≤ m'), from iH1 n',
|
||||
decidable.rec_on d1
|
||||
decidable.by_cases
|
||||
(assume Hp : n' ≤ m', decidable.inl (succ_le Hp))
|
||||
(assume Hn : ¬ n' ≤ m',
|
||||
have H : ¬ succ n' ≤ succ m', from
|
||||
|
|
|
@ -38,8 +38,8 @@ decidable.rec
|
|||
theorem em (p : Prop) {H : decidable p} : p ∨ ¬p :=
|
||||
induction_on H (λ Hp, or.inl Hp) (λ Hnp, or.inr Hnp)
|
||||
|
||||
theorem by_cases {a b : Prop} {C : decidable a} (Hab : a → b) (Hnab : ¬a → b) : b :=
|
||||
or.elim (em a) (assume Ha, Hab Ha) (assume Hna, Hnab Hna)
|
||||
theorem by_cases {a : Prop} {b : Type} {C : decidable a} (Hab : a → b) (Hnab : ¬a → b) : b :=
|
||||
rec_on C (assume Ha, Hab Ha) (assume Hna, Hnab Hna)
|
||||
|
||||
theorem by_contradiction {p : Prop} {Hp : decidable p} (H : ¬p → false) : p :=
|
||||
or.elim (em p)
|
||||
|
|
Loading…
Add table
Reference in a new issue