Documentation

Mathlib.Data.Set.Countable

Countable sets #

def Set.Countable {α : Type u} (s : Set α) :

A set is countable if there exists an encoding of the set into the natural numbers. An encoding is an injection with a partial inverse, which can be viewed as a constructive analogue of countability. (For the most part, theorems about Countable will be classical and Encodable will be constructive.)

Equations
@[simp]
theorem Set.countable_coe_iff {α : Type u} {s : Set α} :
theorem Set.to_countable {α : Type u} (s : Set α) [inst : Countable s] :

Prove Set.Countable from a Countable instance on the subtype.

theorem Set.Countable.to_subtype {α : Type u} {s : Set α} :

Restate Set.Countable as a Countable instance.

theorem Countable.to_set {α : Type u} {s : Set α} :

Restate Set.Countable as a Countable instance.

theorem Set.countable_iff_exists_injOn {α : Type u} {s : Set α} :

A set s : Set α is countable if and only if there exists a function α → ℕ→ ℕ injective on s.

def Set.Countable.toEncodable {α : Type u} {s : Set α} :

Convert Set.Countable s to Encodable s (noncomputable).

Equations
  • Set.Countable.toEncodable = Classical.choice
def Set.enumerateCountable {α : Type u} {s : Set α} (h : Set.Countable s) (default : α) :
α

Noncomputably enumerate elements in a set. The default value is used to extend the domain to all of .

Equations
theorem Set.subset_range_enumerate {α : Type u} {s : Set α} (h : Set.Countable s) (default : α) :
theorem Set.Countable.mono {α : Type u} {s₁ : Set α} {s₂ : Set α} (h : s₁ s₂) :
theorem Set.countable_range {β : Type v} {ι : Sort x} [inst : Countable ι] (f : ιβ) :

A non-empty set is countable iff there exists a surjection from the natural numbers onto the subtype induced by the set.

theorem Set.Countable.exists_surjective {α : Type u} {s : Set α} (hs : Set.Nonempty s) :

Alias of the forward direction of Set.countable_iff_exists_surjective.

theorem Set.countable_univ {α : Type u} [inst : Countable α] :
Set.Countable Set.univ
theorem Set.Countable.exists_eq_range {α : Type u} {s : Set α} (hc : Set.Countable s) (hs : Set.Nonempty s) :
f, s = Set.range f

If s : Set α is a nonempty countable set, then there exists a map f : ℕ → α→ α such that s = range f.

@[simp]
theorem Set.countable_singleton {α : Type u} (a : α) :
theorem Set.Countable.image {α : Type u} {β : Type v} {s : Set α} (hs : Set.Countable s) (f : αβ) :
theorem Set.MapsTo.countable_of_injOn {α : Type u} {β : Type v} {s : Set α} {t : Set β} {f : αβ} (hf : Set.MapsTo f s t) (hf' : Set.InjOn f s) (ht : Set.Countable t) :
theorem Set.Countable.preimage_of_injOn {α : Type u} {β : Type v} {s : Set β} (hs : Set.Countable s) {f : αβ} (hf : Set.InjOn f (f ⁻¹' s)) :
theorem Set.Countable.preimage {α : Type u} {β : Type v} {s : Set β} (hs : Set.Countable s) {f : αβ} (hf : Function.Injective f) :
theorem Set.exists_seq_supᵢ_eq_top_iff_countable {α : Type u} [inst : CompleteLattice α] {p : αProp} (h : x, p x) :
(s, ((n : ) → p (s n)) (n, s n) = ) S, Set.Countable S ((s : α) → s Sp s) supₛ S =
theorem Set.exists_seq_cover_iff_countable {α : Type u} {p : Set αProp} (h : s, p s) :
(s, ((n : ) → p (s n)) (Set.unionᵢ fun n => s n) = Set.univ) S, Set.Countable S ((s : Set α) → s Sp s) ⋃₀ S = Set.univ
theorem Set.countable_of_injective_of_countable_image {α : Type u} {β : Type v} {s : Set α} {f : αβ} (hf : Set.InjOn f s) (hs : Set.Countable (f '' s)) :
theorem Set.countable_unionᵢ {α : Type u} {ι : Sort x} {t : ιSet α} [inst : Countable ι] (ht : ∀ (i : ι), Set.Countable (t i)) :
@[simp]
theorem Set.countable_unionᵢ_iff {α : Type u} {ι : Sort x} [inst : Countable ι] {t : ιSet α} :
Set.Countable (Set.unionᵢ fun i => t i) ∀ (i : ι), Set.Countable (t i)
theorem Set.Countable.bunionᵢ_iff {α : Type u} {β : Type v} {s : Set α} {t : (a : α) → a sSet β} (hs : Set.Countable s) :
Set.Countable (Set.unionᵢ fun a => Set.unionᵢ fun h => t a h) ∀ (a : α) (ha : a s), Set.Countable (t a ha)
theorem Set.Countable.unionₛ_iff {α : Type u} {s : Set (Set α)} (hs : Set.Countable s) :
Set.Countable (⋃₀ s) ∀ (a : Set α), a sSet.Countable a
theorem Set.Countable.bunionᵢ {α : Type u} {β : Type v} {s : Set α} {t : (a : α) → a sSet β} (hs : Set.Countable s) :
(∀ (a : α) (ha : a s), Set.Countable (t a ha)) → Set.Countable (Set.unionᵢ fun a => Set.unionᵢ fun h => t a h)

Alias of the reverse direction of Set.Countable.bunionᵢ_iff.

theorem Set.Countable.unionₛ {α : Type u} {s : Set (Set α)} (hs : Set.Countable s) :
(∀ (a : Set α), a sSet.Countable a) → Set.Countable (⋃₀ s)

Alias of the reverse direction of Set.Countable.unionₛ_iff.

@[simp]
theorem Set.countable_union {α : Type u} {s : Set α} {t : Set α} :
theorem Set.Countable.union {α : Type u} {s : Set α} {t : Set α} (hs : Set.Countable s) (ht : Set.Countable t) :
theorem Set.Countable.of_diff {α : Type u} {s : Set α} {t : Set α} (h : Set.Countable (s \ t)) (ht : Set.Countable t) :
@[simp]
theorem Set.countable_insert {α : Type u} {s : Set α} {a : α} :
theorem Set.Countable.insert {α : Type u} {s : Set α} (a : α) (h : Set.Countable s) :
theorem Set.countable_isTop (α : Type u_1) [inst : PartialOrder α] :
theorem Set.countable_isBot (α : Type u_1) [inst : PartialOrder α] :
theorem Set.countable_setOf_finite_subset {α : Type u} {s : Set α} (hs : Set.Countable s) :

The set of finite subsets of a countable set is countable.

theorem Set.countable_univ_pi {α : Type u} {π : αType u_1} [inst : Finite α] {s : (a : α) → Set (π a)} (hs : ∀ (a : α), Set.Countable (s a)) :
Set.Countable (Set.pi Set.univ s)
theorem Set.countable_pi {α : Type u} {π : αType u_1} [inst : Finite α] {s : (a : α) → Set (π a)} (hs : ∀ (a : α), Set.Countable (s a)) :
Set.Countable { f | ∀ (a : α), f a s a }
theorem Set.Countable.prod {α : Type u} {β : Type v} {s : Set α} {t : Set β} (hs : Set.Countable s) (ht : Set.Countable t) :
theorem Set.Countable.image2 {α : Type u} {β : Type v} {γ : Type w} {s : Set α} {t : Set β} (hs : Set.Countable s) (ht : Set.Countable t) (f : αβγ) :