Ticket #6250: matrix_group_gap-cardinality_len-6250-nt.2.patch

File matrix_group_gap-cardinality_len-6250-nt.2.patch, 7.1 KB (added by nthiery, 10 years ago)
  • sage/groups/matrix_gps/matrix_group.py

    # HG changeset patch
    # User Nicolas M. Thiery <nthiery@users.sf.net>
    # Date 1244503566 25200
    # Node ID 4d562aa2672182daafb2da61adbf67aa4d383742
    # Parent  150a83f5876ac4837abae967354830bf315d2ef6
    Followup on #5308:
    
        * cardinality now returns the size of the group (was order)
        * order is a backward compatibility alias for cardinality
        * len raises a deprecation error
    
    diff --git a/sage/groups/matrix_gps/matrix_group.py b/sage/groups/matrix_gps/matrix_group.py
    a b class MatrixGroup_gap(MatrixGroup_generi 
    326326            return True
    327327        return self._gap_().IsFinite().bool()
    328328
    329     def order(self):
     329    def cardinality(self):
    330330        """
     331        Implements :meth:`EnumeratedSets.ParentMethods.cardinality`.
     332
    331333        EXAMPLES::
    332334       
    333335            sage: G = Sp(4,GF(3))
    334             sage: G.order()
     336            sage: G.cardinality()
    335337            51840
    336338            sage: G = SL(4,GF(3))
    337             sage: G.order()
     339            sage: G.cardinality()
    338340            12130560
    339341            sage: F = GF(5); MS = MatrixSpace(F,2,2)
    340342            sage: gens = [MS([[1,2],[-1,1]]),MS([[1,1],[0,1]])]
    341343            sage: G = MatrixGroup(gens)
    342             sage: G.order()
     344            sage: G.cardinality()
    343345            480
    344346            sage: G = MatrixGroup([matrix(ZZ,2,[1,1,0,1])])
    345             sage: G.order()
     347            sage: G.cardinality()
    346348            +Infinity
    347349        """
    348350        g = self._gap_()
    class MatrixGroup_gap(MatrixGroup_generi 
    350352            return integer.Integer(gap(self).Size())
    351353        return infinity
    352354   
     355    def order(self):
     356        """
     357        Backward compatibility alias for :meth:`.cardinality`.
     358
     359        Might be deprecated in the future.
     360
     361        EXAMPLES::
     362
     363            sage: G = Sp(4,GF(3))
     364            sage: G.order()
     365            51840
     366        """
     367        return self.cardinality()
     368
     369    def __len__(self):
     370        """
     371        __len__ has been removed ! to get the number of element in a
     372        matrix group, use :meth:`.cardinality`.
     373
     374        EXAMPLES::
     375       
     376            sage: G = GO(3,GF(5))
     377            sage: len(G)
     378            Traceback (most recent call last):
     379            ...
     380            AttributeError: __len__ has been removed; use .cardinality() instead
     381
     382        """
     383        raise AttributeError, "__len__ has been removed; use .cardinality() instead"
     384
    353385    def gens(self):
    354386        """
    355387        Return generators for this matrix group.
    class MatrixGroup_gap(MatrixGroup_generi 
    440472            sage: F = GF(3)
    441473            sage: gens = [matrix(F,2, [1,0, -1,1]), matrix(F, 2, [1,1,0,1])]
    442474            sage: G = MatrixGroup(gens)
    443             sage: G.order()
     475            sage: G.cardinality()
    444476            24
    445477            sage: v = G.list()
    446478            sage: len(v)
    class MatrixGroup_gap_finite_field(Matri 
    519551    """
    520552    Python class for matrix groups over a finite field.
    521553    """
    522     def order(self):
     554    def cardinality(self):
    523555        """
    524556        EXAMPLES::
    525557       
    526558            sage: G = Sp(4,GF(3))
    527             sage: G.order()
     559            sage: G.cardinality()
    528560            51840
    529561            sage: G = SL(4,GF(3))
    530             sage: G.order()
     562            sage: G.cardinality()
    531563            12130560
    532564            sage: F = GF(5); MS = MatrixSpace(F,2,2)
    533565            sage: gens = [MS([[1,2],[-1,1]]),MS([[1,1],[0,1]])]
    534566            sage: G = MatrixGroup(gens)
    535             sage: G.order()
     567            sage: G.cardinality()
    536568            480
    537569            sage: G = MatrixGroup([matrix(ZZ,2,[1,1,0,1])])
    538             sage: G.order()
     570            sage: G.cardinality()
    539571            +Infinity
    540572        """
    541573        return integer.Integer(gap(self).Size())
    class MatrixGroup_gap_finite_field(Matri 
    591623            sage: G
    592624            Matrix group over Finite Field of size 5 with 2 generators:
    593625             [[[1, 0], [0, 1]], [[1, 2], [3, 4]]]
    594             sage: G.order()
     626            sage: G.cardinality()
    595627            8
    596628            sage: G(1)
    597629            [1 0]
    class MatrixGroup_gens(MatrixGroup_gap): 
    732764            sage: g2 = MS(eval(str(GG.GeneratorsOfGroup()[2]).replace("\n","")))
    733765            sage: g3 = MS(eval(str(GG.GeneratorsOfGroup()[3]).replace("\n","")))
    734766            sage: G = MatrixGroup([g1, g2, g3])
    735             sage: G.order()
     767            sage: G.cardinality()
    736768            21499084800
    737769            sage: set_random_seed(0); current_randstate().set_seed_gap() 
    738770            sage: G.as_permutation_group()     
    class MatrixGroup_gens(MatrixGroup_gap): 
    752784        F = self.base_ring()
    753785        if not(F.is_finite()):
    754786            raise NotImplementedError, "Base ring must be finite."
    755         q = F.order()   
     787        q = F.cardinality()   
    756788        gens = self.gens()
    757789        n = self.degree()
    758790        MS = MatrixSpace(F,n,n)
    class MatrixGroup_gens(MatrixGroup_gap): 
    804836        F = self.base_ring()
    805837        if not(F.is_finite()):
    806838            raise NotImplementedError, "Base ring must be finite."
    807         q = F.order()   
     839        q = F.cardinality()   
    808840        gens = self.gens()
    809841        n = self.degree()
    810842        MS = MatrixSpace(F,n,n)
    class MatrixGroup_gens(MatrixGroup_gap): 
    936968            sage: MS = MatrixSpace(QQ, 2, 2)
    937969            sage: gen1 = [[1/a,(q-1)/a],[1/a, -1/a]]; gen2 = [[1,0],[0,-1]]; gen3 = [[-1,0],[0,1]]
    938970            sage: G = MatrixGroup([MS(gen1),MS(gen2),MS(gen3)])
    939             sage: G.order()
     971            sage: G.cardinality()
    940972            12
    941973            sage: G.invariant_generators()
    942974            [x1^2 + 3*x2^2, x1^6 + 15*x1^4*x2^2 + 15*x1^2*x2^4 + 33*x2^6]
    class MatrixGroup_gens(MatrixGroup_gap): 
    10011033        A = [singular.matrix(n,n,str((x.matrix()).list())) for x in gens]
    10021034        Lgens = ','.join((x.name() for x in A))
    10031035        PR = PolynomialRing(F,n,[VarStr+str(i) for i in range(1,n+1)])
    1004         if q == 0 or (q > 0 and self.order()%q != 0):
     1036        if q == 0 or (q > 0 and self.cardinality()%q != 0):
    10051037            ReyName = 't'+singular._next_var_name()
    10061038            singular.eval('list %s=group_reynolds((%s))'%(ReyName,Lgens))
    10071039            IRName = 't'+singular._next_var_name()
    10081040            singular.eval('matrix %s = invariant_algebra_reynolds(%s[1])'%(IRName,ReyName))
    10091041            OUT = [singular.eval(IRName+'[1,%d]'%(j)) for j in range(1,1+singular('ncols('+IRName+')'))]
    10101042            return [PR(gen) for gen in OUT]
    1011         if self.order()%q == 0:
     1043        if self.cardinality()%q == 0:
    10121044            PName = 't'+singular._next_var_name()
    10131045            SName = 't'+singular._next_var_name()
    10141046            singular.eval('matrix %s,%s=invariant_ring(%s)'%(PName,SName,Lgens))
    class MatrixGroup_gens_finite_field(Matr 
    10461078##         L = [gap(A) for A in gp_gens]
    10471079##         sL = ','.join(str(x) for x in L)
    10481080##         if is_FiniteField(F):
    1049 ##             q = F.order()
     1081##             q = F.cardinality()
    10501082##             gap.eval("cl:=ConjugacyClasses(Group(["+sL+"]))")
    10511083##             m = eval(gap.eval("Length(cl)"))
    10521084##             gap.eval("reps:=List(cl,x->Representative(x))")