Equations
- Classical.choose h = (Classical.indefiniteDescription p h).val
Diaconescu's theorem: excluded middle from choice, Function extensionality and propositional extensionality.
Equations
- Classical.inhabited_of_nonempty h = { default := Classical.choice h }
Equations
Equations
- Classical.propDecidable a = Classical.choice (_ : Nonempty (Decidable a))
Equations
- Classical.decidableInhabited a = { default := inferInstance }
Equations
- Classical.typeDecidableEq α x x = inferInstance
Equations
- Classical.typeDecidable α = match Classical.propDecidable (Nonempty α) with | isTrue hp => PSum.inl default | isFalse hn => PSum.inr (_ : α → False)
the Hilbert epsilon Function
Equations
- Classical.epsilon p = (Classical.strongIndefiniteDescription p h).val
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.axiomOfChoice
{α : Sort u}
{β : α → Sort v}
{r : (x : α) → β x → Prop}
(h : ∀ (x : α), ∃ y, r x y)
:
∃ f, (x : α) → r x (f x)
the axiom of choice
theorem
Classical.skolem
{α : Sort u}
{b : α → Sort v}
{p : (x : α) → b x → Prop}
:
(∀ (x : α), ∃ y, p x y) ↔ ∃ f, (x : α) → p x (f x)
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.