Thursday, 12 November 2009

Linear notation for transformations

In the book 'Classical Finite Transformation Semigroups' by Olexandr Ganyushkin and Volodymyr Mazorchuk (my review) an improved linear notation for transformations is introduced. Linear in the sense that it fits into a line, otherwise it is full with recursion. Cycles are in cyclic notation, for collapsing states

[tree; root]

is used recursively. I like the idea, decided to use it, so I had to implement it in GAP. The code seems to work fine now, what more, it turned out to be more economical on using square brackets (the usefulness of this may be disputable though).

Here are all the transformations of T3:

Transformation( [ 1, 2, 1 ] ) [3;1]
Transformation( [ 1 .. 3 ] ) ()
Transformation( [ 2, 1, 3 ] ) (1,2)
Transformation( [ 2, 3, 1 ] ) (1,2,3)
Transformation( [ 2, 1, 2 ] ) (1,[3;2])
Transformation( [ 2, 3, 2 ] ) ([1;2],3)
Transformation( [ 2, 1, 1 ] ) ([3;1],2)
Transformation( [ 3, 2, 1 ] ) (1,3)
Transformation( [ 1, 3, 2 ] ) (2,3)
Transformation( [ 3, 1, 2 ] ) (1,3,2)
Transformation( [ 3, 2, 3 ] ) [1;3]
Transformation( [ 1, 3, 1 ] ) [[2;3];1]
Transformation( [ 3, 1, 3 ] ) [[2;1];3]
Transformation( [ 1, 2, 2 ] ) [3;2]
Transformation( [ 3, 2, 2 ] ) [[1;3];2]
Transformation( [ 1, 1, 2 ] ) [[3;2];1]
Transformation( [ 1, 1, 1 ] ) [2,3;1]
Transformation( [ 2, 3, 3 ] ) [[1;2];3]
Transformation( [ 3, 1, 1 ] ) ([2;1],3)
Transformation( [ 1, 3, 3 ] ) [2;3]
Transformation( [ 2, 2, 1 ] ) [[3;1];2]
Transformation( [ 2, 2, 3 ] ) [1;2]
Transformation( [ 2, 2, 2 ] ) [1,3;2]
Transformation( [ 3, 3, 2 ] ) ([1;3],2)
Transformation( [ 1, 1, 3 ] ) [2;1]
Transformation( [ 3, 3, 1 ] ) (1,[2;3])
Transformation( [ 3, 3, 3 ] ) [1,2;3]

and the example from their book page11:

gap>LinearNotation(Transformation([8,9,7,13,7,16,7,1,13,11,16,4,12,9,14,13]));
"(1,8)([[2,[15;14];9],[6,[10;11];16];13],12,4)[3,5;7]"


No comments:

Post a Comment