# mathlibdocumentation

data.equiv.denumerable

@[class]
structure denumerable (α : Type u_1) :
Type u_1
• to_encodable :
• decode_inv : ∀ (n : ), ∃ (a : α) (H : a n),

A denumerable type is one which is (constructively) bijective with ℕ. Although we already have a name for this property, namely α ≃ ℕ, we are here interested in using it as a typeclass.

Instances
theorem denumerable.decode_is_some (α : Type u_1) [denumerable α] (n : ) :
def denumerable.of_nat (α : Type u_1) [f : denumerable α] (n : ) :
α
Equations
@[simp]
theorem denumerable.decode_eq_of_nat (α : Type u_1) [denumerable α] (n : ) :
= some n)
@[simp]
theorem denumerable.of_nat_of_decode {α : Type u_1} [denumerable α] {n : } {b : α} (h : = some b) :
= b
@[simp]
theorem denumerable.encode_of_nat {α : Type u_1} [denumerable α] (n : ) :
@[simp]
theorem denumerable.of_nat_encode {α : Type u_1} [denumerable α] (a : α) :
def denumerable.eqv (α : Type u_1) [denumerable α] :
α
Equations
def denumerable.mk' {α : Type u_1} (e : α ) :
Equations
def denumerable.of_equiv (α : Type u_1) {β : Type u_2} [denumerable α] (e : β α) :
Equations
@[simp]
theorem denumerable.of_equiv_of_nat (α : Type u_1) {β : Type u_2} [denumerable α] (e : β α) (n : ) :
= (e.symm) n)
def denumerable.equiv₂ (α : Type u_1) (β : Type u_2) [denumerable α] [denumerable β] :
α β
Equations
@[protected, instance]
Equations
@[simp]
theorem denumerable.of_nat_nat (n : ) :
@[protected, instance]
def denumerable.option {α : Type u_1} [denumerable α] :
Equations
@[protected, instance]
def denumerable.sum {α : Type u_1} {β : Type u_2} [denumerable α] [denumerable β] :
Equations
@[protected, instance]
def denumerable.sigma {α : Type u_1} [denumerable α] {γ : α → Type u_3} [Π (a : α), denumerable (γ a)] :
Equations
@[simp]
theorem denumerable.sigma_of_nat_val {α : Type u_1} [denumerable α] {γ : α → Type u_3} [Π (a : α), denumerable (γ a)] (n : ) :
@[protected, instance]
def denumerable.prod {α : Type u_1} {β : Type u_2} [denumerable α] [denumerable β] :
denumerable × β)
Equations
@[simp]
theorem denumerable.prod_of_nat_val {α : Type u_1} {β : Type u_2} [denumerable α] [denumerable β] (n : ) :
denumerable.of_nat × β) n = ,
@[simp]
@[protected, instance]
Equations
@[protected, instance]
Equations
@[protected, instance]
def denumerable.ulift {α : Type u_1} [denumerable α] :
Equations
@[protected, instance]
def denumerable.plift {α : Type u_1} [denumerable α] :
Equations
def denumerable.pair {α : Type u_1} [denumerable α] :
α × α α
Equations
theorem nat.subtype.exists_succ {s : set } [infinite s] (x : s) :
∃ (n : ), x.val + n + 1 s
def nat.subtype.succ {s : set } [infinite s] (x : s) :
Equations
theorem nat.subtype.succ_le_of_lt {s : set } [infinite s] {x y : s} (h : y < x) :
theorem nat.subtype.le_succ_of_forall_lt_le {s : set } [infinite s] {x y : s} (h : ∀ (z : s), z < xz y) :
theorem nat.subtype.lt_succ_self {s : set } [infinite s] (x : s) :
theorem nat.subtype.lt_succ_iff_le {s : set } [infinite s] {x y : s} :
x y
def nat.subtype.of_nat (s : set ) [infinite s] :
s
Equations
• (n + 1) =
theorem nat.subtype.of_nat_surjective_aux {s : set } [infinite s] {x : } (hx : x s) :
∃ (n : ), = x, hx⟩
Equations
def denumerable.of_encodable_of_infinite (α : Type u_1) [encodable α] [infinite α] :
Equations
• = let _inst : := , _inst_3 : := _, _inst_4 : := in