FoxDifferential.Completed.CoefficientRings.CompletedGroupAlgebraPrimePower.Coeff.AddCommGroup
Fox Differential / Completed / Coefficient Rings / Prime-Power Completed Group Algebra / Coefficient / Additive Commutative Group.
Imported by
- FoxDifferential.Completed
- FoxDifferential.Completed.CoefficientRings
- FoxDifferential.Completed.CoefficientRings.CompletedGroupAlgebraPrimePower
- FoxDifferential.Completed.CoefficientRings.CompletedGroupAlgebraPrimePower.Coeff
- FoxDifferential.Completed.CoefficientRings.CompletedGroupAlgebraPrimePower.Coeff.Ring
instance instZeroPrimePowerCompletedCoeff : Zero (PrimePowerCompletedCoeff ℓ G) where
zero := ⟨fun i => (0 : ZMod (ℓ ^ i.1)), by
intro i j hij
letI : Fact (0 < ℓ ^ i.1) := ⟨primePower_pos ℓ i.1⟩
letI : Fact (0 < ℓ ^ j.1) := ⟨primePower_pos ℓ j.1⟩
exact map_zero
(modNCompletedCoeffMap
(n := ℓ ^ i.1) (m := ℓ ^ j.1)
(primePow_dvd_primePow (ℓ := ℓ) hij.1))⟩The zero element of the prime-power completed coefficient ring is the compatible family of finite-stage zero elements.
instance instAddPrimePowerCompletedCoeff : Add (PrimePowerCompletedCoeff ℓ G) where
add x y := ⟨fun i =>
(show ZMod (ℓ ^ i.1) from x.1 i) + (show ZMod (ℓ ^ i.1) from y.1 i), by
intro i j hij
letI : Fact (0 < ℓ ^ i.1) := ⟨primePower_pos ℓ i.1⟩
letI : Fact (0 < ℓ ^ j.1) := ⟨primePower_pos ℓ j.1⟩
change modNCompletedCoeffMap
(n := ℓ ^ i.1) (m := ℓ ^ j.1)
(primePow_dvd_primePow (ℓ := ℓ) hij.1)
((show ZMod (ℓ ^ j.1) from x.1 j) + (show ZMod (ℓ ^ j.1) from y.1 j)) =
(show ZMod (ℓ ^ i.1) from x.1 i) + (show ZMod (ℓ ^ i.1) from y.1 i)
rw [map_add]
exact congrArg₂ HAdd.hAdd (x.2 i j hij) (y.2 i j hij)⟩Addition in the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient additions.
instance instAddZeroClassPrimePowerCompletedCoeff :
AddZeroClass (PrimePowerCompletedCoeff ℓ G) where
zero := 0
add := (· + ·)
zero_add x := by
apply Subtype.ext
funext i
change (0 : ZMod (ℓ ^ i.1)) + (show ZMod (ℓ ^ i.1) from x.1 i) =
(show ZMod (ℓ ^ i.1) from x.1 i)
simp only [zero_add]
add_zero x := by
apply Subtype.ext
funext i
change (show ZMod (ℓ ^ i.1) from x.1 i) + (0 : ZMod (ℓ ^ i.1)) =
(show ZMod (ℓ ^ i.1) from x.1 i)
simp only [add_zero]Addition in the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient additions.
instance instNegPrimePowerCompletedCoeff : Neg (PrimePowerCompletedCoeff ℓ G) where
neg x := ⟨fun i => -(show ZMod (ℓ ^ i.1) from x.1 i), by
intro i j hij
letI : Fact (0 < ℓ ^ i.1) := ⟨primePower_pos ℓ i.1⟩
letI : Fact (0 < ℓ ^ j.1) := ⟨primePower_pos ℓ j.1⟩
change modNCompletedCoeffMap
(n := ℓ ^ i.1) (m := ℓ ^ j.1)
(primePow_dvd_primePow (ℓ := ℓ) hij.1)
(-(show ZMod (ℓ ^ j.1) from x.1 j)) =
-(show ZMod (ℓ ^ i.1) from x.1 i)
rw [map_neg]
exact congrArg Neg.neg (x.2 i j hij)⟩Negation on the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient negations.
instance instSubPrimePowerCompletedCoeff : Sub (PrimePowerCompletedCoeff ℓ G) where
sub x y := ⟨fun i =>
(show ZMod (ℓ ^ i.1) from x.1 i) - (show ZMod (ℓ ^ i.1) from y.1 i), by
intro i j hij
letI : Fact (0 < ℓ ^ i.1) := ⟨primePower_pos ℓ i.1⟩
letI : Fact (0 < ℓ ^ j.1) := ⟨primePower_pos ℓ j.1⟩
change modNCompletedCoeffMap
(n := ℓ ^ i.1) (m := ℓ ^ j.1)
(primePow_dvd_primePow (ℓ := ℓ) hij.1)
((show ZMod (ℓ ^ j.1) from x.1 j) - (show ZMod (ℓ ^ j.1) from y.1 j)) =
(show ZMod (ℓ ^ i.1) from x.1 i) - (show ZMod (ℓ ^ i.1) from y.1 i)
rw [map_sub]
exact congrArg₂ HSub.hSub (x.2 i j hij) (y.2 i j hij)⟩Subtraction in the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient-ring subtractions.
instance instSMulNatPrimePowerCompletedCoeff : SMul ℕ (PrimePowerCompletedCoeff ℓ G) where
smul m x := ⟨fun i => m • (show ZMod (ℓ ^ i.1) from x.1 i), by
intro i j hij
letI : Fact (0 < ℓ ^ i.1) := ⟨primePower_pos ℓ i.1⟩
letI : Fact (0 < ℓ ^ j.1) := ⟨primePower_pos ℓ j.1⟩
change modNCompletedCoeffMap
(n := ℓ ^ i.1) (m := ℓ ^ j.1)
(primePow_dvd_primePow (ℓ := ℓ) hij.1)
(m • (show ZMod (ℓ ^ j.1) from x.1 j)) =
m • (show ZMod (ℓ ^ i.1) from x.1 i)
rw [map_nsmul]
exact congrArg (m • ·) (x.2 i j hij)⟩The prime-power completed coefficient ring carries natural-number scalar multiplication coordinatewise at every finite coefficient stage.
instance instSMulIntPrimePowerCompletedCoeff : SMul ℤ (PrimePowerCompletedCoeff ℓ G) where
smul m x := ⟨fun i => m • (show ZMod (ℓ ^ i.1) from x.1 i), by
intro i j hij
letI : Fact (0 < ℓ ^ i.1) := ⟨primePower_pos ℓ i.1⟩
letI : Fact (0 < ℓ ^ j.1) := ⟨primePower_pos ℓ j.1⟩
change modNCompletedCoeffMap
(n := ℓ ^ i.1) (m := ℓ ^ j.1)
(primePow_dvd_primePow (ℓ := ℓ) hij.1)
(m • (show ZMod (ℓ ^ j.1) from x.1 j)) =
m • (show ZMod (ℓ ^ i.1) from x.1 i)
rw [map_zsmul]
exact congrArg (m • ·) (x.2 i j hij)⟩The prime-power completed coefficient ring carries integer scalar multiplication coordinatewise at every finite coefficient stage.
instance instAddCommGroupPrimePowerCompletedCoeffStage
(i : PrimePowerCompletedGroupAlgebraIndex G) :
AddCommGroup ((primePowerCompletedCoeffSystem ℓ G).X i) := by
dsimp [primePowerCompletedCoeffSystem]
infer_instanceAddition in the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient additions.
instance instAddCommGroupPrimePowerCompletedCoeffFamily :
AddCommGroup
((i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) :=
inferInstanceAddition in the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient additions.
theorem coe_zero_primePowerCompletedCoeff :
((0 : PrimePowerCompletedCoeff ℓ G) :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) = 0The inclusion of the prime-power completed coefficient ring preserves zero.
Show proof
by
funext i
rflProof. Unfold the prime-power completed coefficient ring as the inverse limit over its finite prime-power coefficient stages. Projections, transition maps, arithmetic operations, scalar actions, and coefficient reductions are computed coordinatewise. The finite-stage identities are the corresponding identities in the coefficient rings, and inverse-limit extensionality together with transition compatibility assembles the completed statements.
□theorem coe_add_primePowerCompletedCoeff
(x y : PrimePowerCompletedCoeff ℓ G) :
((x + y : PrimePowerCompletedCoeff ℓ G) :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) = x + yThe inclusion of the prime-power completed coefficient ring preserves addition.
Show proof
by
funext i
rflProof. Unfold the prime-power completed coefficient ring as the inverse limit over its finite prime-power coefficient stages. Projections, transition maps, arithmetic operations, scalar actions, and coefficient reductions are computed coordinatewise. The finite-stage identities are the corresponding identities in the coefficient rings, and inverse-limit extensionality together with transition compatibility assembles the completed statements.
□theorem coe_neg_primePowerCompletedCoeff
(x : PrimePowerCompletedCoeff ℓ G) :
((-x : PrimePowerCompletedCoeff ℓ G) :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) = -xThe inclusion of the prime-power completed coefficient ring preserves negation.
Show proof
by
funext i
rflProof. Unfold the prime-power completed coefficient ring as the inverse limit over its finite prime-power coefficient stages. Projections, transition maps, arithmetic operations, scalar actions, and coefficient reductions are computed coordinatewise. The finite-stage identities are the corresponding identities in the coefficient rings, and inverse-limit extensionality together with transition compatibility assembles the completed statements.
□theorem coe_sub_primePowerCompletedCoeff
(x y : PrimePowerCompletedCoeff ℓ G) :
((x - y : PrimePowerCompletedCoeff ℓ G) :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) = x - yThe inclusion of the prime-power completed coefficient ring preserves subtraction.
Show proof
by
funext i
rflProof. Unfold the prime-power completed coefficient ring as the inverse limit over its finite prime-power coefficient stages. Projections, transition maps, arithmetic operations, scalar actions, and coefficient reductions are computed coordinatewise. The finite-stage identities are the corresponding identities in the coefficient rings, and inverse-limit extensionality together with transition compatibility assembles the completed statements.
□theorem coe_nsmul_primePowerCompletedCoeff
(m : ℕ) (x : PrimePowerCompletedCoeff ℓ G) :
((m • x : PrimePowerCompletedCoeff ℓ G) :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) = m • xThe inclusion of the prime-power completed coefficient ring preserves natural-number scalar multiplication.
Show proof
by
funext i
rflProof. Unfold the prime-power completed coefficient ring as the inverse limit over its finite prime-power coefficient stages. Projections, transition maps, arithmetic operations, scalar actions, and coefficient reductions are computed coordinatewise. The finite-stage identities are the corresponding identities in the coefficient rings, and inverse-limit extensionality together with transition compatibility assembles the completed statements.
□theorem coe_zsmul_primePowerCompletedCoeff
(m : ℤ) (x : PrimePowerCompletedCoeff ℓ G) :
((m • x : PrimePowerCompletedCoeff ℓ G) :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i) = m • xThe inclusion of the prime-power completed coefficient ring preserves integer scalar multiplication.
Show proof
by
funext i
rflProof. Unfold the prime-power completed coefficient ring as the inverse limit over its finite prime-power coefficient stages. Projections, transition maps, arithmetic operations, scalar actions, and coefficient reductions are computed coordinatewise. The finite-stage identities are the corresponding identities in the coefficient rings, and inverse-limit extensionality together with transition compatibility assembles the completed statements.
□instance instAddCommGroupPrimePowerCompletedCoeff :
AddCommGroup (PrimePowerCompletedCoeff ℓ G) :=
Function.Injective.addCommGroup
(fun x : PrimePowerCompletedCoeff ℓ G =>
(x :
(i : PrimePowerCompletedGroupAlgebraIndex G) →
(primePowerCompletedCoeffSystem ℓ G).X i))
Subtype.val_injective
(coe_zero_primePowerCompletedCoeff (ℓ := ℓ) (G := G))
(coe_add_primePowerCompletedCoeff (ℓ := ℓ) (G := G))
(coe_neg_primePowerCompletedCoeff (ℓ := ℓ) (G := G))
(coe_sub_primePowerCompletedCoeff (ℓ := ℓ) (G := G))
(fun x m => coe_nsmul_primePowerCompletedCoeff (ℓ := ℓ) (G := G) m x)
(fun x m => coe_zsmul_primePowerCompletedCoeff (ℓ := ℓ) (G := G) m x)Addition in the prime-power completed coefficient ring is defined coordinatewise through finite-stage coefficient additions.