#12339: Free Groups
------------------------------------------------------------------+---------
Reporter: mmarco |
Owner: joyner
Type: enhancement |
Status: needs_info
Priority: major |
Milestone: sage-pending
Component: group theory |
Resolution:
Keywords: free groups, finitely presented groups, braids | Work
issues:
Report Upstream: N/A |
Reviewers: Volker Braun
Authors: Miguel Marco, Volker Braun | Merged
in:
Dependencies: #6391, #13687, #13588 |
Stopgaps:
------------------------------------------------------------------+---------
Changes (by ppurka):
* status: positive_review => needs_info
Comment:
I have some comments regarding this patch. I myself can not give much
technical input, but I have a colleague here who has been trying to use
this and has come across some inconsistencies.
1. Is there a reason why a `FreeGroupElement` does not have the `__call__`
method? A `FreeMonoidElement` does have the `__call__` method. This is
needed to make the following work
{{{#!python
sage: G.<a,b> = FreeGroup()
sage: a.subs(a=1,b=2) # We would expect the answer to be 1
a
}}}
2. Related to the implementation of the `__call__` method is the following
problem. Suppose in order to make `subs()` work, we implement the
`__call__` method. The current code has to call `a.Tietze()` to get the
index of the free generator `a` and its exponent. For a more complicated
expression the output is as follows, and we would have to go along and
parse the output tuple to find out the exponent by counting. Is there any
method (maybe in GAP) which outputs just a list of tuples `[(generator1,
exponent1), (generator2, exponent2),...]`. This is again how `FreeMonoid`
is implemented.
{{{
sage: (a^2 * b^-3).Tietze()
(1, 1, -2, -2, -2)
sage: (a^2 * b^-3).some_function() # some function which gives (generator,
exponent) tuples
[(a, 2), (b, -3)]
}}}
3. There is also this inconsistency in the output of the following two
functions. In language, they say the same thing, but they are not
mathematically equal (according to the current implementation):
{{{#!python
sage: G.<a,b> = FreeGroup()
sage: test = (a).fox_derivative(a)
sage: f = test.parent()
sage: g = GroupAlgebra(G, ZZ)
sage: print f
Group algebra of Free Group on generators {a, b, c, d, e} over Integer
Ring
sage: print g
Group algebra of group "Free Group on generators {a, b, c, d, e}" over
base ring Integer Ring
sage: print f == g
False
}}}
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/12339#comment:75>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.