Classical reasoning support #
noncomputable def
Classical.indefiniteDescription
{α : Sort u}
(p : α → Prop)
(h : ∃ (x : α), p x)
:
{ x : α // p x }
Equations
- Classical.indefiniteDescription p h = Classical.choice (_ : Nonempty { x : α // p x })
Instances For
Equations
- Classical.choose h = (Classical.indefiniteDescription p h).val
Instances For
theorem
Classical.choose_spec
{α : Sort u}
{p : α → Prop}
(h : ∃ (x : α), p x)
:
p (Classical.choose h)
Diaconescu's theorem: excluded middle from choice, Function extensionality and propositional extensionality.
Equations
- Classical.inhabited_of_nonempty h = { default := Classical.choice h }
Instances For
Equations
Instances For
All propositions are Decidable
.
Equations
- Classical.propDecidable a = Classical.choice (_ : Nonempty (Decidable a))
Instances For
Equations
- Classical.decidableInhabited a = { default := inferInstance }
Instances For
Equations
- Classical.typeDecidableEq α x✝ x = inferInstance
Instances For
Equations
- Classical.typeDecidable α = match Classical.propDecidable (Nonempty α) with | isTrue hp => PSum.inl default | isFalse hn => PSum.inr (_ : α → False)
Instances For
noncomputable def
Classical.strongIndefiniteDescription
{α : Sort u}
(p : α → Prop)
(h : Nonempty α)
:
{ x : α // (∃ (y : α), p y) → p x }
Equations
- One or more equations did not get rendered due to their size.
Instances For
the Hilbert epsilon Function
Equations
- Classical.epsilon p = (Classical.strongIndefiniteDescription p h).val
Instances For
theorem
Classical.epsilon_spec_aux
{α : Sort u}
(h : Nonempty α)
(p : α → Prop)
:
(∃ (y : α), p y) → p (Classical.epsilon p)
theorem
Classical.epsilon_spec
{α : Sort u}
{p : α → Prop}
(hex : ∃ (y : α), p y)
:
p (Classical.epsilon p)
theorem
Classical.epsilon_singleton
{α : Sort u}
(x : α)
:
(Classical.epsilon fun (y : α) => y = x) = x
theorem
Classical.axiomOfChoice
{α : Sort u}
{β : α → Sort v}
{r : (x : α) → β x → Prop}
(h : ∀ (x : α), ∃ (y : β x), r x y)
:
∃ (f : (x : α) → β x), ∀ (x : α), r x (f x)
the axiom of choice
by_cases (h :)? p
splits the main goal into two cases, assuming h : p
in the first branch, and h : ¬ p
in the second branch.
Equations
- One or more equations did not get rendered due to their size.