Documentation

Iwasawalib.NumberTheory.Padics.Units

Structure of ℤₚˣ #

Maybe these should be in mathlib #

theorem Nat.totient_pow_mul_of_prime_of_dvd {p n : } (hp : Prime p) (h : p n) (m : ) :
(p ^ m * n).totient = p ^ m * n.totient
def MonoidHom.equivKerProdRangeOfLeftInverse {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) :
B ≃* f.ker × g.range

If a surjective group homomorphism f : B →* C has a section g : C →* B, then there is a natural isomorphism of B to ker(f) × im(g). We use im(g) instead of C since if B has topology, then both of ker(f) and im(g) will also get topology automatically.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[simp]
    theorem MonoidHom.val_fst_equivKerProdRangeOfLeftInverse_apply {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) (x : B) :
    ((f.equivKerProdRangeOfLeftInverse g hfg) x).1 = x * (g (f x))⁻¹
    @[simp]
    theorem MonoidHom.val_snd_equivKerProdRangeOfLeftInverse_apply {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) (x : B) :
    ((f.equivKerProdRangeOfLeftInverse g hfg) x).2 = g (f x)
    @[simp]
    theorem MonoidHom.equivKerProdRangeOfLeftInverse_symm_apply {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) (x : f.ker × g.range) :
    (f.equivKerProdRangeOfLeftInverse g hfg).symm x = x.1 * x.2
    def MonoidHom.continuousEquivKerProdRangeOfLeftInverse {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) [TopologicalSpace B] [IsTopologicalGroup B] (hc : Continuous (g f)) :
    B ≃ₜ* f.ker × g.range

    Continuous version of equivKerProdRangeOfLeftInverse.

    Equations
    Instances For
      @[simp]
      theorem MonoidHom.val_fst_continuousEquivKerProdRangeOfLeftInverse_apply {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) [TopologicalSpace B] [IsTopologicalGroup B] (hc : Continuous (g f)) (x : B) :
      ((f.continuousEquivKerProdRangeOfLeftInverse g hfg hc) x).1 = x * (g (f x))⁻¹
      @[simp]
      theorem MonoidHom.val_snd_continuousEquivKerProdRangeOfLeftInverse_apply {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) [TopologicalSpace B] [IsTopologicalGroup B] (hc : Continuous (g f)) (x : B) :
      ((f.continuousEquivKerProdRangeOfLeftInverse g hfg hc) x).2 = g (f x)
      @[simp]
      theorem MonoidHom.continuousEquivKerProdRangeOfLeftInverse_symm_apply {B : Type u_1} {C : Type u_2} [CommGroup B] [Group C] (f : B →* C) (g : C →* B) (hfg : Function.LeftInverse f g) [TopologicalSpace B] [IsTopologicalGroup B] (hc : Continuous (g f)) (x : f.ker × g.range) :
      (f.continuousEquivKerProdRangeOfLeftInverse g hfg hc).symm x = x.1 * x.2

      Some silly results for ZMod #

      theorem ZMod.units_eq_one_of_eq_two {q : } (hq : q = 2) (x : (ZMod q)ˣ) :
      x = 1
      theorem ZMod.units_eq_one_or_neg_one_of_eq_three {q : } (hq : q = 3) (x : (ZMod q)ˣ) :
      x = 1 x = -1
      theorem ZMod.units_eq_one_or_neg_one_of_eq_four {q : } (hq : q = 4) (x : (ZMod q)ˣ) :
      x = 1 x = -1
      theorem ZMod.units_eq_one_or_neg_one_of_eq_six {q : } (hq : q = 6) (x : (ZMod q)ˣ) :
      x = 1 x = -1
      theorem ZMod.eq_one_of_eq_two_of_isUnit {q : } (hq : q = 2) (x : ZMod q) (hx : IsUnit x) :
      x = 1
      theorem ZMod.eq_one_or_neg_one_of_eq_three_of_isUnit {q : } (hq : q = 3) (x : ZMod q) (hx : IsUnit x) :
      x = 1 x = -1
      theorem ZMod.eq_one_or_neg_one_of_eq_four_of_isUnit {q : } (hq : q = 4) (x : ZMod q) (hx : IsUnit x) :
      x = 1 x = -1
      theorem ZMod.eq_one_or_neg_one_of_eq_six_of_isUnit {q : } (hq : q = 6) (x : ZMod q) (hx : IsUnit x) :
      x = 1 x = -1

      Teichmüller map #

      The smallest integer n such that the subgroup 1 + pⁿℤₚ of ℤₚˣ is torsion-free. More explicitly, n = 2 if p = 2, and n = 1 otherwise.

      Equations
      Instances For

        The Teichmüller map (ℤ/pⁿℤ)ˣ →* ℤₚˣ where n = 2 if p = 2, and n = 1 otherwise, which maps a to the unique ϕ(pⁿ)-th roots of unity (later we will show that in fact it is the unique roots of unity) in ℤₚ such that it is congruent to a modulo pⁿ.

        Equations
        Instances For

          Subgroups of ℤₚˣ #

          noncomputable def PadicInt.principalUnits (p : ) [Fact (Nat.Prime p)] (n : ) :

          The subgroup 1 + pⁿℤₚ of ℤₚˣ.

          Equations
          Instances For

            The subgroup 1 + pⁿℤₚ of ℤₚˣ where n = 2 if p = 2, and n = 1 otherwise.

            Equations
            Instances For
              noncomputable def PadicInt.torsionUnits (p : ) [Fact (Nat.Prime p)] :

              The subgroup (ℤₚˣ)ₜₒᵣ of torsion elements of ℤₚˣ. Note that for definitionally equal reason, its actual definition is the image of the Teichmüller map. Later we will show that it is indeed equal to the set of torsion elements of ℤₚˣ.

              Equations
              Instances For

                The natural continuous group isomorphism ℤₚˣ ≃ (1 + pⁿℤₚ) × (ℤₚˣ)ₜₒᵣ, where n = 2 if p = 2, and n = 1 otherwise.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  The subgroup 1 + pᵏℤ of (ℤ/pⁿ⁺ᵏℤ)ˣ where k = 2 if p = 2, and k = 1 otherwise #

                  The subgroup 1 + pᵏℤ of (ℤ/pⁿ⁺ᵏℤ)ˣ where k = 2 if p = 2, and k = 1 otherwise.

                  Equations
                  Instances For

                    The element 1 + pᵏ in (ℤ/pⁿ⁺ᵏℤ)ˣ where k = 2 if p = 2, and k = 1 otherwise #

                    The element 1 + pᵏ in the subgroup 1 + pᵏℤ of (ℤ/pⁿ⁺ᵏℤ)ˣ where k = 2 if p = 2, and k = 1 otherwise.

                    Equations
                    Instances For

                      The isomorphism (1 + pⁿℤₚ, *) ≃ (ℤₚ, +) #

                      theorem PadicInt.val_toZModPow_eq_appr (p : ) [Fact (Nat.Prime p)] (x : ℤ_[p]) (i : ) :
                      ((toZModPow i) x).val = x.appr i
                      theorem PadicInt.equivTorsionfreeUnits.toFun_aux (p : ) [Fact (Nat.Prime p)] (x : ℤ_[p]) (i : ) :
                      p ^ i (1 + p ^ torsionfreeUnitsExponent p) ^ x.appr (i + 1) - (1 + p ^ torsionfreeUnitsExponent p) ^ x.appr i
                      noncomputable def PadicInt.equivTorsionfreeUnits.toFun (p : ) [Fact (Nat.Prime p)] (x : ℤ_[p]) :

                      The map ℤₚ → ℤₚ by sending x to the limit of (1 + pᵏ) ^ (x mod pⁿ) as n → ∞, where k = 2 if p = 2, and k = 1 otherwise.

                      Equations
                      Instances For
                        @[simp]
                        theorem PadicInt.equivTorsionfreeUnits.toFun_add (p : ) [Fact (Nat.Prime p)] (x y : ℤ_[p]) :
                        toFun p (x + y) = toFun p x * toFun p y
                        theorem PadicInt.equivTorsionfreeUnits.toFun_surjective (p : ) [Fact (Nat.Prime p)] (x : (torsionfreeUnits p)) :
                        ∃ (y : ℤ_[p]), toFun p y = x

                        The continuous group isomorphism (ℤₚ, +) ≃ (1 + pᵏℤₚ, *) by sending x to the limit of (1 + pᵏ) ^ (x mod pⁿ) as n → ∞, where k = 2 if p = 2, and k = 1 otherwise.

                        Equations
                        Instances For

                          Further results of torsionUnits #