Countable and uncountable types #
In this file we define a typeclass Countable saying that a given Sort* is countable
and a typeclass Uncountable saying that a given Type* is uncountable.
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 these typeclasses. More instances can be found in other files.
Definition and basic properties #
theorem Function.Surjective.countable {α : Sort u} {β : Sort v} [Countable α] {f : α → β} (hf : Surjective f) :
Operations on Sort*s #
Uncountable types #
theorem Function.Injective.uncountable {α : Sort u} {β : Sort v} [Uncountable α] {f : α → β} (hf : Injective f) :
theorem Function.Surjective.uncountable {α : Sort u} {β : Sort v} [Uncountable β] {f : α → β} (hf : Surjective f) :
theorem not_injective_uncountable_countable {α : Sort u} {β : Sort v} [Uncountable α] [Countable β] (f : α → β) :
theorem not_surjective_countable_uncountable {α : Sort u} {β : Sort v} [Countable α] [Uncountable β] (f : α → β) :