Classical reasoning support #
noncomputable def
Classical.indefiniteDescription
{α : Sort u}
(p : α → Prop)
(h : ∃ (x : α), p x)
:
{ x : α // p x }
Instances For
Given that there exists an element satisfying p
, returns one such element.
This is a straightforward consequence of, and equivalent to, Classical.choice
.
See also choose_spec
, which asserts that the returned value has property p
.
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.
Instances For
Instances For
All propositions are Decidable
.
Instances For
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 ⋯
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
Transfer decidability of ¬ p
to decidability of p
.
Equations
Instances For
Show that an element extracted from P : ∃ a, p a
using P.choose
satisfies p
.