  
  [1m[4m[31m3. Development History[0m
  
  
  [1m[4m[31m3.1 Versions of the package[0m
  
  The  first  version  of  the package, written for [1mGAP[0m~3, formed part of Anne
  Heyworth's thesis [H99] in 1999, but was not made generally available.
  
  Version, [1mkan[0m~0.91, was prepared to run under [1mGAP[0m~4.4.6, in July 2005.
  
  This version, [1mkan[0m~0.94, differs in three ways:
  
  --    this manual is prepared using the [1mGAPDoc[0m package;
  
  --    The  test file [1mkan/tst/kan\_manual.tst[0m sets the [22m[32mAssertionLevel[0m to [22m[32m0[0m to
        avoid recursion in the [1mAutomata[0m package.
  
  --    implementations  of [22m[32mRightCosetsNC[0m and [22m[32mDoubleCosetsNC[0m have been changed
        to [22m[32mRightCosetsAutomaton[0m and [22m[32mDoubleCosetsAutomaton[0m.
  
  
  [1m[4m[31m3.2 What needs doing next?[0m
  
  There are too many items to list here, but some of the most important are as
  follows.
  
  --    Implement iterators and enumerators for double cosets.
  
  --    At  present  the  methods for [22m[32mDoubleCosetsNC[0m and [22m[32mRightCosetsNC[0m in this
        package  return  automata,  rather  than  lists  of  cosets  or  coset
        enumerators. This needs to be fixed.
  
  --    Provide methods for operations such as [22m[32mDoubleCosetRepsAndSizes[0m.
  
  --    Convert the rest of the [1mGAP[0m~3 [1mkan[0m package to [1mGAP[0m~4.
  
  [1m[4m[31m3.2-1 DoubleCosetsAutomaton[0m
  
  [1m[34m> DoubleCosetsAutomaton( [0m[22m[34mG, U, V[0m[1m[34m ) ________________________________[0moperation
  [1m[34m> RightCosetsAutomaton( [0m[22m[34mG, V[0m[1m[34m ) ____________________________________[0moperation
  
  Alternative  methods for [22m[32mDoubleCosetsNC(G,U,V)[0m and [22m[32mRightCosetsNC(G,V)[0m [22m[36mshould
  be[0m  provided  in  the  cases  where the group [22m[32mG[0m has a rewriting system or is
  known  to  be  infinite.  At  present the functions [22m[32mRightCosetsAutomaton[0m and
  [22m[32mDoubleCosetsAutomaton[0m return minimized automata, and [22m[32mIterators[0m for these are
  not yet available.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> F := FreeGroup(2);;[0m
    [22m[35mgap> rels := [ F.2^2, (F.1*F.2)^2 ];;[0m
    [22m[35mgap> G4 := F/rels;;[0m
    [22m[35mgap> genG4 := GeneratorsOfGroup( G4 );;[0m
    [22m[35mgap> a := genG4[1];  b := genG4[2];;[0m
    [22m[35mgap> U := Subgroup( G4, [a^2] );;[0m
    [22m[35mgap> V := Subgroup( G4, [b] );;[0m
    [22m[35mgap> dc4 := DoubleCosetsAutomaton( G4, U, V );;[0m
    [22m[35mgap> Print( dc4 );[0m
    [22m[35mAutomaton("det",5,"HKaAbB",[ [ 2, 2, 2, 5, 2 ], [ 2, 2, 1, 2, 1 ], [ 2, 2, 2, \[0m
    [22m[35m2, 3 ], [ 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2 ] ],[ 4 ],[ 1 ])\[0m
    [22m[35m;;[0m
    [22m[35mgap> rc4 := RightCosetsAutomaton( G4, V );;[0m
    [22m[35mgap> Print( rc4 );[0m
    [22m[35mAutomaton("det",6,"HKaAbB",[ [ 2, 2, 2, 6, 2, 2 ], [ 2, 2, 1, 2, 1, 1 ], [ 2, \[0m
    [22m[35m2, 3, 2, 2, 3 ], [ 2, 2, 2, 2, 5, 5 ], [ 2, 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2, \[0m
    [22m[35m2 ] ],[ 4 ],[ 1 ]);;[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
