  
  [1X3 [33X[0;0YSubgroups of [22XPSL_2(ℤ)[122X[101X[1X[133X[101X
  
  [33X[0;0YAnalogous  to  finite-index  subgroups  of  [22XSL_2(ℤ)[122X,  we  define  a new type
  [10XProjectiveModularSubgroup[110X   for   representing  subgroups  of  [22XPSL_2(ℤ)[122X.  It
  consists  essentially  of  two  permutations  [22Xσ_overlineS}[122X  and [22Xσ_overlineT}[122X
  describing  the action of [22XoverlineS[122X and [22XoverlineT[122X on the cosets of the given
  subgroup,  where  [22XoverlineS[122X  and  [22XoverlineT[122X  are  the  images  of [22XS[122X and [22XT[122X in
  [22XPSL_2(ℤ)[122X.[133X
  [33X[0;0YThe  methods  implemented  for [22XPSL_2(ℤ)[122X subgroups are mostly the same as for
  [22XSL_2(ℤ)[122X  subgroups and behave more or less identically. Nevertheless we list
  them here.[133X
  
  
  [1X3.1 [33X[0;0YConstruction of projective modular subgroups[133X[101X
  
  
  [1X3.1-1 [33X[0;0YProjectiveModularSubgroup[133X[101X
  
  [33X[1;0Y[29X[2XProjectiveModularSubgroupViaRightAction[102X( [3Xs[103X, [3Xt[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA projective modular subgroup.[133X
  
  [33X[0;0YConstructs   a   [10XProjectiveModularSubgroup[110X   object   corresponding  to  the
  finite-index subgroup of [22XPSL_2(ℤ)[122X described by the permutations [3Xs[103X and [3Xt[103X.[133X
  [33X[0;0YThis constructor tests if the given permutations actually describe the coset
  action of [22XoverlineS[122X and [22XoverlineT[122X on some subgroup by checking that they act
  transitively and satisfy the relations[133X
  
  
  [24X[33X[0;6Ys^2 = (s t)^3 = 1[133X
  
  [124X
  
  [33X[0;0YUpon   creation,   the   cosets   are   renamed   in   a   standardized  way
  ([7Xhttps://www.gap-system.org/Manuals/doc/ref/chap47.html#X85B882F782D7AFD0[107X)
  to make the internal interaction with extisting [5XGAP[105X methods easier.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroupViaRightAction([127X[104X
    [4X[25X>[125X [27X(1,2)(3,4)(5,6)(7,8)(9,10),[127X[104X
    [4X[25X>[125X [27X(1,4)(2,5,9,10,8)(3,7,6));[127X[104X
    [4X[28X<projective modular subgroup of index 10>[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIf  you  want  to  construct  a  [10XProjectiveModularSubgroup[110X  from  a  list of
  generators,  you  can  lift each generator to a matrix in [22XSL_2(ℤ)[122X, construct
  from   these  a  [10XModularSubgroup[110X,  and  then  project  it  to  [22XPSL_2(ℤ)[122X  via
  [10XProjectivization[110X.[133X
  
  [33X[1;0Y[29X[2XProjectiveModularSubgroupViaLeftAction[102X( [3Xs[103X, [3Xt[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA projective modular subgroup.[133X
  
  [33X[0;0YAnalogous  to  [2XProjectiveModularSubgroupViaRightAction[102X,  but with left coset
  actions.[133X
  
  
  [1X3.2 [33X[0;0YGetters for the coset action[133X[101X
  
  
  [1X3.2-1 [33X[0;0YSAction[133X[101X
  
  [33X[1;0Y[29X[2XSRightAction[102X( [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA permutation.[133X
  
  [33X[0;0YReturns  the  permutation [22Xσ_overlineS}[122X describing the action of [22XoverlineS[122X on
  the right cosets of [3XG[103X.[133X
  
  [33X[1;0Y[29X[2XSLeftAction[102X( [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA permutation.[133X
  
  [33X[0;0YAnalogous to [2XSRightAction[102X, but with left coset actions.[133X
  
  
  [1X3.2-2 [33X[0;0YTAction[133X[101X
  
  [33X[1;0Y[29X[2XTRightAction[102X( [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA permutation.[133X
  
  [33X[0;0YReturns  the  permutation [22Xσ_overlineT}[122X describing the action of [22XoverlineT[122X on
  the right cosets of [3XG[103X.[133X
  
  [33X[1;0Y[29X[2XTLeftAction[102X( [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA permutation.[133X
  
  [33X[0;0YAnalogous to [2XTRightAction[102X, but with left coset actions.[133X
  
  
  [1X3.3 [33X[0;0YComputing with projective modular subgroups[133X[101X
  
  [1X3.3-1 Index[101X
  
  [33X[1;0Y[29X[2XIndex[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA natural number.[133X
  
  [33X[0;0YFor  a  given projective modular subgroup [3XG[103X this method returns its index in
  [22XPSL_2(ℤ)[122X. As [3XG[103X is internally stored as permutations [22X(s,t)[122X this is just[133X
  
        LargestMovedPoint(s,t)
      
  
  [33X[0;0Y(or [22X1[122X if the permutations are trivial).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2),(2,3));[127X[104X
    [4X[28X<projective modular subgroup of index 3>[128X[104X
    [4X[25Xgap>[125X [27XIndex(G);[127X[104X
    [4X[28X3[128X[104X
  [4X[32X[104X
  
  [1X3.3-2 GeneralizedLevel[101X
  
  [33X[1;0Y[29X[2XGeneralizedLevel[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA natural number.[133X
  
  [33X[0;0YThis  method  calculates the general Wohlfahrt level (i.e. the lowest common
  multiple of all cusp widths) of [3XG[103X as defined in [Woh64].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XGeneralizedLevel(G);[127X[104X
    [4X[28X12[128X[104X
  [4X[32X[104X
  
  
  [1X3.3-3 [33X[0;0YCosetRepresentatives[133X[101X
  
  [33X[1;0Y[29X[2XRightCosetRepresentatives[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA list of words.[133X
  
  [33X[0;0YThis  function  returns a list of representatives of the (right) cosets of [3XG[103X
  as words in [22XoverlineS[122X and [22XoverlineT[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2),(2,3));[127X[104X
    [4X[28X<projective modular subgroup of index 3>[128X[104X
    [4X[25Xgap>[125X [27XRightCosetRepresentatives(G);[127X[104X
    [4X[28X[ <identity ...>, S, S*T ][128X[104X
  [4X[32X[104X
  
  [33X[1;0Y[29X[2XLeftCosetRepresentatives[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA list of words.[133X
  
  [33X[0;0YAnalogous to [2XLeftCosetRepresentatives[102X, but with left coset actions.[133X
  
  [1X3.3-4 GeneratorsOfGroup[101X
  
  [33X[1;0Y[29X[2XGeneratorsOfGroup[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA list of words.[133X
  
  [33X[0;0YCalculates  a list of generators (as words in [22XoverlineS[122X and [22XoverlineT[122X) of [3XG[103X.
  This list might include redundant generators.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2)(3,5)(4,6), (1,3)(2,4)(5,6));[127X[104X
    [4X[28X<projective modular subgroup of index 6>[128X[104X
    [4X[25Xgap>[125X [27XGeneratorsOfGroup(G);[127X[104X
    [4X[28X[ T^-2, S*T^-2*S^-1 ][128X[104X
  [4X[32X[104X
  
  [1X3.3-5 IsCongruence[101X
  
  [33X[1;0Y[29X[2XIsCongruence[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YTrue or false.[133X
  
  [33X[0;0YThis  method  test  whether  a  given  modular  subgroup  [3XG[103X  is a congruence
  subgroup.  It  is essentially an implementation of an algorithm described in
  [Hsu96].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,5)(4,6),[127X[104X
    [4X[25X>[125X [27X(1,3)(2,4)(5,6)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 6>[128X[104X
    [4X[25Xgap>[125X [27XIsCongruence(G);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X3.3-6 Cusps[101X
  
  [33X[1;0Y[29X[2XCusps[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA list of rational numbers and infinity.[133X
  
  [33X[0;0YThis  method  computes  a  list  of  inequivalent  cusp representatives with
  respect to [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XCusps(G);[127X[104X
    [4X[28X[ infinity, 0, 1, 2, 3/2, 5/3 ][128X[104X
  [4X[32X[104X
  
  [1X3.3-7 CuspWidth[101X
  
  [33X[1;0Y[29X[2XCuspWidth[102X( [3Xc[103X, [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA natural number.[133X
  
  [33X[0;0YThis  method  takes  as input a cusp [3Xc[103X (a rational number or infinity) and a
  modular group [3XG[103X and calculates the width of this cusp with respect to [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,7)(4,8)(5,9)(6,10)(11,12),[127X[104X
    [4X[25X>[125X [27X(1,3,4)(2,5,6)(7,10,11)(8,12,9)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 12>[128X[104X
    [4X[25Xgap>[125X [27XCuspWidth(-1, G);[127X[104X
    [4X[28X3[128X[104X
    [4X[25Xgap>[125X [27XCuspWidth(infinity, G);[127X[104X
    [4X[28X3[128X[104X
  [4X[32X[104X
  
  [1X3.3-8 CuspsEquivalent[101X
  
  [33X[1;0Y[29X[2XCuspsEquivalent[102X( [3Xp[103X, [3Xq[103X, [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YTrue or false.[133X
  
  [33X[0;0YTakes  two  cusps  [3Xp[103X and [3Xq[103X and a projective modular subgroup [3XG[103X and checks if
  they are equivalent modulo [3XG[103X, i.e. if there exists [22XA ∈ G[122X with [22XAp = q[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,7)(4,8)(5,9)(6,10)(11,12),[127X[104X
    [4X[25X>[125X [27X(1,3,4)(2,5,6)(7,10,11)(8,12,9)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 12>[128X[104X
    [4X[25Xgap>[125X [27XCuspsEquivalent(infinity, 1, G);[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XCuspsEquivalent(-1, 1/2, G);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X3.3-9 CosetRepresentativeOfCusp[101X
  
  [33X[1;0Y[29X[2XCosetRepresentativeOfCusp[102X( [3Xc[103X, [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA word in S and T.[133X
  
  [33X[0;0YFor  a cusp [3Xc[103X this function returns a right coset representative [22XA[122X of [3XG[103X such
  that [22XA ∞[122X and [3Xc[103X are equivalent with respect to [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,7)(4,8)(5,9)(6,10)(11,12),[127X[104X
    [4X[25X>[125X [27X(1,3,4)(2,5,6)(7,10,11)(8,12,9)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 12>[128X[104X
    [4X[25Xgap>[125X [27XCosetRepresentativeOfCusp(4, G);[127X[104X
    [4X[28XT*S[128X[104X
  [4X[32X[104X
  
  [1X3.3-10 LiftToSL2ZEven[101X
  
  [33X[1;0Y[29X[2XLiftToSL2ZEven[102X( [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA modular subgroup.[133X
  
  [33X[0;0YLifts  a given subgroup [3XG[103X of [22XPSL_2(ℤ)[122X to an even subgroup of [22XSL_2(ℤ)[122X, i.e. a
  group that contains [22X-1[122X and whose projection to [22XPSL_2(ℤ)[122X is [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,7)(4,8)(5,9)(6,10)(11,12),[127X[104X
    [4X[25X>[125X [27X(1,3,4)(2,5,6)(7,10,11)(8,12,9)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 12>[128X[104X
    [4X[25Xgap>[125X [27XLiftToSL2ZEven(G);[127X[104X
    [4X[28X<modular subgroup of index 12>[128X[104X
  [4X[32X[104X
  
  [1X3.3-11 LiftToSL2ZOdd[101X
  
  [33X[1;0Y[29X[2XLiftToSL2ZOdd[102X( [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA modular subgroup.[133X
  
  [33X[0;0YLifts  a  given subgroup [3XG[103X of [22XPSL_2(ℤ)[122X to an odd subgroup of [22XSL_2(ℤ)[122X, i.e. a
  group that does not contain [22X-1[122X and whose projection to [22XPSL_2(ℤ)[122X is [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,7)(4,8)(5,9)(6,10)(11,12),[127X[104X
    [4X[25X>[125X [27X(1,3,4)(2,5,6)(7,10,11)(8,12,9)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 12>[128X[104X
    [4X[25Xgap>[125X [27XLiftToSL2ZOdd(G);[127X[104X
    [4X[28X<modular subgroup of index 24>[128X[104X
  [4X[32X[104X
  
  [1X3.3-12 IndexModN[101X
  
  [33X[1;0Y[29X[2XIndexModN[102X( [3XG[103X, [3XN[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA natural number.[133X
  
  [33X[0;0YFor  a  projective  modular  subgroup  [3XG[103X  and a natural number [3XN[103X this method
  calculates the index of the projection [22XbarG[122X of [22XG[122X in [22XPSL_2(ℤ/Nℤ)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XIndexModN(G, 2);[127X[104X
    [4X[28X6[128X[104X
  [4X[32X[104X
  
  [1X3.3-13 Deficiency[101X
  
  [33X[1;0Y[29X[2XDeficiency[102X( [3XG[103X, [3XN[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA natural number.[133X
  
  [33X[0;0YFor  a  projective  modular  subgroup  [3XG[103X  and a natural number [3XN[103X this method
  calculates the so-called [13Xdeficiency[113X of [3XG[103X from being a congruence subgroup of
  level [3XN[103X.[133X
  [33X[0;0YThe  deficiency  of  a finite-index subgroup [22XΓ[122X of [22XPSL_2(ℤ)[122X was introduced in
  [Wei15].  It  is  defined  as  the index [22X[Γ(N) : Γ(N) ∩ Γ][122X where [22XΓ(N)[122X is the
  principal congruence subgroup of level [22XN[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XDeficiency(G, 4);[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [1X3.3-14 Deficiency[101X
  
  [33X[1;0Y[29X[2XDeficiency[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA natural number.[133X
  
  [33X[0;0YShorthand for [10XDeficiency(G, GeneralizedLevel(G))[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XDeficiency(G);[127X[104X
    [4X[28X4[128X[104X
    [4X[25Xgap>[125X [27XDeficiency(G, GeneralizedLevel(G));[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [1X3.3-15 ConjugateGroup[101X
  
  [33X[1;0Y[29X[2XConjugateGroup[102X( [3XG[103X, [3XA[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YA ProjectiveModularSubgroup.[133X
  
  [33X[0;0YFor  an  [22XSL_2(ℤ)[122X  matrix  [3XA[103X, conjugates the group [3XG[103X by (the residue class in
  [22XPSL_2(ℤ)[122X of) [3XA[103X and returns the group [22XA^-1*G*A[122X.[133X
  
  [1X3.3-16 NormalCore[101X
  
  [33X[1;0Y[29X[2XNormalCore[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA projective modular subgroup.[133X
  
  [33X[0;0YCalculates  the normal core of [3XG[103X in [22XPSL_2(ℤ)[122X, i.e. the maximal subgroup of [3XG[103X
  that is normal in [22XPSL_2(ℤ)[122X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XNormalCore(G);[127X[104X
    [4X[28X<projective modular subgroup of index 3456>[128X[104X
  [4X[32X[104X
  
  [1X3.3-17 QuotientByNormalCore[101X
  
  [33X[1;0Y[29X[2XQuotientByNormalCore[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA finite group.[133X
  
  [33X[0;0YCalculates the quotient of [22XPSL_2(ℤ)[122X by the normal core of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XQuotientByNormalCore(G);[127X[104X
    [4X[28X<permutation group with 2 generators>[128X[104X
  [4X[32X[104X
  
  [1X3.3-18 AssociatedCharacterTable[101X
  
  [33X[1;0Y[29X[2XAssociatedCharacterTable[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA character table.[133X
  
  [33X[0;0YReturns the character table of [22XPSL_2(ℤ)/N[122X where [22XN[122X is the normal core of [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup([127X[104X
    [4X[25X>[125X [27X(1,2)(3,6)(4,8)(5,9)(7,11)(10,13)(12,15)(14,17)(16,19)(18,21)(20,23)(22,24),[127X[104X
    [4X[25X>[125X [27X(1,3,7,4)(2,5)(6,9,8,12,14,10)(11,13,16,20,18,15)(17,21,22,19)(23,24)[127X[104X
    [4X[25X>[125X [27X);[127X[104X
    [4X[28X<projective modular subgroup of index 24>[128X[104X
    [4X[25Xgap>[125X [27XAssociatedCharacterTable(G);[127X[104X
    [4X[28XCharacterTable( <permutation group of size 3456 with 2 generators> )[128X[104X
  [4X[32X[104X
  
  [1X3.3-19 IsMatrixElementOf[101X
  
  [33X[1;0Y[29X[2XIsMatrixElementOf[102X( [3XA[103X, [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YTrue or false.[133X
  
  [33X[0;0YThis  function  checks  if  the  image of a given matrix [3XA[103X in [22XPSL_2(ℤ)[122X is an
  element of the group [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2),(2,3));[127X[104X
    [4X[28X<projective modular subgroup of index 3>[128X[104X
    [4X[25Xgap>[125X [27XIsMatrixElementOf([[1,1],[0,1]], G);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsMatrixElementOf([[0,-1],[1,0]], G);[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X3.3-20 IsWordElementOf[101X
  
  [33X[1;0Y[29X[2XIsWordElementOf[102X( [3Xs[103X, [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YTrue or false.[133X
  
  [33X[0;0YThis  function checks if a given string [3Xs[103X represents an element of the group
  [3XG[103X, written in the generators [3XS[103X and [3XT[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2),(2,3));[127X[104X
    [4X[28X<projective modular subgroup of index 3>[128X[104X
    [4X[25Xgap>[125X [27XIsWordElementOf("S^2 * T", G);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X3.3-21 IsElementOf[101X
  
  [33X[1;0Y[29X[2XIsElementOf[102X( [3Xw[103X, [3XG[103X ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10YTrue or false.[133X
  
  [33X[0;0YThis  function checks if a given word [3Xw[103X in the generators [3XS[103X and [3XT[103X represents
  an element of the group [3XG[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2),(2,3));[127X[104X
    [4X[28X<projective modular subgroup of index 3>[128X[104X
    [4X[25Xgap>[125X [27XF := FreeGroup("S", "T");[127X[104X
    [4X[28X<free group on the generators [ S, T ]>[128X[104X
    [4X[25Xgap>[125X [27XS := F.1;[127X[104X
    [4X[28XS[128X[104X
    [4X[25Xgap>[125X [27XT := F.2;[127X[104X
    [4X[28XT[128X[104X
    [4X[25Xgap>[125X [27XPSL2Z := F / ParseRelators([S, T], "S^2, (S*T)^3");[127X[104X
    [4X[28X<fp group on the generators [ S, T ]>[128X[104X
    [4X[25Xgap>[125X [27XS := GeneratorsOfGroup(PSL2Z)[1];[127X[104X
    [4X[28XS[128X[104X
    [4X[25Xgap>[125X [27XT := GeneratorsOfGroup(PSL2Z)[2];[127X[104X
    [4X[28XT[128X[104X
    [4X[25Xgap>[125X [27XIsElementOf(S^2 * T, G);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X3.3-22 Genus[101X
  
  [33X[1;0Y[29X[2XGenus[102X( [3XG[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YA non-negative integer.[133X
  
  [33X[0;0YComputes  the  genus  of  the  quotient  [22XG ∖ ℍ[122X via an algorithm described in
  [Sch04].[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ProjectiveModularSubgroup((1,2),(2,3));[127X[104X
    [4X[28X<projective modular subgroup of index 3>[128X[104X
    [4X[25Xgap>[125X [27XGenus(G);[127X[104X
    [4X[28X0[128X[104X
  [4X[32X[104X
  
