Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2015 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Leonardo de Moura, Jeremy Avigad, Mario Carneiro
-/
import Mathlib.Tactic.Alias
import Mathlib.Tactic.IrreducibleDef
import Mathlib.Mathport.Rename
import Mathlib.Init.Logic

/-! ### alignments from lean 3 `init.classical` -/

namespace Classical

#align classical.inhabited_of_nonempty 
Classical.inhabited_of_nonempty: {α : Sort u} → Nonempty αInhabited α
Classical.inhabited_of_nonempty
#align classical.inhabited_of_exists
Classical.inhabited_of_exists: {α : Sort u} → {p : αProp} → (x, p x) → Inhabited α
Classical.inhabited_of_exists
attribute [local instance]
propDecidable: (a : Prop) → Decidable a
propDecidable
attribute [local instance]
decidableInhabited: (a : Prop) → Inhabited (Decidable a)
decidableInhabited
alias
axiomOfChoice: ∀ {α : Sort u} {β : αSort v} {r : (x : α) → β xProp}, (∀ (x : α), y, r x y) → f, ∀ (x : α), r x (f x)
axiomOfChoice
axiom_of_choice: ∀ {α : Sort u} {β : αSort v} {r : (x : α) → β xProp}, (∀ (x : α), y, r x y) → f, ∀ (x : α), r x (f x)
axiom_of_choice
-- TODO: fix in core alias
propComplete: ∀ (a : Prop), a = True a = False
propComplete
prop_complete: ∀ (a : Prop), a = True a = False
prop_complete
-- TODO: fix in core @[elab_as_elim] theorem
cases_true_false: ∀ (p : PropProp), p Truep False∀ (a : Prop), p a
cases_true_false
(
p: PropProp
p
:
Prop: Type
Prop
Prop: Type
Prop
) (
h1: p True
h1
:
p: PropProp
p
True: Prop
True
) (
h2: p False
h2
:
p: PropProp
p
False: Prop
False
) (
a: Prop
a
:
Prop: Type
Prop
) :
p: PropProp
p
a: Prop
a
:=
Or.elim: ∀ {a b c : Prop}, a b(ac) → (bc) → c
Or.elim
(
prop_complete: ∀ (a : Prop), a = True a = False
prop_complete
a: Prop
a
) (fun
ht: a = True
ht
:
a: Prop
a
=
True: Prop
True
ht: a = True
ht
.
symm: ∀ {α : Sort ?u.40} {a b : α}, a = bb = a
symm
h1: p True
h1
) fun
hf: a = False
hf
:
a: Prop
a
=
False: Prop
False
hf: a = False
hf
.
symm: ∀ {α : Sort ?u.61} {a b : α}, a = bb = a
symm
h2: p False
h2
theorem
cases_on: ∀ (a : Prop) {p : PropProp}, p Truep Falsep a
cases_on
(
a: Prop
a
:
Prop: Type
Prop
) {
p: PropProp
p
:
Prop: Type
Prop
Prop: Type
Prop
} (
h1: p True
h1
:
p: PropProp
p
True: Prop
True
) (
h2: p False
h2
:
p: PropProp
p
False: Prop
False
) :
p: PropProp
p
a: Prop
a
:= @
cases_true_false: ∀ (p : PropProp), p Truep False∀ (a : Prop), p a
cases_true_false
p: PropProp
p
h1: p True
h1
h2: p False
h2
a: Prop
a
theorem
cases: ∀ {p : PropProp}, p Truep False∀ (a : Prop), p a
cases
{
p: PropProp
p
:
Prop: Type
Prop
Prop: Type
Prop
} (
h1: p True
h1
:
p: PropProp
p
True: Prop
True
) (
h2: p False
h2
:
p: PropProp
p
False: Prop
False
) (
a: Prop
a
) :
p: PropProp
p
a: ?m.128
a
:=
cases_on: ∀ (a : Prop) {p : PropProp}, p Truep Falsep a
cases_on
a: Prop
a
h1: p True
h1
h2: p False
h2
#align classical.cases
Classical.cases: ∀ {p : PropProp}, p Truep False∀ (a : Prop), p a
Classical.cases
alias
byCases: ∀ {p q : Prop}, (pq) → (¬pq) → q
byCases
by_cases: ∀ {p q : Prop}, (pq) → (¬pq) → q
by_cases
alias
byContradiction: ∀ {p : Prop}, (¬pFalse) → p
byContradiction
by_contradiction: ∀ {p : Prop}, (¬pFalse) → p
by_contradiction
theorem
eq_false_or_eq_true: ∀ (a : Prop), a = False a = True
eq_false_or_eq_true
(
a: Prop
a
:
Prop: Type
Prop
) :
a: Prop
a
=
False: Prop
False
a: Prop
a
=
True: Prop
True
:= (
prop_complete: ∀ (a : Prop), a = True a = False
prop_complete
a: Prop
a
).
symm: ∀ {a b : Prop}, a bb a
symm
end Classical