Documentation

Iwasawalib.NumberTheory.Padics.ForMathlib

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