Equations
- FiniteCardinal = { a : Cardinal // a.Finite }
Instances For
Equations
- instCoeFiniteCardinalCardinal = { coe := fun (x : FiniteCardinal) => x.val }
Equations
- instWellOrderFiniteCardinal = id inferInstance
Equations
- FiniteType.cardinality' ⟨x_1, h⟩ = ⟨Cardinal.mk x_1, ⋯⟩
Instances For
Equations
- Cardinal.ofNat 0 = 0
- Cardinal.ofNat n.succ = Cardinal.ofNat n + 1
Instances For
Equations
- h.pred h' = Classical.choose ⋯
Instances For
Equations
- ⋯ = ⋯
bit of finite set stuff
theorem
Finite.ssubset_cardinal_lt
{α : Type u}
{s : Set α}
[h : Finite α]
(h' : s ≠ Set.univ)
:
Cardinal.mk ↥s < Cardinal.mk α
instance
Finite.preimage_bij
{α β : Type u}
{s : Set β}
[h : Finite ↥s]
(f : Function.Bijection α β)
:
Equations
- ⋯ = ⋯
theorem
Finite.surj_of_inj
{α β : Type u}
[Finite β]
{f : α → β}
(hab : Equipotent α β)
(h : Function.Injective f)
:
theorem
Finite.inj_of_surj
{α β : Type u}
[Finite α]
{f : α → β}
(hab : Equipotent α β)
(h : Function.Surjective f)
:
theorem
Cardinal.Finite.induction
{p : FiniteCardinal → Prop}
(h0 : p ⟨0, Cardinal.Finite.zero⟩)
(hs : ∀ (a : FiniteCardinal), p a → p ⟨a.val + 1, ⋯⟩)
(a : FiniteCardinal)
:
p a
theorem
Cardinal.Finite.recursion_ex
{p : FiniteCardinal → Type u_1}
(h0 : p ⟨0, Cardinal.Finite.zero⟩)
(hs : (a : FiniteCardinal) → p a → p ⟨a.val + 1, ⋯⟩)
:
∃ (f : (x : FiniteCardinal) → p x),
f ⟨0, Cardinal.Finite.zero⟩ = h0 ∧ ∀ (a : FiniteCardinal), f ⟨a.val + 1, ⋯⟩ = hs a (f a)
noncomputable def
FiniteCardinal.recursion
{p : FiniteCardinal → Type u_1}
(h0 : p ⟨0, Cardinal.Finite.zero⟩)
(hs : (a : FiniteCardinal) → p a → p ⟨a.val + 1, ⋯⟩)
(a : FiniteCardinal)
:
p a
Equations
- FiniteCardinal.recursion h0 hs a = ⋯.choose a
Instances For
@[simp]
theorem
FiniteCardinal.recursion_zero
{p : FiniteCardinal → Type u_1}
(h0 : p ⟨0, Cardinal.Finite.zero⟩)
(hs : (a : FiniteCardinal) → p a → p ⟨a.val + 1, ⋯⟩)
:
FiniteCardinal.recursion h0 hs ⟨0, Cardinal.Finite.zero⟩ = h0
@[simp]
theorem
FiniteCardinal.recursion_succ
{p : FiniteCardinal → Type u_1}
{x : FiniteCardinal}
(h0 : p ⟨0, Cardinal.Finite.zero⟩)
(hs : (a : FiniteCardinal) → p a → p ⟨a.val + 1, ⋯⟩)
:
FiniteCardinal.recursion h0 hs ⟨x.val + 1, ⋯⟩ = hs x (FiniteCardinal.recursion h0 hs x)
correspondence to normal nats
Equations
- FiniteCardinal.to_nat = FiniteCardinal.recursion Nat.zero fun (x : FiniteCardinal) (f : Nat) => f.succ
Instances For
Equations
- FiniteCardinal.of_nat 0 = ⟨0, Cardinal.Finite.zero⟩
- FiniteCardinal.of_nat n.succ = ⟨(FiniteCardinal.of_nat n).val + 1, ⋯⟩
Instances For
@[simp]
@[simp]
theorem
FiniteCardinal.of_nat_add
{n m : Nat}
:
(FiniteCardinal.of_nat (n + m)).val = (FiniteCardinal.of_nat n).val + (FiniteCardinal.of_nat m).val
@[simp]
theorem
FiniteCardinal.of_nat_mul
{n m : Nat}
:
(FiniteCardinal.of_nat (n * m)).val = (FiniteCardinal.of_nat n).val * (FiniteCardinal.of_nat m).val
@[simp]
theorem
FiniteCardinal.of_nat_pow
{n m : Nat}
:
(FiniteCardinal.of_nat (n ^ m)).val = (FiniteCardinal.of_nat n).val ^ (FiniteCardinal.of_nat m).val
@[simp]
@[simp]
@[simp]
theorem
FiniteCardinal.of_nat_le_iff
{n m : Nat}
:
FiniteCardinal.of_nat n ≤ FiniteCardinal.of_nat m ↔ n ≤ m
@[simp]
theorem
FiniteCardinal.of_nat_lt_iff
{n m : Nat}
:
FiniteCardinal.of_nat n < FiniteCardinal.of_nat m ↔ n < m
Equations
- ⋯ = ⋯
instance
instFiniteSurjection
{α β : Type u}
[Finite α]
[Finite β]
:
Finite (Function.Surjection α β)
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
@[simp]
theorem
FiniteCardinal.to_nat_add
{x y : FiniteCardinal}
:
FiniteCardinal.to_nat ⟨x.val + y.val, ⋯⟩ = x.to_nat + y.to_nat
@[simp]
theorem
FiniteCardinal.to_nat_mul
{x y : FiniteCardinal}
:
FiniteCardinal.to_nat ⟨x.val * y.val, ⋯⟩ = x.to_nat * y.to_nat
@[simp]
theorem
FiniteCardinal.to_nat_pow
{x y : FiniteCardinal}
:
FiniteCardinal.to_nat ⟨x.val ^ y.val, ⋯⟩ = x.to_nat ^ y.to_nat
theorem
FiniteCardinal.equipotent_of_nat_eq
{n : Nat}
{α : Type u}
{β : Type v}
[Finite α]
[Finite β]
(h1 : Cardinal.mk α = (FiniteCardinal.of_nat n).val)
(h2 : Cardinal.mk β = (FiniteCardinal.of_nat n).val)
:
Equipotent α β