Equations
- Equipotent α β = Nonempty (Function.Bijection α β)
Instances For
theorem
Equipotent.trans
{α : Type u_1}
{β : Type u_2}
{γ : Type u_3}
(h : Equipotent α β)
(h' : Equipotent β γ)
:
Equipotent α γ
Equations
- equipotent_rel (α, β) = Nonempty (Function.Bijection α β)
Instances For
@[simp]
Equations
@[simp]
Equations
- instZeroCardinal = { zero := Cardinal.mk PEmpty }
theorem
Cardinal.le_equipotent_invariant1
{x x' y y' : Type u}
(hx : Equipotent x x')
(hy : Equipotent y y')
(h : Nonempty (Function.Injection x y))
:
Nonempty (Function.Injection x' y')
theorem
Cardinal.le_equipotent_invariant
{x x' y y' : Type u}
(hx : Equipotent x x')
(hy : Equipotent y y')
:
Nonempty (Function.Injection x y) = Nonempty (Function.Injection x' y')
Equations
- α.injects β = Quot.lift2_same (fun (α β : Type ?u.3) => Nonempty (Function.Injection α β)) ⋯ α β
Instances For
@[simp]
theorem
Cardinal.mk_injects_iff
{α β : Type u}
:
(Cardinal.mk α).injects (Cardinal.mk β) ↔ Nonempty (Function.Injection α β)
@[simp]
theorem
Cardinal.mk_injects_iff'
{α β : Type u}
:
Cardinal.injects (Quot.mk Equipotent α) (Quot.mk Equipotent β) ↔ Nonempty (Function.Injection α β)
@[simp]
theorem
Cardinal.mk_le_iff
{α β : Type u}
:
Cardinal.mk α ≤ Cardinal.mk β ↔ Nonempty (Function.Injection α β)
theorem
Cardinal.factors_through_mk
{α : Type v}
{f : α → Cardinal}
:
∃ (g : α → Type u), f = Cardinal.mk ∘ g
def
Cardinal.ind_mk
{p : Cardinal → Prop}
(h : ∀ (α : Type u), p (Cardinal.mk α))
(x : Cardinal)
:
p x
Equations
- ⋯ = ⋯
Instances For
Equations
- instWellOrderCardinal = ⋯.wellOrder
theorem
cantor_bernstein_schroeder
{α β : Type u}
(f : Function.Injection α β)
(g : Function.Injection β α)
:
Equipotent α β
theorem
exists_injection
{α β : Type u}
:
(∃ (f : α → β), Function.Injective f) ∨ ∃ (f : β → α), Function.Injective f
Equations
- Cardinal.sigma α = Cardinal.mk (let b := fun (i : ι) => Classical.choose ⋯; (i : ι) × b i)
Instances For
Equations
- Cardinal.prod α = Cardinal.mk (let b := fun (i : ι) => Classical.choose ⋯; (i : ι) → b i)
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.ge_of_surj
{α β : Type u}
(h : Function.Surjection α β)
:
Cardinal.mk β ≤ Cardinal.mk α
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 ι' ι)
:
Cardinal.sigma (α ∘ f.val) = Cardinal.sigma α
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 ι' ι)
:
Cardinal.prod (α ∘ f.val) = Cardinal.prod α
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 : ι) → ι' i → Cardinal}
:
(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
- instAddCardinal = { add := fun (x y : Cardinal) => Cardinal.mk (⋯.choose ⊕ ⋯.choose) }
Equations
- instMulCardinal = { mul := fun (x y : Cardinal) => Cardinal.mk (⋯.choose × ⋯.choose) }
Equations
- instPowCardinal = { pow := fun (x y : Cardinal) => Cardinal.mk (⋯.choose → ⋯.choose) }
@[simp]
@[simp]
@[simp]
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.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]
@[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
@[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.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 ∈ s → x i ≠ 0)
:
(Cardinal.prod fun (a : ↥s) => x a.val) ≤ Cardinal.prod x
@[simp]
theorem
Cardinal.mk_le_of_subset
{α : Type u_1}
{x y : Set α}
(h : x ⊆ y)
:
Cardinal.mk ↥x ≤ Cardinal.mk ↥y
theorem
Cardinal.preimage_same_product
{α β : Type u}
{f : α → β}
{c : Cardinal}
(h' : ∀ (y : β), Cardinal.mk ↥(f ⁻¹' {y}) = c)
:
Cardinal.mk α = c * Cardinal.mk β
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)