Cast of natural numbers (additional theorems) #
This file proves additional properties about the canonical homomorphism from
the natural numbers into an additive monoid with a one (Nat.cast
).
Main declarations #
castAddMonoidHom
:cast
bundled as anAddMonoidHom
.castRingHom
:cast
bundled as aRingHom
.
Nat.cast : ℕ → α
as an AddMonoidHom
.
Equations
- Nat.castAddMonoidHom α = { toFun := Nat.cast, map_zero' := ⋯, map_add' := ⋯ }
Instances For
@[simp]
theorem
Nat.coe_castAddMonoidHom
{α : Type u_1}
[AddMonoidWithOne α]
:
⇑(Nat.castAddMonoidHom α) = Nat.cast
@[simp]
Equations
- Nat.castRingHom α = { toFun := Nat.cast, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
@[simp]
@[simp]
Alias of Nat.cast_dvd_cast
.
theorem
eq_natCast'
{A : Type u_3}
{F : Type u_5}
[FunLike F ℕ A]
[AddMonoidWithOne A]
[AddMonoidHomClass F ℕ A]
(f : F)
(h1 : f 1 = 1)
(n : ℕ)
:
f n = ↑n
theorem
map_natCast'
{B : Type u_4}
{F : Type u_5}
[AddMonoidWithOne B]
{A : Type u_6}
[AddMonoidWithOne A]
[FunLike F A B]
[AddMonoidHomClass F A B]
(f : F)
(h : f 1 = 1)
(n : ℕ)
:
f ↑n = ↑n
theorem
map_ofNat'
{B : Type u_4}
{F : Type u_5}
[AddMonoidWithOne B]
{A : Type u_6}
[AddMonoidWithOne A]
[FunLike F A B]
[AddMonoidHomClass F A B]
(f : F)
(h : f 1 = 1)
(n : ℕ)
[n.AtLeastTwo]
:
f (OfNat.ofNat n) = OfNat.ofNat n
theorem
ext_nat''
{A : Type u_3}
{F : Type u_4}
[MulZeroOneClass A]
[FunLike F ℕ A]
[MonoidWithZeroHomClass F ℕ A]
(f : F)
(g : F)
(h_pos : ∀ {n : ℕ}, 0 < n → f n = g n)
:
f = g
If two MonoidWithZeroHom
s agree on the positive naturals they are equal.
@[simp]
theorem
eq_natCast
{R : Type u_3}
{F : Type u_5}
[NonAssocSemiring R]
[FunLike F ℕ R]
[RingHomClass F ℕ R]
(f : F)
(n : ℕ)
:
f n = ↑n
@[simp]
theorem
map_natCast
{R : Type u_3}
{S : Type u_4}
{F : Type u_5}
[NonAssocSemiring R]
[NonAssocSemiring S]
[FunLike F R S]
[RingHomClass F R S]
(f : F)
(n : ℕ)
:
f ↑n = ↑n
theorem
map_ofNat
{R : Type u_3}
{S : Type u_4}
{F : Type u_5}
[NonAssocSemiring R]
[NonAssocSemiring S]
[FunLike F R S]
[RingHomClass F R S]
(f : F)
(n : ℕ)
[n.AtLeastTwo]
:
f (OfNat.ofNat n) = OfNat.ofNat n
theorem
ext_nat
{R : Type u_3}
{F : Type u_5}
[NonAssocSemiring R]
[FunLike F ℕ R]
[RingHomClass F ℕ R]
(f : F)
(g : F)
:
f = g
theorem
RingHom.eq_natCast'
{R : Type u_3}
[NonAssocSemiring R]
(f : ℕ →+* R)
:
f = Nat.castRingHom R
This is primed to match eq_intCast'
.
We don't use RingHomClass
here, since that might cause type-class slowdown for
Subsingleton
Equations
- Nat.uniqueRingHom = { default := Nat.castRingHom R, uniq := ⋯ }
Additive homomorphisms from ℕ
are defined by the image of 1
.
Equations
Instances For
Monoid homomorphisms from Multiplicative ℕ
are defined by the image
of Multiplicative.ofAdd 1
.
Equations
- powersHom α = Additive.ofMul.trans ((multiplesHom (Additive α)).trans AddMonoidHom.toMultiplicative'')
Instances For
@[simp]
theorem
multiplesHom_apply
(β : Type u_2)
[AddMonoid β]
(x : β)
(n : ℕ)
:
((multiplesHom β) x) n = n • x
@[simp]
@[simp]
theorem
multiplesHom_symm_apply
(β : Type u_2)
[AddMonoid β]
(f : ℕ →+ β)
:
(multiplesHom β).symm f = f 1
@[simp]
theorem
MonoidHom.apply_mnat
{α : Type u_1}
[Monoid α]
(f : Multiplicative ℕ →* α)
(n : Multiplicative ℕ)
:
theorem
MonoidHom.ext_mnat_iff
{α : Type u_1}
[Monoid α]
{f : Multiplicative ℕ →* α}
{g : Multiplicative ℕ →* α}
:
theorem
MonoidHom.ext_mnat
{α : Type u_1}
[Monoid α]
⦃f : Multiplicative ℕ →* α⦄
⦃g : Multiplicative ℕ →* α⦄
(h : f (Multiplicative.ofAdd 1) = g (Multiplicative.ofAdd 1))
:
f = g
If α
is commutative, multiplesHom
is an additive equivalence.
Equations
- multiplesAddHom β = { toEquiv := multiplesHom β, map_add' := ⋯ }
Instances For
If α
is commutative, powersHom
is a multiplicative equivalence.
Equations
- powersMulHom α = { toEquiv := powersHom α, map_mul' := ⋯ }
Instances For
@[simp]
theorem
multiplesAddHom_apply
(β : Type u_2)
[AddCommMonoid β]
(x : β)
(n : ℕ)
:
((multiplesAddHom β) x) n = n • x
@[simp]
theorem
powersMulHom_apply
(α : Type u_1)
[CommMonoid α]
(x : α)
(n : Multiplicative ℕ)
:
((powersMulHom α) x) n = x ^ Multiplicative.toAdd n
@[simp]
theorem
multiplesAddHom_symm_apply
(β : Type u_2)
[AddCommMonoid β]
(f : ℕ →+ β)
:
(multiplesAddHom β).symm f = f 1
@[simp]
theorem
powersMulHom_symm_apply
(α : Type u_1)
[CommMonoid α]
(f : Multiplicative ℕ →* α)
:
(powersMulHom α).symm f = f (Multiplicative.ofAdd 1)
@[deprecated Pi.natCast_apply]
theorem
Pi.nat_apply
{α : Type u_1}
{π : α → Type u_3}
[(a : α) → NatCast (π a)]
(n : ℕ)
(a : α)
:
↑n a = ↑n
Alias of Pi.natCast_apply
.
@[deprecated Pi.natCast_def]
theorem
Pi.coe_nat
{α : Type u_1}
{π : α → Type u_3}
[(a : α) → NatCast (π a)]
(n : ℕ)
:
↑n = fun (x : α) => ↑n
Alias of Pi.natCast_def
.
@[simp]
theorem
Pi.ofNat_apply
{α : Type u_1}
{π : α → Type u_3}
[(a : α) → NatCast (π a)]
(n : ℕ)
[n.AtLeastTwo]
(a : α)
:
OfNat.ofNat n a = ↑n