GAP (Kan) - Chapter 3: Development History

Goto Chapter: Top 1 2 3 Bib Ind
[Top of Book] [Contents] [Previous Chapter] [Next Chapter]

[MathJax on]

3 Development History
3.1 Versions of the package
3.2 What needs doing next?
3.2-1 DoubleCosetsAutomaton

### 3 Development History

#### 3.1 Versions of the package

The first version of the package, written for GAP 3, formed part of Anne Heyworth's thesis [Hey99] in 1999, but was not made generally available.

Version 0.91 was prepared to run under GAP 4.4.6, in July 2005.

Version 0.94 differed in two significant ways.

- The manual was produced using the GAPDoc package.

- The test file `kan/tst/kan_manual.tst` set the `AssertionLevel` to `0` to avoid recursion in the Automata package.

Version 1.11, of December 2014 was required when the Kan website moved yet again. At the same time a bitbucket repository for the package was started.

Kan became an accepted GAP package in May 2015.

Version 1.28, of May 2017, saw a great many changes to the examples, with the various rewriting systems used to perform reduction of words to reduced form.

#### 3.2 What needs doing next?

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 `DoubleCosetsNC` and `RightCosetsNC` in this package return automata, rather than lists of cosets or coset enumerators. This needs to be fixed.

- Provide methods for operations such as `DoubleCosetRepsAndSizes`.

- Convert the rest of the original GAP 3 version of Kan to GAP 4.

##### 3.2-1 DoubleCosetsAutomaton

`‣ DoubleCosetsAutomaton`( G, U, V ) | ( operation )

`‣ RightCosetsAutomaton`( G, V ) | ( operation )

Alternative methods for `DoubleCosetsNC(G,U,V)` and `RightCosetsNC(G,V)` should be provided in the cases where the group `G` has a rewriting system or is known to be infinite. At present the functions `RightCosetsAutomaton` and `DoubleCosetsAutomaton` return minimized automata, and `Iterators` for these are not yet available.

    gap> F := FreeGroup(2);;
    gap> rels := [ F.2^2, (F.1*F.2)^2 ];;
    gap> G5 := F/rels;;
    gap> genG5 := GeneratorsOfGroup( G5 );;
    gap> a := genG5[1];  b := genG5[2];;
    gap> U := Subgroup( G5, [a^2] );;
    gap> V := Subgroup( G5, [b] );;
    gap> L := [2,1,4,3];;
    gap> rws5 := ReducedConfluentRewritingSystem( G5, L, "shortlex", 0, "aAbB" );;
    gap> dc5 := DoubleCosetsAutomaton( G5, U, V );;
    gap> Print( dc5 );
    Automaton("det",5,"HKAaBb",[ [ 2, 2, 2, 5, 2 ], [ 2, 2, 1, 2, 1 ], [ 2, 2, 2, \
    2, 3 ], [ 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2 ] ],[ 4 ],[ 1 ])\
    ;;
    gap> rc5 := RightCosetsAutomaton( G5, V );;
    gap> Print( rc5 );
    Automaton("det",6,"HKAaBb",[ [ 2, 2, 2, 6, 2, 2 ], [ 2, 2, 1, 2, 1, 1 ], [ 2, \
    2, 3, 2, 2, 3 ], [ 2, 2, 2, 2, 5, 5 ], [ 2, 2, 2, 2, 2, 2 ], [ 2, 2, 2, 2, 2, \
    2 ] ],[ 4 ],[ 1 ]);;

[Top of Book] [Contents] [Previous Chapter] [Next Chapter]
Goto Chapter: Top 1 2 3 Bib Ind

generated by GAPDoc2HTML