Documentation

TauCeti.LinearAlgebra.RootSystem.Isogeny.Power

Powers of an isogeny of a root pairing with itself #

An isogeny of a root pairing with itself can be composed with itself, and the Suzuki and Ree groups are cut out by the odd powers of a special isogeny rather than by the isogeny itself. This file gives the isogenies of a fixed root pairing with itself their monoid structure under composition, so that f ^ n is available with the whole Monoid API, and computes the square of a power of a special isogeny.

The monoid is the one composition already determines: TauCeti.RootPairingIsogeny.comp is associative with TauCeti.RootPairingIsogeny.id as a two-sided unit, and nothing new is proved to put it together. What the monoid buys is the identity

f ^ n * f ^ n = smulId P (c ^ n)      whenever      f * f = smulId P c,

TauCeti.RootPairingIsogeny.pow_mul_self_eq_smulId, which is pure monoid algebra: f ^ n * f ^ n is (f * f) ^ n. Read at c the defining characteristic and n odd, this is the root-datum form of steinberg (m) ^ 2 = Frob_(p ^ (2 * m + 1)) for steinberg (m) = τ ^ (2 * m + 1). It is stated for every n, since the restriction to odd exponents belongs to the finite-group construction and not to this identity.

All three of the weight map, the coweight map and the index bijection are monoid homomorphisms out of this monoid, the coweight map into the opposite endomorphism monoid because comp reverses on that component. These declarations adapt the Mathlib API RootPairing.Hom.weightHom, RootPairing.Hom.coweightHom and RootPairing.Hom.indexHom for the endomorphism monoid of a root pairing, and the powers of all three components are map_pow.

Two further maps into the monoid are recorded because the Steinberg endomorphisms of the twisted families are built from them: the automorphisms of the root pairing land in it multiplicatively, TauCeti.RootPairingIsogeny.ofEquivHom, and the scalings are central in it, TauCeti.RootPairingIsogeny.commute_smulId. Together they let a power of an automorphism times a scaling be separated into a power of each.

The same hypothesis also splits the powers themselves: an even power is a scaling, and an odd power is a scaling times f, so an odd power permutes the roots exactly as f does while multiplying its exponents and its weight and coweight maps by c ^ m. The three special isogenies of B₂, G₂ and F₄ are the instance this exists for; their power relations are in TauCeti/LinearAlgebra/RootSystem/Isogeny/Special.lean, where they join the square relations they come from.

Main definitions #

Main results #

References #

The odd powers of the special isogeny are what milestone L2 of TauCetiRoadmap/CFSGStatement/README.md asks for, "steinberg(m) = τ_X ^ (2m + 1), steinberg(m) ^ 2 = Frob_(p ^ (2m + 1))", once the special isogeny itself has been lifted from root data to the pinned group schemes of Layer 9 of TauCetiRoadmap/ReductiveGroups/README.md.

The composition monoid #

@[instance_reducible]
instance TauCeti.RootPairingIsogeny.instMonoid {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} :

The isogenies of a root pairing with itself form a monoid under composition, with the identity isogeny as unit. Multiplication is composition in the same order as TauCeti.RootPairingIsogeny.comp, so f * g applies g first.

Equations
  • One or more equations did not get rendered due to their size.
theorem TauCeti.RootPairingIsogeny.mul_def {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f g : RootPairingIsogeny P P) :
f * g = f.comp g
theorem TauCeti.RootPairingIsogeny.one_def {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} :
1 = id P
@[simp]
theorem TauCeti.RootPairingIsogeny.weightMap_mul {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f g : RootPairingIsogeny P P) :
@[simp]
theorem TauCeti.RootPairingIsogeny.coweightMap_mul {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f g : RootPairingIsogeny P P) :
@[simp]
theorem TauCeti.RootPairingIsogeny.indexEquiv_mul {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f g : RootPairingIsogeny P P) :
@[simp]
theorem TauCeti.RootPairingIsogeny.exponent_mul {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f g : RootPairingIsogeny P P) (i : ι) :
(f * g).exponent i = g.exponent i * f.exponent (g.indexEquiv i)
@[simp]
theorem TauCeti.RootPairingIsogeny.weightMap_one {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} :
@[simp]
theorem TauCeti.RootPairingIsogeny.coweightMap_one {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} :
@[simp]
theorem TauCeti.RootPairingIsogeny.indexEquiv_one {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} :
@[simp]
theorem TauCeti.RootPairingIsogeny.exponent_one {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (i : ι) :
exponent 1 i = 1
def TauCeti.RootPairingIsogeny.ofEquivHom {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] (P : RootPairing ι R M N) :

The automorphisms of a root pairing sit inside its monoid of endo-isogenies, as a monoid homomorphism: an automorphism is an isogeny with every exponent 1, and composition agrees on the two sides.

Equations
Instances For
    @[simp]
    theorem TauCeti.RootPairingIsogeny.ofEquivHom_apply {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : P.Aut) :
    @[simp]
    theorem TauCeti.RootPairingIsogeny.ofEquiv_pow {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : P.Aut) (n : ℕ) :
    ofEquiv (f ^ n) = ofEquiv f ^ n

    An automorphism and the isogeny it becomes have the same powers, since TauCeti.RootPairingIsogeny.ofEquiv is multiplicative.

    The multiplicative components #

    def TauCeti.RootPairingIsogeny.weightHom {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] (P : RootPairing ι R M N) :

    The weight map of an isogeny, as a monoid homomorphism into the endomorphism monoid of the weight space.

    Equations
    Instances For
      @[simp]
      theorem TauCeti.RootPairingIsogeny.weightHom_apply {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) :
      @[simp]
      theorem TauCeti.RootPairingIsogeny.weightMap_pow {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) (n : ℕ) :
      (f ^ n).weightMap = f.weightMap ^ n

      The weight map of a power of an isogeny is the corresponding power of its weight map.

      def TauCeti.RootPairingIsogeny.coweightHom {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] (P : RootPairing ι R M N) :

      The coweight map of an isogeny, as a monoid homomorphism into the opposite of the endomorphism monoid of the coweight space. Composition reverses on this component, exactly as for RootPairing.Hom.coweightHom.

      Equations
      Instances For
        @[simp]
        theorem TauCeti.RootPairingIsogeny.coweightHom_apply {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) :
        @[simp]
        theorem TauCeti.RootPairingIsogeny.coweightMap_pow {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) (n : ℕ) :

        The coweight map of a power of an isogeny is the corresponding power of its coweight map. The reversal in TauCeti.RootPairingIsogeny.coweightHom is immaterial here, since the two factors of f ^ (n + 1) are the same map.

        def TauCeti.RootPairingIsogeny.indexHom {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] (P : RootPairing ι R M N) :

        The index bijection of an isogeny, as a monoid homomorphism into the permutation group of the index set.

        Equations
        Instances For
          @[simp]
          theorem TauCeti.RootPairingIsogeny.indexHom_apply {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) :
          @[simp]
          theorem TauCeti.RootPairingIsogeny.indexEquiv_pow {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) (n : ℕ) :

          The index bijection of a power of an isogeny is the corresponding power of its index bijection.

          theorem TauCeti.RootPairingIsogeny.exponent_pow_succ {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) (n : ℕ) (i : ι) :
          (f ^ (n + 1)).exponent i = f.exponent i * (f ^ n).exponent (f.indexEquiv i)

          The exponent of a power of an isogeny, in terms of the exponents of the lower power.

          @[simp]
          theorem TauCeti.RootPairingIsogeny.exponent_pow {ι : Type u_1} {R : Type u_2} {M : Type u_3} {N : Type u_4} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : RootPairing ι R M N} (f : RootPairingIsogeny P P) (k : ℕ) (i : ι) :
          (f ^ k).exponent i = ∏ j ∈ Finset.range k, f.exponent ((f.indexEquiv ^ j) i)

          The exponent of an iterate accumulates along the forward orbit of the index bijection. Unlike the other three fields the exponent is not multiplicative: the exponent of a composite at an index is the product of the exponents met at the successive images of that index.

          The scalings #

          @[simp]
          @[simp]
          theorem TauCeti.RootPairingIsogeny.smulId_mul_smulId {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) (c d : ℕ+) :
          smulId P c * smulId P d = smulId P (c * d)

          The scalings of a root pairing, as a monoid homomorphism out of the positive integers. At a prime this picks out the root-datum shadow of the Frobenius isogeny.

          Equations
          Instances For
            @[simp]
            @[simp]
            theorem TauCeti.RootPairingIsogeny.smulId_pow {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) (c : ℕ+) (n : ℕ) :
            smulId P c ^ n = smulId P (c ^ n)

            A power of a scaling is the scaling by the corresponding power.

            A scaling is central in the monoid of endo-isogenies, the monoid form of TauCeti.RootPairingIsogeny.comp_smulId. Since a scaling at a prime power q is the root-datum shadow of the q-power Frobenius, this is the root-datum form of the fact that a Frobenius commutes with every endomorphism of the datum.

            theorem TauCeti.RootPairingIsogeny.pow_two_mul_eq_smulId {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (m : ℕ) :
            f ^ (2 * m) = smulId P (c ^ m)

            An even power of an isogeny whose square is a scaling is itself a scaling.

            theorem TauCeti.RootPairingIsogeny.pow_mul_self_eq_smulId {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (n : ℕ) :
            f ^ n * f ^ n = smulId P (c ^ n)

            A power of an isogeny whose square is a scaling squares to the corresponding power of that scaling. For c the defining characteristic and n = 2 * m + 1, this is the root-datum form of the relation steinberg (m) ^ 2 = Frob_(p ^ (2 * m + 1)) satisfied by the odd powers of a special isogeny; the identity itself holds at every exponent.

            theorem TauCeti.RootPairingIsogeny.pow_two_mul_add_one_eq_smulId_mul {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (m : ℕ) :
            f ^ (2 * m + 1) = smulId P (c ^ m) * f

            An odd power of an isogeny whose square is a scaling is a scaling times the isogeny. This is what makes the odd powers genuinely new maps rather than scalings: the factor f survives.

            theorem TauCeti.RootPairingIsogeny.indexEquiv_pow_two_mul_add_one {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (m : ℕ) :
            (f ^ (2 * m + 1)).indexEquiv = f.indexEquiv

            An odd power of an isogeny whose square is a scaling permutes the roots exactly as the isogeny does, since a scaling fixes every index.

            theorem TauCeti.RootPairingIsogeny.exponent_pow_two_mul_add_one {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (m : ℕ) (i : ι) :
            (f ^ (2 * m + 1)).exponent i = f.exponent i * ↑↑c ^ m

            The rescaling exponents of an odd power are those of the isogeny times c ^ m.

            Read at a special isogeny in characteristic p, so at c = p: the exponent field is indexed by the source of the character map, and is 1 at a short simple root and p at a long one (TauCeti.DynkinType.b2SpecialIsogeny_exponent_typeBSimpleIndex_eq_one_iff), so the odd power has exponent p ^ m at a short simple root and p ^ (m + 1) at a long one.

            theorem TauCeti.RootPairingIsogeny.weightMap_pow_two_mul_add_one {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (m : ℕ) :
            (f ^ (2 * m + 1)).weightMap = ↑c ^ m • f.weightMap

            The weight map of an odd power is c ^ m times that of the isogeny.

            theorem TauCeti.RootPairingIsogeny.coweightMap_pow_two_mul_add_one {ι : Type u_1} {M : Type u_3} {N : Type u_4} [AddCommGroup M] [AddCommGroup N] [Module.Free ℤ M] [Module.Finite ℤ M] [Module.Free ℤ N] [Module.Finite ℤ N] (P : RootPairing ι ℤ M N) {f : RootPairingIsogeny P P} {c : ℕ+} (h : f * f = smulId P c) (m : ℕ) :
            (f ^ (2 * m + 1)).coweightMap = ↑c ^ m • f.coweightMap

            The coweight map of an odd power is c ^ m times that of the isogeny. Composition reverses on this component, but a scaling is central, so the formula is the same as for the weight map.