Hey everyone, If anybody asks you whether Sage supports groups, here is an answer : >
Well, the question should be whether Sage supports Cartesian products. Right now the answer is not really beyond sets because I don't think anyone has wanted it (maybe there's some tickets on this...?). With #10963, we can fix some of the problems here fairly easily. > > sage: > AG=cartesian_product([CyclicPermutationGroup(5),CyclicPermutationGroup(4),CyclicPermutationGroup(4)]) > sage: AG.base_ring() # WTF ??? This has nothing to do here > This comes from CategoryObject and there's a TODO to refactor it out into the proper category, but that would need everything (with a base ring) to be a new-style parent. > sage: AG.construction() # same comment > This gives the construction of AG functorially and here should be returning the CartesianProduct functor and I believe it's used by the coercion framework in pushouts (someone correct me if I'm wrong). > sage: AG.first() # same comment > ((), (), ()) > sage: AG.last() # same comment > ((1,5,4,3,2), (1,4,3,2), (1,4,3,2)) > As mentioned Erik, these are because AG is an enumerated set. > sage: AG.gens_dict() > ... > AttributeError: 'CartesianProduct_with_category' object has no attribute > 'gens' > sage: AG.gens_dict_recursive() > ... > AttributeError: 'NoneType' object has no attribute 'gens_dict_recursive' > sage: AG.group_generators() > ... > AttributeError: 'CartesianProduct_with_category' object has no attribute > 'gens' > sage: AG.j_classes() > ... > AttributeError: 'CartesianProduct_with_category' object has no attribute > 'gens' > sage: AG.objgen() > ... > AttributeError: 'CartesianProduct_with_category' object has no attribute > 'gen' > The gens_dict* should also be refactored out like base_ring IMO (manly to ParentWithGens once we get those to new-style parents). We do want to try and get away from the sometimes ambiguous gens() to explicit_generators() (and have them return a Family object so we can better index them and for consistency with the infinitely generated objects), but we can make gens() return a tuple of explicit_generators(), which will fix j_classes. The last one returns the tuple (object, the unique generator) and I have no idea what it is for. Want me to create the ticket? 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.