Documentation

BourbakiLean2.Set.Cardinal

def Equipotent (α : Type u) (β : Type v) :
Equations
Instances For
    theorem Equipotent.symm {α : Type u_1} {β : Type u_2} (h : Equipotent α β) :
    theorem Equipotent.trans {α : Type u_1} {β : Type u_2} {γ : Type u_3} (h : Equipotent α β) (h' : Equipotent β γ) :
    theorem Equipotent.of_eq {α β : Type u} (h : α = β) :
    Equations
    Instances For
      @[simp]
      theorem mem_equipotent_rel_iff {α β : Type u} :
      instance equipotent_equiv :
      equipotent_rel.IsEquivalence
      Equations
      def Cardinal :
      Type (u + 1)
      Equations
      Instances For
        Equations
        Instances For
          @[simp]
          theorem Cardinal.eq_iff {α β : Type u} :
          @[simp]
          theorem Cardinal.eq_zero_iff {α : Type u} :
          Cardinal.mk α = 0 αFalse
          @[simp]
          @[simp]
          Equations
          Instances For
            @[simp]
            theorem Cardinal.mk_injects_iff {α β : Type u} :
            @[simp]
            theorem Cardinal.zero_le (x : Cardinal) :
            0 x
            theorem Cardinal.factors_through_mk {α : Type v} {f : αCardinal} :
            ∃ (g : αType u), f = Cardinal.mk g
            def Cardinal.ind_mk {p : CardinalProp} (h : ∀ (α : Type u), p (Cardinal.mk α)) (x : Cardinal) :
            p x
            Equations
            • =
            Instances For
              noncomputable instance instWellOrderCardinal :
              Equations
              theorem cantor_bernstein_schroeder {α β : Type u} (f : Function.Injection α β) (g : Function.Injection β α) :
              theorem exists_injection {α β : Type u} :
              (∃ (f : αβ), Function.Injective f) ∃ (f : βα), Function.Injective f
              def Cardinal.sigma {ι : Type u} (α : ιCardinal) :
              Equations
              Instances For
                def Cardinal.prod {ι : Type u} (α : ιCardinal) :
                Equations
                Instances For
                  @[simp]
                  theorem Cardinal.sigma_mk {ι : Type u} {α : ιType u} :
                  (Cardinal.sigma fun (i : ι) => Cardinal.mk (α i)) = Cardinal.mk ((i : ι) × α i)
                  @[simp]
                  theorem Cardinal.prod_mk {ι : Type u} {α : ιType u} :
                  (Cardinal.prod fun (i : ι) => Cardinal.mk (α i)) = Cardinal.mk ((i : ι) → α i)
                  theorem Cardinal.sigma_ub {ι : Type u} {α : ιCardinal} :
                  UpperBound (α '' Set.univ) (Cardinal.sigma α)
                  theorem Cardinal.exists_lubi {ι : Type u} {α : ιCardinal} :
                  ∃ (x : Cardinal), IsLUBi α x
                  theorem Cardinal.iUnion_le_sigma {ι β : Type u} {α : ιSet β} :
                  Cardinal.mk (⋃ i : ι, α i) Cardinal.sigma fun (i : ι) => Cardinal.mk (α i)
                  theorem Cardinal.sigma_reindex {ι ι' : Type u} {α : ιCardinal} (f : Function.Bijection ι' ι) :
                  theorem Cardinal.sigma_reindex_univ {ι : Type u} {α : ιCardinal} :
                  (Cardinal.sigma fun (x : Set.univ) => match x with | x, property => α x) = Cardinal.sigma α
                  theorem Cardinal.prod_reindex {ι ι' : Type u} {α : ιCardinal} (f : Function.Bijection ι' ι) :
                  theorem Cardinal.prod_reindex_univ {ι : Type u} {α : ιCardinal} :
                  (Cardinal.prod fun (x : Set.univ) => match x with | x, property => α x) = Cardinal.prod α
                  theorem Cardinal.prod_assoc {ι ι' : Type u} {α : ιCardinal} {p : ι'Set ι} (h : Set.IsPartition p) :
                  Cardinal.prod α = Cardinal.prod fun (i' : ι') => Cardinal.prod fun (i : (p i')) => α i.val
                  theorem Cardinal.sigma_assoc {ι ι' : Type u} {α : ιCardinal} {p : ι'Set ι} (h : Set.IsPartition p) :
                  Cardinal.sigma α = Cardinal.sigma fun (i' : ι') => Cardinal.sigma fun (i : (p i')) => α i.val
                  theorem Cardinal.sigma_prod_distrib {ι : Type u} {ι' : ιType u} {x : (i : ι) → ι' iCardinal} :
                  (Cardinal.prod fun (i : ι) => Cardinal.sigma fun (i' : ι' i) => x i i') = Cardinal.sigma fun (y : (i : ι) → ι' i) => Cardinal.prod fun (i : ι) => x i (y i)
                  Equations
                  Equations
                  Equations
                  @[simp]
                  theorem Cardinal.add_mk {α β : Type u} :
                  @[simp]
                  theorem Cardinal.mul_mk {α β : Type u} :
                  @[simp]
                  theorem Cardinal.pow_mk {α β : Type u} :
                  theorem Cardinal.add_comm {a b : Cardinal} :
                  a + b = b + a
                  theorem Cardinal.mul_comm {a b : Cardinal} :
                  a * b = b * a
                  @[simp]
                  theorem Cardinal.add_assoc {a b c : Cardinal} :
                  a + (b + c) = a + b + c
                  @[simp]
                  theorem Cardinal.mul_assoc {a b c : Cardinal} :
                  a * (b * c) = a * b * c
                  theorem Cardinal.mul_add_distrib_right {a b c : Cardinal} :
                  (a + b) * c = a * c + b * c
                  theorem Cardinal.mul_add_distrib_left {a b c : Cardinal} :
                  a * (b + c) = a * b + a * c
                  theorem Cardinal.sigma_zeros {ι : Type u} {α : ιCardinal} {s : Set ι} (h : ∀ (x : ι), ¬x sα x = 0) :
                  Cardinal.sigma α = Cardinal.sigma fun (x : s) => α x.val
                  theorem Cardinal.prod_ones {ι : Type u} {α : ιCardinal} {s : Set ι} (h : ∀ (x : ι), ¬x sα x = 1) :
                  Cardinal.prod α = Cardinal.prod fun (x : s) => α x.val
                  @[simp]
                  theorem Cardinal.add_zero {a : Cardinal} :
                  a + 0 = a
                  @[simp]
                  theorem Cardinal.zero_add {a : Cardinal} :
                  0 + a = a
                  @[simp]
                  theorem Cardinal.mul_one {a : Cardinal} :
                  a * 1 = a
                  @[simp]
                  theorem Cardinal.one_mul {a : Cardinal} :
                  1 * a = a
                  @[simp]
                  theorem Cardinal.sigma_constant {α : Type u} {b : Cardinal} :
                  (Cardinal.sigma fun (x : α) => b) = Cardinal.mk α * b
                  @[simp]
                  theorem Cardinal.prod_constant {α : Type u} {b : Cardinal} :
                  (Cardinal.prod fun (x : α) => b) = b ^ Cardinal.mk α
                  @[simp]
                  theorem Cardinal.sigma_constant_one {α : Type u} :
                  (Cardinal.sigma fun (x : α) => 1) = Cardinal.mk α
                  @[simp]
                  theorem Cardinal.prod_zero_iff {ι : Type u} {x : ιCardinal} :
                  Cardinal.prod x = 0 ∃ (i : ι), x i = 0
                  @[simp]
                  theorem Cardinal.sigma_zero_iff {ι : Type u} {x : ιCardinal} :
                  Cardinal.sigma x = 0 ∀ (i : ι), x i = 0
                  theorem Cardinal.sigma_empty {ι : Type u} {x : ιCardinal} (h : ιFalse) :
                  theorem Cardinal.prod_empty {ι : Type u} {x : ιCardinal} (h : ιFalse) :
                  theorem Cardinal.sigma_add {a b : Cardinal} :
                  Cardinal.sigma (Sum.elim (fun (x : PUnit) => a) fun (x : PUnit) => b) = a + b
                  theorem Cardinal.prod_mul {a b : Cardinal} :
                  Cardinal.prod (Sum.elim (fun (x : PUnit) => a) fun (x : PUnit) => b) = a * b
                  @[simp]
                  theorem Cardinal.mul_zero {a : Cardinal} :
                  a * 0 = 0
                  @[simp]
                  theorem Cardinal.zero_mul {a : Cardinal} :
                  0 * a = 0
                  theorem Cardinal.zero_of_mul_zero {a b : Cardinal} (h : a * b = 0) :
                  a = 0 b = 0
                  @[simp]
                  theorem Cardinal.mul_zero_iff {a b : Cardinal} :
                  a * b = 0 a = 0 b = 0
                  @[simp]
                  theorem Cardinal.add_zero_iff {a b : Cardinal} :
                  a + b = 0 a = 0 b = 0
                  theorem Cardinal.add_one_cancel {a b : Cardinal} (h : a + 1 = b + 1) :
                  a = b
                  @[simp]
                  theorem Cardinal.pow_sigma {ι : Type u} {x : ιCardinal} {a : Cardinal} :
                  a ^ Cardinal.sigma x = Cardinal.prod fun (i : ι) => a ^ x i
                  @[simp]
                  theorem Cardinal.prod_pow {ι : Type u} {x : ιCardinal} {a : Cardinal} :
                  Cardinal.prod x ^ a = Cardinal.prod fun (i : ι) => x i ^ a
                  theorem Cardinal.pow_add {a b c : Cardinal} :
                  a ^ (b + c) = a ^ b * a ^ c
                  theorem Cardinal.pow_mul {a b c : Cardinal} :
                  a ^ (b * c) = (a ^ b) ^ c
                  @[simp]
                  theorem Cardinal.pow_zero {a : Cardinal} :
                  a ^ 0 = 1
                  @[simp]
                  theorem Cardinal.pow_one {a : Cardinal} :
                  a ^ 1 = a
                  @[simp]
                  theorem Cardinal.one_pow {a : Cardinal} :
                  1 ^ a = 1
                  @[simp]
                  theorem Cardinal.zero_pow_neq_zero {a : Cardinal} (h : a 0) :
                  0 ^ a = 0
                  theorem Cardinal.exists_add_iff_le {a b : Cardinal} :
                  (∃ (c : Cardinal), b = a + c) a b
                  theorem Cardinal.sigma_le {ι : Type u} {x y : ιCardinal} (h : ∀ (i : ι), x i y i) :
                  theorem Cardinal.prod_le {ι : Type u} {x y : ιCardinal} (h : ∀ (i : ι), x i y i) :
                  theorem Cardinal.sigma_subset {ι : Type u} {x : ιCardinal} {s : Set ι} :
                  (Cardinal.sigma fun (a : s) => x a.val) Cardinal.sigma x
                  theorem Cardinal.prod_subset {ι : Type u} {x : ιCardinal} {s : Set ι} (h : ∀ (i : ι), ¬i sx i 0) :
                  (Cardinal.prod fun (a : s) => x a.val) Cardinal.prod x
                  theorem Cardinal.add_mono_left {a : Cardinal} :
                  Monotone fun (b : Cardinal) => a + b
                  theorem Cardinal.add_mono_right {b : Cardinal} :
                  Monotone fun (a : Cardinal) => a + b
                  theorem Cardinal.mul_mono_left {a : Cardinal} :
                  Monotone fun (b : Cardinal) => a * b
                  theorem Cardinal.mul_mono_right {b : Cardinal} :
                  Monotone fun (a : Cardinal) => a * b
                  theorem Cardinal.pow_mono_right {b : Cardinal} :
                  Monotone fun (a : Cardinal) => a ^ b
                  theorem Cardinal.pow_mono_left {a : Cardinal} (h : a 0) :
                  Monotone fun (b : Cardinal) => a ^ b
                  theorem Cardinal.cantor {a : Cardinal} :
                  a < (1 + 1) ^ a
                  @[simp]
                  @[simp]
                  theorem Cardinal.le_add_left {a b : Cardinal} :
                  a a + b
                  @[simp]
                  theorem Cardinal.le_add_right {a b : Cardinal} :
                  b a + b
                  @[simp]
                  theorem Cardinal.mk_le_of_subset {α : Type u_1} {x y : Set α} (h : x y) :
                  theorem Cardinal.preimage_same_product {α β : Type u} {f : αβ} {c : Cardinal} (h' : ∀ (y : β), Cardinal.mk (f ⁻¹' {y}) = c) :
                  theorem Equipotent.subset_subset {α : Type u} {s t : Set α} (h : s t) :
                  Equipotent {x : t | x.val s} s
                  theorem Cardinal.disj_iUnion {α ι : Type u} {a : ιSet α} (h : Set.Disjoint a) :
                  Cardinal.mk (⋃ i : ι, a i) = Cardinal.sigma fun (i : ι) => Cardinal.mk (a i)
                  theorem Cardinal.mk_diag {α : Type u} :
                  Cardinal.mk α = Cardinal.mk Relation.diag