Countable types #
In this file we define a typeclass saying that a given Sort*
is countable. See also Encodable
for a version that singles out a specific encoding of elements of α
by natural numbers.
This file also provides a few instances of this typeclass. More instances can be found in other files.
Definition and basic properties #
theorem
countable_iff_exists_injective
(α : Sort u)
:
Countable α ↔ ∃ (f : α → ℕ), Function.Injective f
theorem
Countable.exists_injective_nat
(α : Sort u)
[Countable α]
:
∃ (f : α → ℕ), Function.Injective f
theorem
Function.Injective.countable
{α : Sort u}
{β : Sort v}
[Countable β]
{f : α → β}
(hf : Function.Injective f)
:
theorem
Function.Surjective.countable
{α : Sort u}
{β : Sort v}
[Countable α]
{f : α → β}
(hf : Function.Surjective f)
:
theorem
exists_surjective_nat
(α : Sort u)
[Nonempty α]
[Countable α]
:
∃ (f : ℕ → α), Function.Surjective f
theorem
countable_iff_exists_surjective
{α : Sort u}
[Nonempty α]
:
Countable α ↔ ∃ (f : ℕ → α), Function.Surjective f
Equations
- (_ : Countable (ULift.{u, v} β)) = (_ : Countable (ULift.{u, v} β))