1

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

tkf
  • 11
  • 4

1 Answers1

0

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?

Userulli
  • 244
  • 1
  • 7
  • I no longer think this can work. Finding the coefficients of an element of a field in terms of a basis over a subfield, is a different problem to finding the element of a group represented by a word in the generators. – tkf Feb 10 '23 at 17:27
  • @tkf can this work for you instead? `G*v eq G*u;` – Userulli Feb 13 '23 at 08:47
  • Unfortunately this seems to return true, regardless of what u,v are (even for words u,v that represent different elements of the group). – tkf Feb 14 '23 at 12:38
  • Can you provide examples? – Userulli Feb 15 '23 at 10:02
  • Let u be any word and v be any word and it will return true as far as I can tell. For example u=a, v=b. – tkf Feb 16 '23 at 11:07