ASKSAGE: Sage Q&A Forum - Individual question feedhttp://ask.sagemath.org/questions/Q&A Forum for SageenCopyright Sage, 2010. Some rights reserved under creative commons license.Tue, 15 Jan 2019 21:17:44 -0600Identity in a quotient Grouphttp://ask.sagemath.org/question/44965/identity-in-a-quotient-group/ Hello everyone, I have the following groups
F3.<a1,b1,a2,b2,a3,b3> = FreeGroup()
H3 = F3.quotient([a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3])
Then I inject the variables to $H3$
H3.inject_variables()
Now when every element that I write have parent $H3$, but when I write the word `a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3`
this does not return the identity of $H3$, although if I put
a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3 == H3.one()
this is true. Does anyone know why this happen and how can I get sage to reduce this word to identity of $H3$?
Tue, 08 Jan 2019 18:03:52 -0600http://ask.sagemath.org/question/44965/identity-in-a-quotient-group/Comment by nbruin for <p>Hello everyone, I have the following groups</p>
<pre><code>F3.<a1,b1,a2,b2,a3,b3> = FreeGroup()
H3 = F3.quotient([a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3])
</code></pre>
<p>Then I inject the variables to $H3$</p>
<pre><code>H3.inject_variables()
</code></pre>
<p>Now when every element that I write have parent $H3$, but when I write the word <code>a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3</code>
this does not return the identity of $H3$, although if I put</p>
<pre><code>a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3 == H3.one()
</code></pre>
<p>this is true. Does anyone know why this happen and how can I get sage to reduce this word to identity of $H3$?</p>
http://ask.sagemath.org/question/44965/identity-in-a-quotient-group/?comment=44966#post-id-44966See https://www.gap-system.org/Manuals/doc/ref/chap47.html for underlying algorithms. There is no reducition algorithm that computes normal forms (or equality even!) in arbitrary finitely presented groups, so even the equality test is computed on a best-effort basis. It's not bringing your element in a standard form by default because the system doesn't have an algorithm to do so reliably. Gap might have some functionality, but it looks like this hasn't been exposed on the sage wrapper.Tue, 08 Jan 2019 22:21:36 -0600http://ask.sagemath.org/question/44965/identity-in-a-quotient-group/?comment=44966#post-id-44966Answer by castal for <p>Hello everyone, I have the following groups</p>
<pre><code>F3.<a1,b1,a2,b2,a3,b3> = FreeGroup()
H3 = F3.quotient([a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3])
</code></pre>
<p>Then I inject the variables to $H3$</p>
<pre><code>H3.inject_variables()
</code></pre>
<p>Now when every element that I write have parent $H3$, but when I write the word <code>a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3</code>
this does not return the identity of $H3$, although if I put</p>
<pre><code>a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3 == H3.one()
</code></pre>
<p>this is true. Does anyone know why this happen and how can I get sage to reduce this word to identity of $H3$?</p>
http://ask.sagemath.org/question/44965/identity-in-a-quotient-group/?answer=45065#post-id-45065You can compute a rewriting system by: `rewrite = H3.rewriting_system()`
Then `rewrite.reduce(a1*b1/a1/b1*a2*b2/a2/b2*a3*b3/a3/b3)` gives you 1 as expected. But the rewriting system is not confluent by default, and it only has the one rule: `a1*b1*a1^-1*b1^-1*a2*b2*a2^-1*b2^-1*a3*b3*a3^-1*b3^-1 ---> 1`.
In general, it is not possible to guarantee that the Knuth-Bendix procedure will terminate to produce a confluent rewriting system. This is why the system cannot automatically reduce arbitrary expressions. In fact, it seems that Knuth-Bendix fails to terminate on your example. See the [make_confluent()](http://doc.sagemath.org/html/en/reference/groups/sage/groups/finitely_presented.html#sage.groups.finitely_presented.RewritingSystem.make_confluent) documentation for more information.Tue, 15 Jan 2019 21:17:44 -0600http://ask.sagemath.org/question/44965/identity-in-a-quotient-group/?answer=45065#post-id-45065