  
  [1X3. Development History[0X
  
  
  [1X3.1 Versions of the package[0X
  
  The  first  version  of  the package, written for [5XGAP[0X 3, formed part of Anne
  Heyworth's thesis [Hey99] in 1999, but was not made generally available.
  
  Version, [5Xkan[0X 0.91, was prepared to run under [5XGAP[0X 4.4.6, in July 2005.
  
  Version, [5Xkan[0X 0.94, differed in two significant ways:
  
  --    this manual is prepared using the [5XGAPDoc[0X package;
  
  --    the  test file [11Xkan/tst/kan\_manual.tst[0X sets the [10XAssertionLevel[0X to [10X0[0X to
        avoid recursion in the [5XAutomata[0X package.
  
  The  latest  version,  [5Xkan[0X  0.95,  of  9th  October  2007,  just  fixed file
  protections and added a [11XCHANGES[0X file.
  
  
  [1X3.2 What needs doing next?[0X
  
  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 [10XDoubleCosetsNC[0X and [10XRightCosetsNC[0X in this
        package  return  automata,  rather  than  lists  of  cosets  or  coset
        enumerators. This needs to be fixed.
  
  --    Provide methods for operations such as [10XDoubleCosetRepsAndSizes[0X.
  
  --    Convert the rest of the [5XGAP[0X 3 [5Xkan[0X package to [5XGAP[0X 4.
  
  [1X3.2-1 DoubleCosetsAutomaton[0X
  
  [2X> DoubleCosetsAutomaton( [0X[3XG, U, V[0X[2X ) ________________________________[0Xoperation
  [2X> RightCosetsAutomaton( [0X[3XG, V[0X[2X ) ____________________________________[0Xoperation
  
  Alternative  methods for [10XDoubleCosetsNC(G,U,V)[0X and [10XRightCosetsNC(G,V)[0X [13Xshould
  be[0X  provided  in  the  cases  where the group [10XG[0X has a rewriting system or is
  known  to  be  infinite.  At  present the functions [10XRightCosetsAutomaton[0X and
  [10XDoubleCosetsAutomaton[0X return minimized automata, and [10XIterators[0X for these are
  not yet available.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4X[0X
    [4Xgap> F := FreeGroup(2);;[0X
    [4Xgap> rels := [ F.2^2, (F.1*F.2)^2 ];;[0X
    [4Xgap> G4 := F/rels;;[0X
    [4Xgap> genG4 := GeneratorsOfGroup( G4 );;[0X
    [4Xgap> a := genG4[1];  b := genG4[2];;[0X
    [4Xgap> U := Subgroup( G4, [a^2] );;[0X
    [4Xgap> V := Subgroup( G4, [b] );;[0X
    [4Xgap> dc4 := DoubleCosetsAutomaton( G4, U, V );;[0X
    [4Xgap> Print( dc4 );[0X
    [4XAutomaton("det",5,"HKaAbB",[ [ 2, 2, 2, 5, 2 ], [ 2, 2, 1, 2, 1 ], [ 2, 2, 2, \[0X
    [4X2, 3 ], [ 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2 ] ],[ 4 ],[ 1 ])\[0X
    [4X;;[0X
    [4Xgap> rc4 := RightCosetsAutomaton( G4, V );;[0X
    [4Xgap> Print( rc4 );[0X
    [4XAutomaton("det",6,"HKaAbB",[ [ 2, 2, 2, 6, 2, 2 ], [ 2, 2, 1, 2, 1, 1 ], [ 2, \[0X
    [4X2, 3, 2, 2, 3 ], [ 2, 2, 2, 2, 5, 5 ], [ 2, 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2, \[0X
    [4X2 ] ],[ 4 ],[ 1 ]);;[0X
    [4X[0X
  [4X------------------------------------------------------------------[0X
  
