Problem with matrices with entries in the family of rational functions

51 Views Asked by At

I have the following setup:

gap> a := X(Rationals,"a");; b := X(Rationals,"b");;c := X(Rationals,"c");;
gap> M := [ [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0 ],
>      [ -b, -a, -1, -a, -1, 0 ], [ -a, -1, 0, -1, 0, 0 ],
>      [ b, a, 1, 0, 0, 0 ], [ 0, 0, 0, b, a, 1 ] ]*a^0;;
gap> N := [ [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0 ],
>      [ -b, -a, -1, -a, -1, 0 ], [ 0, 1, 0, 0, 0, 0 ],
>      [ 0, 0, 0, 0, 1, 0 ], [ c, 0, 0, 0, -a, -1 ] ]*a^0;;
gap> G := Group(M,N);
<matrix group with 2 generators>
gap> IsGroup(G);
true
gap> Order(M); Order(N);
3
2
gap> Comm(M,N);
[ [ 1, 0, 0, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0 ],
[ -b, -a, -1, -a, -1, 0 ], [ -a, -1, 0, -1, 0, 0 ],
[ b, a, 1, 0, 0, 0 ], [ 0, 0, 0, b, a, 1 ] ]

So some functions on matrix groups seem to work but others don't, like "List", "Size", "IsSolvable", "DerivedSubgroup", etc.. They all break on the same line 3928 in "matrix.gi" (in my version). There, a function tries to verify if all the matrix entries concerned are in the same coefficient field, but it fails. Indeed if I try "a in Field([a]); " I get a method not found (2nd choice) error. There is no problem with the group itself, but I have to create the set manually. The set is closed for product and taking of the inverse. The group should be isomorphic to $S_3$.

1

There are 1 best solutions below

2
On

The problem is that GAP currently does not implement objects that are formal function fields -- basically because they so far never really were needed. Implementing them yourself is not inherently hard, but there are a lot of small issues that potentially need work on.

What I would do is to compute a faithful permutatiuon representation "by hand": Compute orbits on vectors that form a basis, and take the action on these orbits, getting a faithful permutation action.

gap> dom:=Union(List(G.1,x->Orbit(G,x,OnRight)));
[ [ 0, 0, 0, 0, 0, 1 ], [ 0, 0, 0, 0, 1, 0 ], [ 0, 0, 0, 1, 0, 0 ],
  [ 0, 0, 0, b, a, 1 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0 ],
  [ 0, -a, -1, 0, -1, 0 ], [ 0, a^2-b, a, 0, a, 1 ], [ 1, 0, 0, 0, 0, 0 ],
  [ c, 0, 0, 0, -a, -1 ], [ c, b, 0, 0, 0, -1 ], [ -b, -a, -1, -a, -1, 0 ],
  [ b, a, 1, 0, 0, 0 ], [ -a, -1, 0, -1, 0, 0 ],
  [ -a*b+c, -a^2, -a, -b, -a, -1 ], [ a^2-b, a, 0, a, 1, 0 ] ]
gap> act:=ActionHomomorphism(G,dom,OnRight,"surjective");
<action epimorphism>
gap> p:=Range(act);
Group([ (1,4,8)(2,13,7)(3,14,6)(5,12,16)(10,15,11), (1,10)(3,6)(4,11)(5,12)
(7,13)(8,15) ])

Then work with the isomorphic permutation group and if necessary use the homomorphism to obtain matrices back. (Clearly this assumes that your group is finite and not too large.)