Access elements of group given by finite presentation in Magma Calculator

165 Views Asked by At

I have been trying to use the Magma Calculator: http://magma.maths.usyd.edu.au/calc/

Given a word u, in a finitely presented group, how do I declare g to be the group element represented by u?

Context:

I can define a group via a finite presentation. For example using the code:

G<a,b,c> := Group< a,b,c | a^2=b^2, b^2=c^2, c=a*b >;

If I then ask for the order of the group:

Order (G);

The correct answer of 8 is returned, so it does understand what G is.

However I want to know how to ask if two elements of the group are equal.

The problem is that a,b,c as well as G.1, G.2, G.3 denote elements of the free group generated by a,b,c. Similarly products of those symbols (and their inverses) represent words in the free group.

Thus

a*a^-1 eq a^-1*a;

returns true, as it is true in the free group, but

a^2 eq c^2;

returns false, even though it is true in the group G.

This is explained in https://magma.maths.usyd.edu.au/magma/handbook/text/851. In the section "Operations on words" it says that:

"u eq v : Returns true if the words u and v are identical when freely reduced. NB When G is not a free group and false is returned, this does not imply that u and v do not represent the same element of G."

However Magma can do operations with group elements, including answering if two elements g,h, are the same:

g eq h;

The question is then, given a word u, in a finitely presented group, how do I declare g to be the group element represented by u?


Following the anwer by @Userulli I typed

G<a,b,c> := Group< a,b,c | a^2=b^2, b^2=c^2, c=a*b >;

u := a^2;

v := c^2;

g := ElementToSequence(G, u);

h := ElementToSequence(G, v);

g eq h;

and got the reply

>> g := ElementToSequence(G, u); ^ Runtime error in 'ElementToSequence': Bad argument types

Argument types given: GrpFP, GrpFPElt

>> h := ElementToSequence(G, v); ^ Runtime error in 'ElementToSequence': Bad argument types

Argument types given: GrpFP, GrpFPElt

>> g eq h; ^

User error: Identifier 'g' has not been declared or assigned

1

There are 1 best solutions below

5
On

Have you tryied using the ElementToSequence method?

For example :

u := a^2;
g := ElementToSequence(u, G);

Then you can compare g with other elements in the group to see if they are the same:

v := c^2;
h := ElementToSequence(v, G);
h eq g;  // this should return true

EDIT: Stating the doc magma.maths.usyd.edu.au/magma/handbook/text/208 you need to use fields instead, so you should convert the group into a field, and then use ElementToSequence method to compare the two sequences?