  
  [1X4 [33X[0;0YSubgroups of L-presented groups[133X[101X
  
  [33X[0;0YAs  shown  in  [Har11] it is possible to deal with finite index subgroups of
  L-presented    groups    algorithmically.    The    [5Xlpres[105X-package   provides
  straightforward methods to deal with these subgroups.[133X
  
  [33X[0;0YThe   Reidemeister-Schreier  algorithm  from  [Har12]  is  implemented,  and
  computes presentations for such subgroups.[133X
  
  
  [1X4.1 [33X[0;0YCreating a subgroup of an L-presented group[133X[101X
  
  [33X[0;0YThere  are two ways of defining subgroups of finite index of an [3Xlpgroup[103X. The
  first  is  to define the subgroup by its generators while the second defines
  the subgroup by a coset-table. Generators of subgroup of the latter type can
  be computed with the usual Schreier-algorithm.[133X
  
  [1X4.1-1 Subgroup[101X
  
  [33X[1;0Y[29X[2XSubgroup[102X( [3XG[103X, [3Xgens[103X ) [32X function[133X
  
  [33X[0;0Ycreates the subgroup [3XU[103X of [3XG[103X generated by [3Xgens[103X. The Parent value of [3XU[103X will be
  [3XG[103X.[133X
  
  [33X[0;0YFor  example,  the branching subgroup of the Grigorchuk group can be defined
  as  follows,  and  a  presentation  can be computed using [2XIsomorphismLpGroup[102X
  ([14X2.6-4[114X):[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ExamplesOfLPresentations(1);;[127X[104X
    [4X[25Xgap>[125X [27Xa := G.1;; b := G.2;; c := G.3;; d := G.4;;[127X[104X
    [4X[25Xgap>[125X [27XK := Subgroup( G, [ Comm( a, b ), Comm( b^a, d ), Comm( b, d^a ) ] );[127X[104X
    [4X[28XGroup([ a^-1*b^-1*a*b, b^-1*a^-1*d^-1*a*b*a^-1*d*a, a^-1*b^-1*a*d^-1*a^-1*b*a*d ])[128X[104X
    [4X[25Xgap>[125X [27Xiso := IsomorphismLpGroup(K);[127X[104X
    [4X[28X[ a^-1*b^-1*a*b, a^-1*b^-1*a*d^-1*a^-1*b*a*d, b^-1*a^-1*d^-1*a*b*a^-1*d*a ] ->[128X[104X
    [4X[28X[ x1^-1*x13^-1*x12*x3, x1^-1*x13^-1*x12*x8^-1*x22^-1*x23*x24*x11, x3^-1*x12^-1*x18^-1*x29*x21*x1 ][128X[104X
    [4X[25Xgap>[125X [27XRange(iso);[127X[104X
    [4X[28X<LpGroup with 98 generators>[128X[104X
  [4X[32X[104X
  
  [1X4.1-2 SubgroupLpGroupByCosetTable[101X
  
  [33X[1;0Y[29X[2XSubgroupLpGroupByCosetTable[102X( [3XG[103X, [3XTab[103X ) [32X operation[133X
  
  [33X[0;0Ycreates the subgroup [3XU[103X of [3XG[103X which is represented by the coset-table [3XTab[103X.[133X
  
  [33X[0;0YFor  instance, the branching subgroup of the Grigorchuk group can be defined
  by the following coset-table:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XTab := [ [ 2, 1, 6, 9, 10, 3, 11, 12, 4, 5, 7, 8, 15, 16, 13, 14 ],[127X[104X
    [4X[28X  [ 2, 1, 6, 9, 10, 3, 11, 12, 4, 5, 7, 8, 15, 16, 13, 14 ],[128X[104X
    [4X[28X  [ 3, 6, 1, 5, 4, 2, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15 ],[128X[104X
    [4X[28X  [ 3, 6, 1, 5, 4, 2, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15 ],[128X[104X
    [4X[28X  [ 4, 7, 5, 1, 3, 8, 2, 6, 13, 14, 15, 16, 9, 10, 11, 12 ],[128X[104X
    [4X[28X  [ 4, 7, 5, 1, 3, 8, 2, 6, 13, 14, 15, 16, 9, 10, 11, 12 ],[128X[104X
    [4X[28X  [ 5, 8, 4, 3, 1, 7, 6, 2, 14, 13, 16, 15, 10, 9, 12, 11 ],[128X[104X
    [4X[28X  [ 5, 8, 4, 3, 1, 7, 6, 2, 14, 13, 16, 15, 10, 9, 12, 11 ] ][128X[104X
    [4X[25Xgap>[125X [27XU := SubgroupLpGroupByCosetTable( G, Tab );[127X[104X
    [4X[28XGroup(<A>subgroup of L-presented group, no generators known</A>)[128X[104X
    [4X[25Xgap>[125X [27XU = K;[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  generators  of  [3XU[103X  can be computed with the Schreier-algorithm which is
  implemented in the method [2XGeneratorsOfGroup[102X ([14XReference: GeneratorsOfGroup[114X).[133X
  
  
  [1X4.2 [33X[0;0YComputing the index of finite-index subgroups[133X[101X
  
  [33X[0;0YIn principle, it is possible to compute the index of a finite index subgroup
  of  an  [3Xlpgroup[103X  [Har11].  The  method  reduces the case to certain finitely
  presented  groups  by  applying  only  finitely  many  endomorphisms  to the
  iterated  relations.  It  then uses coset enumeration for finitely presented
  groups  to compute an upper bound on the index of the subgroup. If the coset
  enumeration for finitely presented groups terminated, the method attempts to
  prove  that  the  upper  bound  is  sharp.  For  further details we refer to
  [Har11].[133X
  
  [1X4.2-1 IndexInWholeGroup[101X
  
  [33X[1;0Y[29X[2XIndexInWholeGroup[102X( [3XH[103X ) [32X method[133X
  [33X[1;0Y[29X[2XFactorCosetAction[102X( [3XG[103X, [3XH[103X ) [32X method[133X
  
  [33X[0;0YThe  first  command  attempts to compute the index of [3XH[103X in its parent group.
  The second one gives the permutation action of [3XG[103X on the right cosets of [3XH[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ExamplesOfLPresentations(1);;[127X[104X
    [4X[25Xgap>[125X [27Xa := G.1;; b := G.2;; c := G.3;; d := G.4;;[127X[104X
    [4X[25Xgap>[125X [27XK := Subgroup( G, [ Comm(a,b), Comm( b, d^a ), Comm( b^a, d )] );;[127X[104X
    [4X[25Xgap>[125X [27XIndexInWholeGroup( K );[127X[104X
    [4X[28X16[128X[104X
    [4X[25Xgap>[125X [27XFactorCosetAction( G, K );[127X[104X
    [4X[28X[ a, b, c, d ] -> [ (1,2)(3,6)(4,9)(5,10)(7,11)(8,12)(13,15)(14,16),[128X[104X
    [4X[28X  (1,3)(2,6)(4,5)(7,8)(9,10)(11,12)(13,14)(15,16), (1,4)(2,7)(3,5)(6,8)(9,13)(10,14)(11,15)(12,16),[128X[104X
    [4X[28X  (1,5)(2,8)(3,4)(6,7)(9,14)(10,13)(11,16)(12,15) ][128X[104X
  [4X[32X[104X
  
  [1X4.2-2 Index[101X
  
  [33X[1;0Y[29X[2XIndex[102X( [3XH[103X, [3XI[103X ) [32X method[133X
  
  [33X[0;0Yattempts to compute the index of [3XI[103X in the subgroup [3XH[103X. The subgroup [3XI[103X must be
  contained in [3XH[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG := ExamplesOfLPresentations(1);;[127X[104X
    [4X[25Xgap>[125X [27Xa := G.1;; b := G.2;; c := G.3;; d := G.4;;[127X[104X
    [4X[25Xgap>[125X [27XK := Subgroup( G, [ Comm(a,b), Comm( b, d^a ), Comm( b^a, d )] );;[127X[104X
    [4X[25Xgap>[125X [27XKxK := Subgroup( G, [ Comm(b,d^a), Comm(b^a,d), Comm(d^a,c^(a*c)),                         [127X[104X
    [4X[28X</A> Comm( d^(a*c), c^a), Comm( d, c^(a*c*a) ), Comm( d^(a*c*a), c) ] );;[128X[104X
    [4X[25Xgap>[125X [27XIndex( K, KxK );[127X[104X
    [4X[28X4[128X[104X
  [4X[32X[104X
  
  [1X4.2-3 CosetTableInWholeGroup[101X
  
  [33X[1;0Y[29X[2XCosetTableInWholeGroup[102X( [3XH[103X ) [32X method[133X
  
  [33X[0;0Ycomputes a coset-table for the subgroup [3XH[103X in its parent group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XCosetTableInWholeGroup( K );[127X[104X
    [4X[28X[ [ 2, 1, 6, 9, 10, 3, 11, 12, 4, 5, 7, 8, 15, 16, 13, 14 ],[128X[104X
    [4X[28X  [ 2, 1, 6, 9, 10, 3, 11, 12, 4, 5, 7, 8, 15, 16, 13, 14 ],[128X[104X
    [4X[28X  [ 3, 6, 1, 5, 4, 2, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15 ],[128X[104X
    [4X[28X  [ 3, 6, 1, 5, 4, 2, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15 ],[128X[104X
    [4X[28X  [ 4, 7, 5, 1, 3, 8, 2, 6, 13, 14, 15, 16, 9, 10, 11, 12 ],[128X[104X
    [4X[28X  [ 4, 7, 5, 1, 3, 8, 2, 6, 13, 14, 15, 16, 9, 10, 11, 12 ],[128X[104X
    [4X[28X  [ 5, 8, 4, 3, 1, 7, 6, 2, 14, 13, 16, 15, 10, 9, 12, 11 ],[128X[104X
    [4X[28X  [ 5, 8, 4, 3, 1, 7, 6, 2, 14, 13, 16, 15, 10, 9, 12, 11 ] ][128X[104X
  [4X[32X[104X
  
  
  [1X4.3 [33X[0;0YTechnical details[133X[101X
  
  [33X[0;0YFor  performance issues the following global variables can be used to modify
  the behaviour of the coset enumeration:[133X
  
  [1X4.3-1 LPRES_TCSTART[101X
  
  [33X[1;0Y[29X[2XLPRES_TCSTART[102X[32X global variable[133X
  
  [33X[0;0Ydefines  the  maximal  word-length of endomorphisms in the free monoid which
  are applied to the iterated relations.[133X
  
  [1X4.3-2 LPRES_CosetEnumerator[101X
  
  [33X[1;0Y[29X[2XLPRES_CosetEnumerator[102X[32X global variable[133X
  
  [33X[0;0Ydefines the coset enumeration process used for finitely presented groups. It
  should  be  a  function  which  take  as  input  a  subgroup [3Xh[103X of a finitely
  presented  group  and  it  computes  a  coset  table in the whole group. The
  default uses the following method of the [5XACE[105X-package[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28Xfunction ( h )[128X[104X
    [4X[28X    local  f, rels, gens;[128X[104X
    [4X[28X    f := FreeGeneratorsOfFpGroup( Parent( h ) );[128X[104X
    [4X[28X    rels := RelatorsOfFpGroup( Parent( h ) );[128X[104X
    [4X[28X    gens := List( GeneratorsOfGroup( h ), UnderlyingElement );[128X[104X
    [4X[28X    return ACECosetTable( f, rels, gens : silent := true,[128X[104X
    [4X[28X        hard := true,[128X[104X
    [4X[28X        max := 10 ^ 8,[128X[104X
    [4X[28X        Wo := 10 ^ 8 );[128X[104X
  [4X[32X[104X
  
  [33X[0;0YIf  the  [5XACE[105X-package is not available, the library coset enumeration process
  is used.[133X
  
