Module

ZModPowerExact.lean

Nyll.GaloisCohomology.ProfiniteIntegers.ZModPowerExact
6 declarations indexed from sourceView source ↗

The kernel of reduction modulo p in a p-power residue ring

Declarations

ZMod.mulPow

Multiplication by p embeds residues modulo p ^ n into residues modulo p ^ (n + 1). This additive map is well-defined even though upward casting is not a ring homomorphism.

Source context 1 command

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ZMod
def mulPow (p n : ℕ) : ZMod (p ^ n) →+ ZMod (p ^ (n + 1))
ZMod.mulPow_intCast
Source context 1 command

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ZMod
theorem mulPow_intCast (p n : ℕ) (a : ℤ) :
    mulPow p n (a : ZMod (p ^ n)) = (p : ZMod (p ^ (n + 1))) * a
ZMod.mulPow_injective
Source context 1 command

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ZMod
theorem mulPow_injective {p : ℕ} (hp : p ≠ 0) (n : ℕ) :
    Function.Injective (mulPow p n)
ZMod.exists_mulPow_eq_of_castHom_eq_zero

The image of multiplication by p is the kernel of reduction modulo p.

Source context 1 command

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ZMod
theorem exists_mulPow_eq_of_castHom_eq_zero (p n : ℕ)
    (z : ZMod (p ^ (n + 1)))
    (hz : ZMod.castHom (pow_dvd_pow p (Nat.succ_le_succ (Nat.zero_le n)))
      (ZMod (p ^ 1)) z = 0) :
    ∃ a : ZMod (p ^ n), mulPow p n a = z
ZMod.mulPow_mul_castHom

Multiplication by p respects multiplication by a coefficient reduced from the larger residue ring.

Source context 1 command

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ZMod
theorem mulPow_mul_castHom (p n : ℕ) (a : ZMod (p ^ (n + 1))) (b : ZMod (p ^ n)) :
    mulPow p n (ZMod.castHom (pow_dvd_pow p (Nat.le_succ n)) (ZMod (p ^ n)) a * b) =
      a * mulPow p n b
ZMod.castHom_mulPow

Reduction commutes with the additive maps given by multiplication by p.

Source context 1 command

Surrounding namespaces, section variables, and local commands at this declaration.

namespace ZMod
theorem castHom_mulPow (p n : ℕ) (a : ZMod (p ^ (n + 1))) :
    ZMod.castHom (pow_dvd_pow p (Nat.le_succ (n + 1))) (ZMod (p ^ (n + 1)))
      (mulPow p (n + 1) a) =
    mulPow p n (ZMod.castHom (pow_dvd_pow p (Nat.le_succ n)) (ZMod (p ^ n)) a)