Hey everyone,
   On http://trac.sagemath.org/ticket/15289 I'm implementing monoids and 
groups indexed by an arbitrary set of generators and Nicolas and I would 
like your input on some possible idioms.

* Is anyone opposed to removing Free* from the global namespace and instead 
accessing free objects via their respective category. For example, instead 
of `FreeGroup(blah)` we access it by `Groups().free(blah)` and 
`FreeAlgebra(R, blah)` becomes `Algebras(R).free(blah)`. However this 
partially conflicts with http://trac.sagemath.org/ticket/15801, we could 
work around it by passing in the base ring as before. I do like this idiom 
since it has a more category-theoretic feel.

* If we decide to not support the first, is should we be able to access 
free abelian groups via `FreeGroup` with an optional boolean keyword of 
`abelian`. Same for monoids.

* (In a similar vein to the second) Should we pass an optional boolean 
argument of `additive` to `FreeGroup` (and maybe `FreeMonoid`)?

* Should `IndexedFreeAbelianGroup` be additive or multiplicative. I'm 
voting for multiplicative since `CombinatorialFreeModule` over ZZ is the 
additive counterpart.

Last is should we indexed polynomials by elements of an additive group? I 
wanted to use `IndexedFreeGroup` as the indexing set for a 
`CombinatorialFreeModule` to build (non-commutative) polynomial-like rings. 
It's easy enough to do it with it's (additive) ZZ-module counterpart 
(`CombinatorialFreeModule`) as well, but defining 

def product_on_basis(self, a, b):
    return self.monomial(a + b)

feels slightly unnatural to me. Also I haven't tested speed/memory yet to 
compare.

I'd appreciate any thoughts you have on the matters above (I suspect some 
are going to controversial), and if you have better names.

Best,
Travis



-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to