Documentation

Mathlib.NumberTheory.ModularForms.ArithmeticSubgroups

Arithmetic subgroups of GL(2, โ„) #

We define a subgroup of GL (Fin 2) โ„ to be arithmetic if it is commensurable with the image of SL(2, โ„ค).

class Subgroup.HasDetPlusMinusOne {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ : Subgroup (GL n R)) :

Typeclass saying that a subgroup of GL(2, โ„) has determinant contained in {ยฑ1}. Necessary so that the typeclass system can detect when the slash action is multiplicative.

Instances
    theorem Subgroup.HasDetPlusMinusOne.abs_det {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] {ฮ“ : Subgroup (GL n R)} [LinearOrder R] [IsOrderedRing R] [ฮ“.HasDetPlusMinusOne] {g : GL n R} (hg : g โˆˆ ฮ“) :
    theorem Subgroup.hasDetPlusMinusOne_iff_abs_det {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ : Subgroup (GL n R)) [LinearOrder R] [IsOrderedRing R] :
    ฮ“.HasDetPlusMinusOne โ†” โˆ€ {g : GL n R}, g โˆˆ ฮ“ โ†’ |โ†‘(Matrix.GeneralLinearGroup.det g)| = 1
    class Subgroup.HasDetOne {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ : Subgroup (GL n R)) :

    Typeclass saying that a subgroup of GL(n, R) is contained in SL(n, R). Necessary so that the typeclass system can detect when the slash action is โ„‚-linear.

    Instances
      instance Subgroup.instHasDetPlusMinusOneOfHasDetOne {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ : Subgroup (GL n R)) [ฮ“.HasDetOne] :
      instance Subgroup.instHasDetOneMinGeneralLinearGroup {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ ฮ“' : Subgroup (GL n R)) [ฮ“.HasDetOne] :
      (ฮ“ โŠ“ ฮ“').HasDetOne
      instance Subgroup.instHasDetOneMinGeneralLinearGroup_1 {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ ฮ“' : Subgroup (GL n R)) [ฮ“.HasDetOne] :
      (ฮ“' โŠ“ ฮ“).HasDetOne
      instance Subgroup.instHasDetOneHSMulConjActGeneralLinearGroup {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (ฮ“ : Subgroup (GL n R)) [ฮ“.HasDetOne] (g : ConjAct (GL n R)) :
      noncomputable def Subgroup.detOnePart {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (G : Subgroup (GL n R)) :
      Subgroup (GL n R)

      The determinant-one part of a subgroup of GL(2, โ„).

      Equations
      Instances For
        @[simp]
        theorem Subgroup.detOnePart_le {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_2} [CommRing R] (G : Subgroup (GL n R)) :

        The image of the modular group SL(2, โ„ค), as a subgroup of GL(2, โ„).

        Equations
        Instances For
          @[instance_reducible]

          Coercion from subgroups of SL(2, โ„ค) to subgroups of GL(2, โ„) by mapping along the obvious inclusion homomorphism.

          Equations
          class Subgroup.IsArithmetic (๐’ข : Subgroup (GL (Fin 2) โ„)) :

          A subgroup of GL(2, โ„) is arithmetic if it is commensurable with the image of SL(2, โ„ค).

          Instances

            If ฮ“ is arithmetic, its preimage in SL(2, โ„ค) has finite index.

            instance Subgroup.IsArithmetic.inter {ฮ“ ฮ“' : Subgroup (GL (Fin 2) โ„)} [ฮ“.IsArithmetic] [ฮ“'.IsArithmetic] :
            (ฮ“ โŠ“ ฮ“').IsArithmetic

            The determinant-one part of an arithmetic subgroup is arithmetic.

            Conjugation by an element of an arithmetic group preserves arithmeticity.

            The image of SL(n, โ„ค) in GL(n, โ„) is discrete.

            The image of SL(n, โ„ค) in SL(n, โ„) is discrete.

            instance Subgroup.IsArithmetic.discreteTopology {๐’ข : Subgroup (GL (Fin 2) โ„)} [๐’ข.IsArithmetic] :
            DiscreteTopology โ†ฅ๐’ข

            Arithmetic subgroups of GL(2, โ„) are discrete.

            def Subgroup.adjoinNegOne {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :

            Given a subgroup ๐’ข of a group with compatible negation, this is the subgroup generated by ๐’ข and -1.

            Equations
            Instances For
              @[simp]
              theorem Subgroup.mem_adjoinNegOne_iff {G : Type u_2} [Group G] [HasDistribNeg G] {๐’ข : Subgroup G} {g : G} :
              g โˆˆ ๐’ข.adjoinNegOne โ†” g โˆˆ ๐’ข โˆจ -g โˆˆ ๐’ข
              theorem Subgroup.le_adjoinNegOne {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :
              ๐’ข โ‰ค ๐’ข.adjoinNegOne
              theorem Subgroup.neg_one_mem_adjoinNegOne {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :
              -1 โˆˆ ๐’ข.adjoinNegOne
              @[deprecated Subgroup.neg_one_mem_adjoinNegOne (since := "2026-09-14")]
              theorem Subgroup.negOne_mem_adjoinNegOne {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :
              -1 โˆˆ ๐’ข.adjoinNegOne

              Alias of Subgroup.neg_one_mem_adjoinNegOne.

              @[simp]
              theorem Subgroup.adjoinNegOne_eq_self_iff {G : Type u_2} [Group G] [HasDistribNeg G] {๐’ข : Subgroup G} :
              ๐’ข.adjoinNegOne = ๐’ข โ†” -1 โˆˆ ๐’ข
              theorem Subgroup.relIndex_adjoinNegOne_eq_two {G : Type u_2} [Group G] [HasDistribNeg G] {๐’ข : Subgroup G} (h๐’ข : -1 โˆ‰ ๐’ข) :
              ๐’ข.relIndex ๐’ข.adjoinNegOne = 2
              @[deprecated Subgroup.relIndex_adjoinNegOne_eq_two (since := "2026-09-14")]
              theorem Subgroup.relindex_adjoinNegOne_eq_two {G : Type u_2} [Group G] [HasDistribNeg G] {๐’ข : Subgroup G} (h๐’ข : -1 โˆ‰ ๐’ข) :
              ๐’ข.relIndex ๐’ข.adjoinNegOne = 2

              Alias of Subgroup.relIndex_adjoinNegOne_eq_two.

              theorem Subgroup.relIndex_adjoinNegOne_ne_zero {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :
              ๐’ข.relIndex ๐’ข.adjoinNegOne โ‰  0
              instance Subgroup.instIsFiniteRelIndexAdjoinNegOne {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :
              ๐’ข.IsFiniteRelIndex ๐’ข.adjoinNegOne
              theorem Subgroup.commensurable_adjoinNegOne_self {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) :
              ๐’ข.adjoinNegOne.Commensurable ๐’ข
              theorem Subgroup.map_adjoinNegOne {G : Type u_2} [Group G] [HasDistribNeg G] {H : Type u_3} [Group H] [HasDistribNeg H] (๐’ข : Subgroup G) (f : G โ†’* H) (hf : โˆ€ (g : G), f (-g) = -f g) :
              map f ๐’ข.adjoinNegOne = (map f ๐’ข).adjoinNegOne

              Adjoining -1 commutes with taking images under a homomorphism that preserves negation.

              theorem Subgroup.adjoinNegOne_mono {G : Type u_2} [Group G] [HasDistribNeg G] {๐’ข โ„‹ : Subgroup G} (h : ๐’ข โ‰ค โ„‹) :

              Adjoining -1 preserves inclusion.

              theorem Subgroup.adjoinNegOne_conj {G : Type u_2} [Group G] [HasDistribNeg G] (๐’ข : Subgroup G) (g : ConjAct G) :
              (g โ€ข ๐’ข).adjoinNegOne = g โ€ข ๐’ข.adjoinNegOne

              Adjoining -1 commutes with conjugation.

              @[simp]
              theorem Subgroup.hasDetOne_adjoinNegOne_iff {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_3} [CommRing R] {๐’ข : Subgroup (GL n R)} (hn : Even (Fintype.card n)) :
              ๐’ข.adjoinNegOne.HasDetOne โ†” ๐’ข.HasDetOne
              instance instHasDetOneAdjoinNegOneGeneralLinearGroupOfFactEvenNatCard {n : Type u_1} [Fintype n] [DecidableEq n] {R : Type u_3} [CommRing R] {๐’ข : Subgroup (GL n R)} [๐’ข.HasDetOne] [Fact (Even (Fintype.card n))] :