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
#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
attribute [local instance] decidableInhabited
alias axiomOfChoice: ∀ {α : Sort u} {β : α → Sort v} {r : (x : α) → β x → Prop}, (∀ (x : α), ∃ y, r x y) → ∃ f, ∀ (x : α), r x (f x)
axiomOfChoice ← axiom_of_choice: ∀ {α : Sort u} {β : α → Sort v} {r : (x : α) → β x → Prop}, (∀ (x : α), ∃ y, r x y) → ∃ f, ∀ (x : α), r x (f x)
axiom_of_choice -- TODO: fix in core
alias propComplete ← prop_complete -- TODO: fix in core
@[elab_as_elim] theorem cases_true_false (p : Prop → Prop)
(h1 : p True) (h2 : p False) (a : Prop) : p a :=
Or.elim: ∀ {a b c : Prop}, a ∨ b → (a → c) → (b → c) → c
Or.elim (prop_complete a) (fun ht : a = True ↦ ht.symm: ∀ {α : Sort ?u.40} {a b : α}, a = b → b = a
symm ▸ h1) fun hf : a = False ↦ hf.symm: ∀ {α : Sort ?u.61} {a b : α}, a = b → b = a
symm ▸ h2
theorem cases_on (a : Prop) {p : Prop → Prop} (h1 : p True) (h2 : p False) : p a :=
@cases_true_false p h1 h2 a
theorem cases {p : Prop → Prop} (h1 : p True) (h2 : p False) (a) : p a := cases_on a h1 h2
#align classical.cases Classical.cases
alias byCases: ∀ {p q : Prop}, (p → q) → (¬p → q) → q
byCases ← by_cases: ∀ {p q : Prop}, (p → q) → (¬p → q) → q
by_cases
alias byContradiction ← by_contradiction
theorem eq_false_or_eq_true (a : Prop) : a = False ∨ a = True := (prop_complete a).symm: ∀ {a b : Prop}, a ∨ b → b ∨ a
symm
end Classical