Dear category fans, Thanks everybody for your feedback in this discussion! Let me try to make a synthesis.
(1) In the long run, Algebras(R) should match with Wikipedia's definition and not assume any axiom: an algebra A is an R-module with a binary multiplication which is bilinear. Note that this might not be the end of the discussion: at some point we will want to support R to be just a semiring and in this case `A` we would not necessarily need to require A to have additive inverses. But one problem at a time. (2) Point (1) is a backward incompatible change, which will take some work. There is already enough on our plate with #10963, so this change is postponed for later. For now we need a temporary name. The two current suggestions are: - NonAssociativeNonUnitalAlgebras - MagmaticAlgebras The former is actually technically correct in English (though not so nice). In any cases, there seems to be a preference of the latter (this means more work for me, but so be it). Note: MagmaAlgebras is not an option as it is confusing. Since we call "group algebra" the algebra of a group, a "magma algebra" stands naturally for the algebra of a magma. (3) For the related situation of a multiplicative magma that distributes over a magma, there are two suggestions currently: - DistributiveMagmasAndAdditiveMagmas - MagmaticRing The first one is ugly but rather explicit. The second one is consistent with MagmaticAlgebras, though we don't care so much since MagmaticAlgebras will eventually disappear. By default I'll stick with the former to save time, but I could bend under popular pressure. (4) There are way too many categories in the global name space. There is for example no reason to have FiniteDimensionalHopfAlgebrasWithBasis(QQ) there. Some people further said that there is actually no reason whatsoever to have any category in the global name space because "categories are only for the programmer". I object to that part. The following are perfectly natural things a user would want to do with categories: sage: A in Fields() # Is A known to be a field? sage: Hom(F, G, Groups()) # Construct a homset in a given category sage: Groups? # What is a group? sage: Groups().example() # Give me an example sage: S = Semigroups().example(); S?? # Show me the code! sage: DivisionRings() & Sets().Finite() # Please remind me about Wedderburn Category of finite fields sage: Fields().all_implementations() # All fields in Sage (Florent has some code toward this) sage: MatrixGroup(..., category = FiniteGroups()) # I promise that the result is actually finite In short, categories are about the mathematics in Sage and we want our user to use and explore this mathematics. Of course #10963 will allow to considerably reduce the number of entry points being actually imported by default since e.g.: FiniteGroups() can now be Groups().Finite(), GradedHopfAlgebrasWithBasis() can now be HopfAlgebras().Graded().WithBasis() I could possibly be convinced to further reduce the pollution by making the categories accessible as categories.Groups() instead of Groups(). In any cases, this will be for after #10963. (5) The docstring of many categories could take some love as it is an important entry point for users. Volunteers are welcome once #10963 will have been merged. Cheers, Nicolas -- Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net> http://Nicolas.Thiery.name/ -- 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/groups/opt_out.