diff --git a/src/sage/groups/perm_gps/permgroup.py b/src/sage/groups/perm_gps/permgroup.py index a56b233c4db..64a87bd8eae 100644 --- a/src/sage/groups/perm_gps/permgroup.py +++ b/src/sage/groups/perm_gps/permgroup.py @@ -762,6 +762,22 @@ def _magma_init_(self, magma): g = ', '.join([g._gap_cycle_string() for g in self.gens()]) return 'PermutationGroup<%s | %s>' % (self.degree(), g) + def __hash__(self): + r""" + Return a hash value for ``self``. + + TESTS:: + + sage: G = PermutationGroup([(1,2,3), (1,3)]) + sage: G == SymmetricGroup(3) + True + sage: G.gens() == SymmetricGroup(3).gens() + False + sage: G in set([SymmetricGroup(3)]) + True + """ + return hash(self.cardinality()) + def __richcmp__(self, right, op): """ Compare ``self`` and ``right``. @@ -2338,7 +2354,8 @@ def _order(self): # Compute the order. return Integer(len(unique)).factorial() - def order(self): + @cached_method + def cardinality(self): """ Return the number of elements of this group. @@ -2356,7 +2373,7 @@ def order(self): sage: G.order() 1 - :meth:`cardinality` is just an alias:: + :meth:`cardinality` is an alias:: sage: PermutationGroup([(1,2,3)]).cardinality() 3 @@ -2374,8 +2391,6 @@ def order(self): return Integer(self.gap().Size()) - cardinality = order - def random_element(self): """ Return a random element of this group. diff --git a/src/sage/groups/perm_gps/permgroup_named.py b/src/sage/groups/perm_gps/permgroup_named.py index d7dd1bdb2c4..424bb35a09f 100644 --- a/src/sage/groups/perm_gps/permgroup_named.py +++ b/src/sage/groups/perm_gps/permgroup_named.py @@ -109,21 +109,15 @@ class PermutationGroup_unique(CachedRepresentation, PermutationGroup_generic): """ - .. TODO:: - - Fix the broken hash. :: - - sage: G = SymmetricGroup(6) - sage: G3 = G.subgroup([G((1,2,3,4,5,6)),G((1,2))]) - sage: hash(G) == hash(G3) # todo: Should be True! - False - TESTS:: sage: G = SymmetricGroup(6) sage: G3 = G.subgroup([G((1,2,3,4,5,6)),G((1,2))]) sage: G == G3 True + + sage: hash(G) == hash(G3) + True """ @weak_cached_function def __classcall__(cls, *args, **kwds): diff --git a/src/sage/sets/set_from_iterator.py b/src/sage/sets/set_from_iterator.py index 19d11c7ad85..2322de8cd9d 100644 --- a/src/sage/sets/set_from_iterator.py +++ b/src/sage/sets/set_from_iterator.py @@ -514,11 +514,11 @@ def _sage_src_lines_(self): sage: from sage.misc.sageinspect import sage_getsourcelines sage: from sage.sets.set_from_iterator import Decorator sage: d = Decorator() - sage: d.f = MathieuGroup.order + sage: d.f = MathieuGroup.cardinality sage: S = sage_getsourcelines(d) # indirect doctest - sage: S[0][2] + sage: S[0][3] ' Return the number of elements of this group.\n' - sage: S[0][25] + sage: S[0][26] ' if not gens:\n' """ from sage.misc.sageinspect import sage_getsourcelines