Ticket #12544: trac_12544_deprecate_old_ray_methods.patch

File trac_12544_deprecate_old_ray_methods.patch, 69.4 KB (added by novoselt, 9 years ago)
  • sage/geometry/cone.py

    # HG changeset patch
    # User Andrey Novoseltsev <novoselt@gmail.com>
    # Date 1331088117 25200
    # Node ID 9f6165a5bfba623210d22a646558ef0fd2c80c45
    # Parent  6e25398b70096af4aa33f02ab17eec033067bb77
    Add deprecation warnings to old-style ray handling methods, stop using them.
    
    diff --git a/sage/geometry/cone.py b/sage/geometry/cone.py
    a b  
    2424
    2525- Volker Braun (2010-12-28): Hilbert basis for cones.
    2626
     27- Andrey Novoseltsev (2012-02-23): switch to PointCollection container.
     28
    2729EXAMPLES:
    2830
    2931Use :func:`Cone` to construct cones::
     
    7476
    7577Note that while we output rays by default as a matrix, the method
    7678:meth:`~ConvexRationalPolyhedralCone.rays` returns a
    77 :class:`~sage.geometry.point_collection.PointCollection` with `i`-th element
    78 being the `i`-th point, i.e. the `i`-th column of the shown matrix, while after
    79 explicit conversion to a matrix indexing refers to rows. In the above example
    80 requesting the third row will lead to an error::
     79:class:`~sage.geometry.point_collection.PointCollection` with the `i`-th
     80element being the `i`-th point, i.e. the `i`-th column of the shown matrix,
     81while after explicit conversion to a matrix indexing refers to rows. In the
     82above example requesting the third row will lead to an error::
    8183
    8284    sage: halfspace.rays().matrix()[3]
    8385    Traceback (most recent call last):
     
    9092    N(1, 0, 0)
    9193    N(0, 1, 0)
    9294
    93 You can also get an iterator over only some selected rays::
    94 
    95     sage: for ray in halfspace.ray_iterator([1,2,1]): print ray
    96     N(0, 1, 0)
    97     N(0, -1, 0)
    98     N(0, 1, 0)
    99 
    10095There are two dimensions associated to each cone - the dimension of the
    10196subspace spanned by the cone and the dimension of the space where it lives::
    10297
     
    141136    sage: face.ambient_ray_indices()
    142137    (0, 1)
    143138    sage: four_rays.rays(face.ambient_ray_indices())
    144     (N(1, 1, 1), N(1, -1, 1))
     139    [ 1  1]
     140    [ 1 -1]
     141    [ 1  1]
     142    in 3-d lattice N
    145143
    146144If you need to know inclusion relations between faces, you can use ::
    147145
     
    160158
    161159.. WARNING::
    162160
    163     As you can see in the above example, the order of faces in level sets of
     161    The order of faces in level sets of
    164162    the face lattice may differ from the order of faces returned by
    165163    :meth:`~ConvexRationalPolyhedralCone.faces`. While the first order is
    166164    random, the latter one ensures that one-dimensional faces are listed in
     
    188186
    189187#*****************************************************************************
    190188#       Copyright (C) 2010 Volker Braun <vbraun.name@gmail.com>
    191 #       Copyright (C) 2010 Andrey Novoseltsev <novoselt@gmail.com>
     189#       Copyright (C) 2012 Andrey Novoseltsev <novoselt@gmail.com>
    192190#       Copyright (C) 2010 William Stein <wstein@gmail.com>
    193191#
    194 #
    195192#  Distributed under the terms of the GNU General Public License (GPL)
    196 #
     193#  as published by the Free Software Foundation; either version 2 of
     194#  the License, or (at your option) any later version.
    197195#                  http://www.gnu.org/licenses/
    198196#*****************************************************************************
    199197
     
    214212from sage.graphs.all import DiGraph
    215213from sage.matrix.all import matrix, identity_matrix
    216214from sage.misc.all import cached_method, flatten, latex, prod
     215from sage.misc.misc import deprecation
    217216from sage.modules.all import span, vector
    218217from sage.rings.all import QQ, RR, ZZ, gcd
    219218from sage.structure.all import SageObject
     
    298297        [0 1]
    299298        in 2-d lattice N
    300299
    301     You may prefer to use :meth:`~IntegralRayCollection.ray_matrix` when you
    302     want to take a look at rays, they will be given as columns::
    303 
    304         sage: quadrant.ray_matrix()
    305         [1 0]
    306         [0 1]
    307 
    308300    If you give more rays than necessary, the extra ones will be discarded::
    309301
    310302        sage: Cone([(1,0), (0,1), (1,1), (0,1)]).rays()
     
    350342        2
    351343
    352344    You may construct the cone above without giving any rays, but in this case
    353     you must provide lattice explicitly::
     345    you must provide ``lattice`` explicitly::
    354346
    355347        sage: origin = Cone([])
    356348        Traceback (most recent call last):
     
    364356        sage: origin.lattice()
    365357        2-d lattice N
    366358
    367     Of course, you can also provide lattice in other cases::
     359    Of course, you can also provide ``lattice`` in other cases::
    368360
    369361        sage: L = ToricLattice(3, "L")
    370362        sage: c1 = Cone([(1,0,0),(1,1,1)], lattice=L)
     
    392384    negatives", as in the following example::
    393385
    394386        sage: plane = Cone([(1,0), (0,1), (-1,-1)])
    395         sage: plane.ray_matrix()
     387        sage: plane.rays()
    396388        [ 0  0  1 -1]
    397389        [ 1 -1  0  0]
     390        in 2-d lattice N
    398391
    399392    The cone can also be specified by a
    400393    :class:`~sage.geometry.polyhedron.base.Polyhedron_base`::
     
    681674        # comparison of rays may miss the difference.
    682675        return cmp((self.lattice(), self.rays()),
    683676                   (right.lattice(), right.rays()))
    684 
     677   
    685678    def __hash__(self):
    686679        r"""
    687680        Return the hash of ``self`` computed from rays.
     
    715708            N(1, 0)
    716709            N(0, 1)
    717710        """
    718         return self.ray_iterator()
     711        return iter(self._rays)
    719712
    720713    def _ambient_space_point(self, data):
    721714        r"""
     
    831824            1
    832825        """
    833826        if "_dim" not in self.__dict__:
    834             self._dim = self.ray_matrix().rank()
     827            self._dim = self.rays().matrix().rank()
    835828        return self._dim
    836829
    837830    def lattice(self):
     
    972965        EXAMPLES::
    973966
    974967            sage: c = Cone([(1,0), (0,1), (-1, 0)])
    975             sage: for ray in c.ray_iterator(): print ray
    976             N(0, 1)
    977             N(1, 0)
    978             N(-1, 0)
    979             sage: for ray in c.ray_iterator([2,1]): print ray
    980             N(-1, 0)
    981             N(1, 0)
     968            sage: [ray for ray in c.ray_iterator()]  # random output (deprecation warning)
     969            [N(0, 1), N(1, 0), N(-1, 0)]
    982970        """
     971        # I couldn't move it to the new Cython class due to some issues with
     972        # generators (may be resolved in 0.16). However, this particular
     973        # iterator does not really save time or memory, so I think it can just
     974        # go. -- Andrey Novoseltsev, 2012-03-06.
     975        deprecation("ray_iterator(...) is deprecated!",
     976                    "Sage Version 5.0")
    983977        if ray_list is None:
    984978            for ray in self._rays:
    985979                yield ray
     
    1002996        EXAMPLES::
    1003997
    1004998            sage: c = Cone([(1,0), (0,1), (-1, 0)])
    1005             sage: c.ray_matrix()
     999            sage: c.ray_matrix()  # random output (deprecation warning)
    10061000            [ 0  1 -1]
    10071001            [ 1  0  0]
    10081002        """
     1003        deprecation("ray_matrix(...) is deprecated, "
     1004                    "please use rays().matrix() instead!",
     1005                    "Sage Version 5.0")
    10091006        return self._rays.matrix()
    10101007
    10111008    def ray_set(self):
     
    10211018        EXAMPLES::
    10221019
    10231020            sage: c = Cone([(1,0), (0,1), (-1, 0)])
    1024             sage: c.ray_set()
     1021            sage: c.ray_set()  # random output (deprecation warning)
    10251022            frozenset([N(0, 1), N(1, 0), N(-1, 0)])
    10261023        """
     1024        deprecation("ray_set(...) is deprecated, "
     1025                    "please use rays().set() instead!",
     1026                    "Sage Version 5.0")
    10271027        if "_ray_set" not in self.__dict__:
    10281028            self._ray_set = frozenset(self._rays)
    10291029        return self._ray_set
    10301030
    1031     def rays(self, ray_list=None):
     1031    def rays(self, *args):
    10321032        r"""
    1033         Return rays of ``self`` as a :class:`tuple`.
     1033        Return (some of the) rays of ``self``.
    10341034
    10351035        INPUT:
    10361036
    1037         - ``ray_list`` -- list of integers, the indices of the requested rays.
    1038           If not specified, all rays of ``self`` will be returned. You may
    1039           want to use :meth:`ray_set` if you do not care about the order of
    1040           rays. See also :meth:`ray_iterator`.
     1037        - ``ray_list`` -- a list of integers, the indices of the requested
     1038          rays. If not specified, all rays of ``self`` will be returned.
    10411039
    10421040        OUTPUT:
    10431041
    1044         - :class:`tuple` of rays.
     1042        - a :class:`PointCollection` of primitive integral ray generators.
    10451043
    10461044        EXAMPLES::
    10471045
     
    10511049            [ 1  0  0]
    10521050            in 2-d lattice N
    10531051            sage: c.rays([0, 2])
    1054             (N(0, 1), N(-1, 0))
     1052            [ 0 -1]
     1053            [ 1  0]
     1054            in 2-d lattice N
     1055           
     1056        You can also give ray indices directly, without packing them into a
     1057        list::
     1058       
     1059            sage: c.rays(0, 2)
     1060            [ 0 -1]
     1061            [ 1  0]
     1062            in 2-d lattice N
    10551063        """
    1056         if ray_list is None:
    1057             return self._rays
    1058         else:
    1059             return tuple(self.ray_iterator(ray_list))
     1064        return self._rays if not args else self._rays(*args)
    10601065
    10611066    def ray_basis(self):
    10621067        r"""
     
    10751080        EXAMPLES::
    10761081
    10771082            sage: c = Cone([(1,1,1,1), (1,-1,1,1), (-1,-1,1,1), (-1,1,1,1), (0,0,0,1)])
    1078             sage: c.ray_basis()
     1083            sage: c.ray_basis()  # random output (deprecation warning)
    10791084            (N(1, 1, 1, 1), N(1, -1, 1, 1), N(-1, -1, 1, 1), N(0, 0, 0, 1))
    10801085        """
     1086        deprecation("ray_basis(...) is deprecated, "
     1087                    "please use rays().basis() instead!",
     1088                    "Sage Version 5.0")
    10811089        if "_ray_basis" not in self.__dict__:
    10821090            indices = self.ray_matrix().pivots()
    10831091            self._ray_basis = tuple(self.ray(i) for i in indices)
     
    11041112        EXAMPLES::
    11051113
    11061114            sage: c = Cone([(1,1,1,1), (1,-1,1,1), (-1,-1,1,1), (-1,1,1,1), (0,0,0,1)])
    1107             sage: c.ray_basis_matrix()
     1115            sage: c.ray_basis_matrix()  # random output (deprecation warning)
    11081116            [ 1  1 -1  0]
    11091117            [ 1 -1 -1  0]
    11101118            [ 1  1  1  0]
    11111119            [ 1  1  1  1]
    11121120        """
     1121        deprecation("ray_basis_matrix(...) is deprecated, "
     1122                    "please use rays().basis().matrix() instead!",
     1123                    "Sage Version 5.0")
    11131124        basis = self.ray_basis()
    11141125        m = self._lattice.degree()
    11151126        n = len(basis)
     
    16021613                                     key=lambda f: f._ambient_ray_indices))
    16031614        return faces
    16041615
     1616    @cached_method
    16051617    def adjacent(self):
    16061618        r"""
    16071619        Return faces adjacent to ``self`` in the ambient face lattice.
     
    16671679        adjacent cones must be facets of a bigger one, but since ``cone``
    16681680        in this example is generating, it is not contained in any other.
    16691681        """
    1670         if "_adjacent" not in self.__dict__:
    1671             L = self._ambient._face_lattice_function()
    1672             adjacent = set()
    1673             facets = self.facets()
    1674             superfaces = self.facet_of()
    1675             if superfaces:
    1676                 for superface in superfaces:
    1677                     for facet in facets:
    1678                         adjacent.update(L.open_interval(facet,  superface))
    1679                 if adjacent:
    1680                     adjacent.remove(L(self))
    1681                 self._adjacent = self._sort_faces(face.element
    1682                                                   for face in adjacent)
    1683             elif self.dim() == self._ambient.dim():
    1684                 # Special treatment relevant for fans
     1682        L = self._ambient._face_lattice_function()
     1683        adjacent = set()
     1684        facets = self.facets()
     1685        superfaces = self.facet_of()
     1686        if superfaces:
     1687            for superface in superfaces:
    16851688                for facet in facets:
    1686                     adjacent.update(facet.facet_of())
    1687                 if adjacent:
    1688                     adjacent.remove(self)
    1689                 self._adjacent = self._sort_faces(adjacent)
    1690             else:
    1691                 self._adjacent = ()
    1692         return self._adjacent
     1689                    adjacent.update(L.open_interval(facet,  superface))
     1690            if adjacent:
     1691                adjacent.remove(L(self))
     1692            return self._sort_faces(face.element for face in adjacent)
     1693        elif self.dim() == self._ambient.dim():
     1694            # Special treatment relevant for fans
     1695            for facet in facets:
     1696                adjacent.update(facet.facet_of())
     1697            if adjacent:
     1698                adjacent.remove(self)
     1699            return self._sort_faces(adjacent)
     1700        else:
     1701            return ()
    16931702
    16941703    def ambient(self):
    16951704        r"""
     
    23332342
    23342343        OUTPUT:
    23352344
    2336         - :class:`tuple` of vectors.
     2345        - a :class:`PointCollection`.
    23372346
    23382347        If the ambient :meth:`~IntegralRayCollection.lattice` of ``self`` is a
    23392348        :class:`toric lattice
     
    23462355
    23472356            sage: cone = Cone([(1,0), (-1,3)])
    23482357            sage: cone.facet_normals()
    2349             (M(3, 1), M(0, 1))
     2358            [3 0]
     2359            [1 1]
     2360            in 2-d lattice M
    23502361
    23512362        Now let's look at a more complicated case::
    23522363       
     
    23602371            sage: lsg = (QQ^3)(cone.linear_subspace().gen(0)); lsg
    23612372            (1, 1/4, 5/4)
    23622373            sage: cone.facet_normals()
    2363             (M(7, -18, -2), M(1, -4, 0))
     2374            [  7   1]
     2375            [-18  -4]
     2376            [ -2   0]
     2377            in 3-d lattice M
    23642378            sage: [lsg*normal for normal in cone.facet_normals()]
    23652379            [0, 0]
    23662380
    23672381        A lattice that does not have a ``dual()`` method::
    23682382       
    23692383            sage: Cone([(1,1),(0,1)], lattice=ZZ^2).facet_normals()
    2370             ((1, 0), (-1, 1))
     2384            [ 1 -1]
     2385            [ 0  1]
     2386            in Ambient free module of rank 2 over the principal ideal domain Integer Ring
    23712387
    23722388        We correctly handle the degenerate cases::
    23732389       
    23742390            sage: N = ToricLattice(2)
    23752391            sage: Cone([], lattice=N).facet_normals()  # empty cone
    2376             ()
     2392            []
     2393            in 2-d lattice M
    23772394            sage: Cone([(1,0)], lattice=N).facet_normals()  # ray in 2d
    2378             (M(1, 0),)
     2395            [1]
     2396            [0]
     2397            in 2-d lattice M
    23792398            sage: Cone([(1,0),(-1,0)], lattice=N).facet_normals()  # line in 2d
    2380             ()
     2399            []
     2400            in 2-d lattice M
    23812401            sage: Cone([(1,0),(0,1)], lattice=N).facet_normals()  # strictly convex cone
    2382             (M(1, 0), M(0, 1))
     2402            [1 0]
     2403            [0 1]
     2404            in 2-d lattice M
    23832405            sage: Cone([(1,0),(-1,0),(0,1)], lattice=N).facet_normals()  # half space
    2384             (M(0, 1),)
     2406            [0]
     2407            [1]
     2408            in 2-d lattice M
    23852409            sage: Cone([(1,0),(0,1),(-1,-1)], lattice=N).facet_normals()  # whole space
    2386             ()
     2410            []
     2411            in 2-d lattice M
    23872412        """
    23882413        if "_facet_normals" not in self.__dict__:
    23892414            cone = self._PPL_cone()
     
    23932418                if c.is_inequality():
    23942419                    normals.append(c.coefficients())
    23952420            M = self.dual_lattice()
    2396             normals = tuple(map(M,normals))
     2421            normals = tuple(map(M, normals))
    23972422            for n in normals:
    23982423                n.set_immutable()
    2399             self._facet_normals = normals
     2424            self._facet_normals = PointCollection(normals, M)
    24002425        return self._facet_normals
    24012426
    24022427    def facet_of(self):
     
    26122637            return False
    26132638        if self._ambient is cone._ambient:
    26142639            # Cones are always faces of their ambient structure, so
    2615             return self.ray_set().issubset(cone.ray_set())
     2640            return self.rays().set().issubset(cone.rays().set())
    26162641        if self.is_equivalent(cone):
    26172642            return True
    26182643        # Obviously False case
     
    28192844            [ 0  0]
    28202845        """
    28212846        if "_lattice_polytope" not in self.__dict__:
    2822             m = self.ray_matrix()
     2847            m = self.rays().matrix()
    28232848            if self.is_strictly_convex():
    28242849                m = m.augment(matrix(ZZ, self.lattice().degree(), 1)) # origin
    28252850            self._lattice_polytope = LatticePolytope(m,
     
    28402865        EXAMPLES::
    28412866
    28422867            sage: halfplane = Cone([(1,0), (0,1), (-1,0)])
    2843             sage: halfplane.line_set()
     2868            sage: halfplane.line_set() # random output (deprecation)
    28442869            frozenset([N(1, 0)])
    28452870            sage: fullplane = Cone([(1,0), (0,1), (-1,-1)])
    28462871            sage: fullplane.line_set()
    28472872            frozenset([N(0, 1), N(1, 0)])
    28482873        """
     2874        deprecation("line_set(...) is deprecated, "
     2875                    "please use lines().set() instead!",
     2876                    "Sage Version 5.0")
    28492877        if "_line_set" not in self.__dict__:
    28502878            self._line_set = frozenset(self.lines())
    28512879        return self._line_set
     
    30863114            sage: trivial_cone._orthogonal_sublattice_complement
    30873115            Sublattice <>
    30883116        """
    3089         Nsigma = self.ray_basis_matrix()
     3117        Nsigma = self.rays().basis().matrix()
    30903118        r = Nsigma.ncols()
    30913119        D, U, V = Nsigma.smith_form()  # D = U*N*V <=> N = Uinv*D*Vinv
    30923120        Uinv = U.inverse()
     
    31483176        EXAMPLES::
    31493177
    31503178            sage: cone = Cone([(1, 1, 1), (1, -1, 1), (-1, -1, 1), (-1, 1, 1)])
    3151             sage: cone.ray_basis_matrix()
     3179            sage: cone.rays().basis()
    31523180            [ 1  1 -1]
    31533181            [ 1 -1 -1]
    31543182            [ 1  1  1]
    3155             sage: cone.ray_basis_matrix().det()
     3183            in 3-d lattice N
     3184            sage: cone.rays().basis().matrix().det()
    31563185            -4
    31573186            sage: cone.sublattice()
    31583187            Sublattice <N(1, 1, 1), N(0, 1, 0), N(1, 0, 0)>
     
    34213450
    34223451        extra_ray = None
    34233452        if Ncone.dimension()-Nsubcone.dimension()==1:
    3424             extra_ray = set(self.ray_set() - subcone.ray_set()).pop()
     3453            extra_ray = set(self.rays().set() - subcone.rays().set()).pop()
    34253454
    34263455        Q = Ncone.quotient(Nsubcone, positive_point=extra_ray)
    34273456        assert Q.is_torsion_free()
     
    35163545
    35173546        extra_ray = None
    35183547        if Mcone.dimension()-Msupercone.dimension()==1:
    3519             extra_ray = set(supercone.ray_set() - self.ray_set()).pop()
     3548            extra_ray = set(supercone.rays().set() - self.rays().set()).pop()
    35203549
    35213550        Q = Mcone.quotient(Msupercone, positive_dual_point=extra_ray)
    35223551        assert Q.is_torsion_free()
     
    35293558
    35303559        OUTPUT:
    35313560
    3532         A tuple of lattice points generating the semigroup of lattice points
    3533         contained in this cone.
     3561        - a :class:`PointCollection` of lattice points generating the semigroup
     3562          of lattice points contained in ``self``.
    35343563       
    35353564        .. note:: No attempt is made to return a minimal set of generators, see
    35363565            :meth:`Hilbert_basis` for that.
     
    35453574        We start with a simple case of a non-smooth 2-dimensional cone::
    35463575       
    35473576            sage: Cone([ (1,0), (1,2) ]).semigroup_generators()
    3548             (N(1, 1), N(1, 0), N(1, 2))
     3577            [1 1 1]
     3578            [1 0 2]
     3579            in 2-d lattice N
    35493580
    35503581        A non-simplicial cone works, too::
    35513582
     
    35753606        http://trac.sagemath.org/sage_trac/ticket/11312)::
    35763607
    35773608            sage: Cone([(1,1,0), (-1,1,0)]).semigroup_generators()
    3578             (N(0, 1, 0), N(1, 1, 0), N(-1, 1, 0))
     3609            [ 0  1 -1]
     3610            [ 1  1  1]
     3611            [ 0  0  0]
     3612            in 3-d lattice N
    35793613
    35803614        Neither full-dimensional nor simplicial::
    35813615
     
    35963630
    35973631            sage: trivial_cone = Cone([], lattice=ToricLattice(3))
    35983632            sage: trivial_cone.semigroup_generators()
    3599             ()
     3633            []
     3634            in 3-d lattice N
    36003635
    36013636        ALGORITHM:
    36023637       
     
    36463681            return tuple(gens)
    36473682
    36483683        gens = list(parallelotope_points(self.rays(), N)) + list(self.rays())
    3649         gens = filter(lambda v:gcd(v)==1, gens)
    3650         return tuple(gens)
     3684        gens = filter(lambda v: gcd(v) == 1, gens)
     3685        return PointCollection(gens, N)
    36513686
    36523687    @cached_method
    36533688    def Hilbert_basis(self):
     
    36723707
    36733708        OUTPUT:
    36743709
    3675         A tuple of lattice points. The rays of the cone are the first
    3676         ``self.nrays()`` entries.
     3710        - a :class:`PointCollection`. The rays of ``self`` are the first
     3711          ``self.nrays()`` entries.
    36773712       
    36783713        EXAMPLES:
    36793714
     
    36853720        We start with a simple case of a non-smooth 2-dimensional cone::
    36863721       
    36873722            sage: Cone([ (1,0), (1,2) ]).Hilbert_basis()
    3688             (N(1, 0), N(1, 2), N(1, 1))
     3723            [1 1 1]
     3724            [0 2 1]
     3725            in 2-d lattice N
    36893726
    36903727        Two more complicated example from GAP/toric::
    36913728
    36923729            sage: Cone([[1,0],[3,4]]).dual().Hilbert_basis()
    3693             (M(0, 1), M(4, -3), M(3, -2), M(2, -1), M(1, 0))
     3730            [ 0  4  3  2  1]
     3731            [ 1 -3 -2 -1  0]
     3732            in 2-d lattice M
    36943733            sage: cone = Cone([[1,2,3,4],[0,1,0,7],[3,1,0,2],[0,0,1,0]]).dual()
    36953734            sage: cone.Hilbert_basis()           # long time
    3696             (M(10, -7, 0, 1), M(-5, 21, 0, -3), M(0, -2, 0, 1), M(15, -63, 25, 9),
    3697              M(2, -3, 0, 1), M(1, -4, 1, 1), M(-1, 3, 0, 0), M(4, -4, 0, 1),
    3698              M(1, -5, 2, 1), M(3, -5, 1, 1), M(6, -5, 0, 1), M(3, -13, 5, 2),
    3699              M(2, -6, 2, 1), M(5, -6, 1, 1), M(0, 1, 0, 0), M(8, -6, 0, 1),
    3700              M(-2, 8, 0, -1), M(10, -42, 17, 6), M(7, -28, 11, 4), M(5, -21, 9, 3),
    3701              M(6, -21, 8, 3), M(5, -14, 5, 2), M(2, -7, 3, 1), M(4, -7, 2, 1),
    3702              M(7, -7, 1, 1), M(0, 0, 1, 0), M(-3, 14, 0, -2), M(-1, 7, 0, -1),
    3703              M(1, 0, 0, 0))
     3735            [ 10  -5   0  15   2   1  -1   4   1   3   6   3   2   5   0   8  -2  10   7   5   6   5   2   4   7   0  -3  -1   1]
     3736            [ -7  21  -2 -63  -3  -4   3  -4  -5  -5  -5 -13  -6  -6   1  -6   8 -42 -28 -21 -21 -14  -7  -7  -7   0  14   7   0]
     3737            [  0   0   0  25   0   1   0   0   2   1   0   5   2   1   0   0   0  17  11   9   8   5   3   2   1   1   0   0   0]
     3738            [  1  -3   1   9   1   1   0   1   1   1   1   2   1   1   0   1  -1   6   4   3   3   2   1   1   1   0  -2  -1   0]
     3739            in 4-d lattice M
    37043740
    37053741        Not a strictly convex cone::
    37063742
     
    37083744            sage: wedge.semigroup_generators()
    37093745            (N(1, 0, 0), N(1, 1, 0), N(1, 2, 0), N(0, 0, 1), N(0, 0, -1))
    37103746            sage: wedge.Hilbert_basis()
    3711             (N(1, 2, 0), N(1, 0, 0), N(0, 0, 1), N(0, 0, -1), N(1, 1, 0))
     3747            [ 1  1  0  0  1]
     3748            [ 2  0  0  0  1]
     3749            [ 0  0  1 -1  0]
     3750            in 3-d lattice N
    37123751
    37133752        Not full-dimensional cones are ok, too (see
    37143753        http://trac.sagemath.org/sage_trac/ticket/11312)::
    37153754
    37163755            sage: Cone([(1,1,0), (-1,1,0)]).Hilbert_basis()
    3717             (N(1, 1, 0), N(-1, 1, 0), N(0, 1, 0))
     3756            [ 1 -1  0]
     3757            [ 1  1  1]
     3758            [ 0  0  0]
     3759            in 3-d lattice N
    37183760
    37193761        ALGORITHM:
    37203762       
     
    37473789                   for y in irreducible+gens):
    37483790                continue
    37493791            irreducible.append(x)
    3750         return tuple(irreducible)
     3792        if len(irreducible) == self.nrays():
     3793            return self.rays()
     3794        else:
     3795            return PointCollection(irreducible, self.lattice())
    37513796
    37523797    def Hilbert_coefficients(self, point):
    37533798        r"""
     
    37873832            sage: N = ToricLattice(2)
    37883833            sage: cone = Cone([N(1,0),N(1,2)])
    37893834            sage: cone.Hilbert_basis()
    3790             (N(1, 0), N(1, 2), N(1, 1))
     3835            [1 1 1]
     3836            [0 2 1]
     3837            in 2-d lattice N
    37913838            sage: cone.Hilbert_coefficients( N(1,1) )
    37923839            (0, 0, 1)
    37933840
     
    37963843            sage: N = ToricLattice(3)
    37973844            sage: cone = Cone([N(1,0,0),N(1,2,0),N(0,0,1),N(0,0,-1)])
    37983845            sage: cone.Hilbert_basis()
    3799             (N(1, 2, 0), N(1, 0, 0), N(0, 0, 1), N(0, 0, -1), N(1, 1, 0))
     3846            [ 1  1  0  0  1]
     3847            [ 2  0  0  0  1]
     3848            [ 0  0  1 -1  0]
     3849            in 3-d lattice N
    38003850            sage: cone.Hilbert_coefficients( N(1,1,3) )
    38013851            (0, 0, 3, 0, 1)
    38023852        """
    3803         if self.is_strictly_convex():
    3804             def in_linear_subspace(x): return False
    3805         else:
    3806             linear_subspace = self.linear_subspace()
    3807             def in_linear_subspace(x): return x in linear_subspace
    3808            
    38093853        point = self.lattice()(point)
    3810         assert point in self, 'The given point is not in the cone!'
     3854        if point not in self:
     3855            raise ValueError('The given point is not in the cone!')
    38113856        basis = self.Hilbert_basis()
    38123857       
    38133858        from sage.numerical.mip import MixedIntegerLinearProgram
  • sage/geometry/fan.py

    diff --git a/sage/geometry/fan.py b/sage/geometry/fan.py
    a b  
    5151    [ 0  1  0  0 -1  0]
    5252    [ 0  0  1  0  0 -1]
    5353    in 3-d lattice N
    54     sage: fan1.ray_matrix()
    55     [ 1  0  0 -1  0  0]
    56     [ 0  1  0  0 -1  0]
    57     [ 0  0  1  0  0 -1]
    5854    sage: fan1.generating_cones()
    5955    (3-d cone of Rational polyhedral fan in 3-d lattice N,
    6056     3-d cone of Rational polyhedral fan in 3-d lattice N,
     
    158154    sage: cone.rays()
    159155    Traceback (most recent call last):
    160156    ...
    161     AttributeError: 'FinitePoset_with_category.element_class' object has no attribute 'rays'
     157    AttributeError: 'FinitePoset_with_category.element_class' object
     158    has no attribute 'rays'
    162159
    163160To get your hands on the "real" cone, you need to do one more step::
    164161
     
    599596
    600597        sage: diamond = lattice_polytope.octahedron(2)
    601598        sage: P1xP1 = FaceFan(diamond)
    602         sage: P1xP1.ray_matrix()
     599        sage: P1xP1.rays()
    603600        [ 1  0 -1  0]
    604601        [ 0  1  0 -1]
     602        in 2-d lattice N
    605603        sage: for cone in P1xP1: print cone.rays()
    606604        [ 1  0]
    607605        [ 0 -1]
     
    653651
    654652        sage: square = lattice_polytope.octahedron(2).polar()
    655653        sage: P1xP1 = NormalFan(square)
    656         sage: P1xP1.ray_matrix()
     654        sage: P1xP1.rays()
    657655        [ 1  0 -1  0]
    658656        [ 0  1  0 -1]
     657        in 2-d lattice N
    659658        sage: for cone in P1xP1: print cone.rays()
    660659        [ 1  0]
    661660        [ 0 -1]
     
    10701069            sage: cone1 = Cone([(1,0), (0,1)])
    10711070            sage: cone2 = Cone([(-1,0)])
    10721071            sage: fan = Fan([cone1, cone2])
    1073             sage: fan.ray_matrix()
     1072            sage: fan.rays()
    10741073            [ 0  1 -1]
    10751074            [ 1  0  0]
     1075            in 2-d lattice N
    10761076            sage: for cone in fan: print cone.ambient_ray_indices()
    10771077            (0, 1)
    10781078            (2,)
     
    14511451            sage: # Timing information will depend on your machine
    14521452            sage: new_fan = fan._subdivide_palp(new_rays, True)
    14531453            R:1/1  C:2  T:...(ms)  T/new:...(ms)  T/all:...(ms)
    1454             sage: new_fan.ray_matrix()
     1454            sage: new_fan.rays()
    14551455            [1 0 1]
    14561456            [0 1 1]
     1457            in 2-d lattice N
    14571458            sage: for cone in new_fan: print cone.ambient_ray_indices()
    14581459            (1, 2)
    14591460            (0, 2)
     
    15221523        # Convert lattice polytopes to cones
    15231524        new_fan_rays = list(self.rays())
    15241525        new_fan_rays.extend(ray for ray in new_rays
    1525                                 if ray not in self.ray_set())
     1526                                if ray not in self.rays().set())
    15261527        cones = tuple(tuple(sorted(new_fan_rays.index(cone_polytope.vertex(v))
    15271528                            for v in range(cone_polytope.nvertices() - 1)))
    15281529                      for cone_polytope in cone_polytopes)
     
    15661567            ...
    15671568            ValueError: there is no cone in
    15681569            Rational polyhedral fan in 2-d lattice N
    1569             containing all of the given rays! Rays: (N(0, 1), N(0, -1))
     1570            containing all of the given rays! Ray indices: [0, 1]
    15701571            sage: f.cone_containing(0, 2) # ray indices
    15711572            2-d cone of Rational polyhedral fan in 2-d lattice N
    15721573            sage: f.cone_containing((0,1))  # point
     
    16081609                generating_cones.intersection_update(self._ray_to_cones(ray))
    16091610            if not generating_cones:
    16101611                raise ValueError("there is no cone in %s containing all of "
    1611                         "the given rays! Rays: %s" % (self, self.rays(rays)))
     1612                        "the given rays! Ray indices: %s" % (self, rays))
    16121613            containing_cone = self.generating_cone(generating_cones.pop())
    16131614            for cone in generating_cones:
    16141615                containing_cone = containing_cone.intersection(
     
    16821683            sage: cone1 = Cone([(1,0), (0,1)])
    16831684            sage: cone2 = Cone([(-1,0)])
    16841685            sage: fan = Fan([cone1, cone2])
    1685             sage: fan.ray_matrix()
     1686            sage: fan.rays()
    16861687            [ 0  1 -1]
    16871688            [ 1  0  0]
     1689            in 2-d lattice N
    16881690            sage: for cone in fan: print cone.ambient_ray_indices()
    16891691            (0, 1)
    16901692            (2,)
     
    20242026        except ValueError:
    20252027            raise ValueError("%s does not belong to %s!" % (cone, self))
    20262028        return result
    2027            
     2029
     2030    @cached_method
    20282031    def Gale_transform(self):
    20292032        r"""
    20302033        Return the Gale transform of ``self``.
     
    20422045            sage: _.base_ring()
    20432046            Integer Ring
    20442047        """
    2045         if "_Gale_transform" not in self.__dict__:
    2046             m = self.ray_matrix().augment(matrix(self.lattice_dim(), 1))
    2047             m = m.stack(matrix([1]*m.ncols()))
    2048             self._Gale_transform = matrix(ZZ, m.transpose().integer_kernel().matrix())
    2049         return self._Gale_transform
     2048        m = self.rays().matrix().augment(matrix(self.lattice_dim(), 1))
     2049        m = m.stack(matrix([1]*m.ncols()))
     2050        return matrix(ZZ, m.transpose().integer_kernel().matrix())
    20502051
    20512052    def generating_cone(self, n):
    20522053        r"""
     
    21842185        if (self.lattice() != other.lattice()
    21852186            or self.dim() != other.dim()
    21862187            or self.ngenerating_cones() != other.ngenerating_cones()
    2187             or self.ray_set() != other.ray_set()):
     2188            or self.rays().set() != other.rays().set()):
    21882189            return False
    21892190        # Now we need to really compare cones, which can take a while
    21902191        return sorted(sorted(cone.rays()) for cone in self) \
     
    23202321            [-1 -1]
    23212322            [ 1 -1]
    23222323            in 2-d lattice N
    2323             sage: fan.generating_cone(0).ray_matrix().det()
     2324            sage: fan.generating_cone(0).rays().matrix().det()
    23242325            2
    23252326        """
    23262327        if codim is None or codim < 0:
     
    24692470        else:
    24702471            rays = []
    24712472        rays.extend(ray for ray in normalize_rays(new_rays, self.lattice())
    2472                         if ray not in self.ray_set())
     2473                        if ray not in self.rays().set())
    24732474        if not rays:
    24742475            return self # Nothing has to be done
    24752476        if self.lattice().zero() in rays:
     
    26592660            + 3-d cone of Rational polyhedral fan in 3-d lattice N
    26602661            - 3-d cone of Rational polyhedral fan in 3-d lattice N
    26612662            + 3-d cone of Rational polyhedral fan in 3-d lattice N
    2662             sage: [ matrix(cone.ray_basis()).det() for cone in fan.generating_cones() ]
     2663            sage: [cone.rays().basis().matrix().det()
     2664            ...    for cone in fan.generating_cones()]
    26632665            [-1, 1, -1, 1]
    26642666
    26652667        A non-full dimensional fan::
     
    27022704                outward_v = [ Q.lift(q) for q in Q.gens() ]
    27032705               
    27042706            outward_vectors[c] = outward_v
    2705             orientation = sign(matrix(outward_v + list(c.ray_basis())).det())
     2707            orientation = sign(matrix(outward_v + list(c.rays().basis())).det())
    27062708            generating_cones.append(tuple([orientation, c]))
    27072709        boundaries = {self:FormalSum(generating_cones)}
    27082710
     
    27122714        for d in range(dim, -1, -1):
    27132715            for c in self(d):
    27142716                c_boundary = []
    2715                 c_matrix = matrix(outward_vectors[c] + list(c.ray_basis()))
     2717                c_matrix = matrix(outward_vectors[c] + list(c.rays().basis()))
    27162718                c_matrix_inv = c_matrix.inverse()
    27172719                for facet in c.facets():
    27182720                    outward_ray_indices = set(c.ambient_ray_indices()) \
    27192721                              .difference(set(facet.ambient_ray_indices()))
    27202722                    outward_vector = - sum(self.ray(i) for i in outward_ray_indices)
    27212723                    outward_vectors[facet] = [outward_vector] + outward_vectors[c]
    2722                     facet_matrix = matrix(outward_vectors[facet] + list(facet.ray_basis()))
     2724                    facet_matrix = matrix(outward_vectors[facet] + list(facet.rays().basis()))
    27232725                    orientation = sign((c_matrix_inv * facet_matrix).det())
    27242726                    c_boundary.append(tuple([orientation, facet]))
    27252727                boundaries[c] = FormalSum(c_boundary)
  • sage/geometry/fan_morphism.py

    diff --git a/sage/geometry/fan_morphism.py b/sage/geometry/fan_morphism.py
    a b  
    4646    [0 0]
    4747    Domain fan: Rational polyhedral fan in 2-d lattice N
    4848    Codomain fan: Rational polyhedral fan in 2-d lattice N   
    49     sage: fm.domain_fan().ray_matrix()
     49    sage: fm.domain_fan().rays()
    5050    [-1  1 -1  1  0  0]
    51     [ 1  1 -1 -1 -1  1]   
    52     sage: normal.ray_matrix()
     51    [ 1  1 -1 -1 -1  1]
     52    in 2-d lattice N
     53    sage: normal.rays()
    5354    [-1  1 -1  1]
    5455    [ 1  1 -1 -1]
     56    in 2-d lattice N
    5557   
    5658As you see, it was necessary to insert two new rays (to prevent "upper" and
    5759"lower" cones of the normal fan from being mapped to the whole `x`-axis).
     
    177179        sage: fm = FanMorphism(phi, face)
    178180        sage: fm.codomain_fan()
    179181        Rational polyhedral fan in 2-d lattice N
    180         sage: fm.codomain_fan().ray_matrix()
     182        sage: fm.codomain_fan().rays()
    181183        [ 1 -1]
    182184        [ 0  0]
     185        in 2-d lattice N
    183186       
    184187    Now we demonstrate a more subtle example. We take the first quadrant as our
    185188    domain fan. Then we divide the first quadrant into three cones, throw away
     
    399402            ValueError: codomain (fan) must be given explicitly
    400403            if morphism is given by a matrix!
    401404            sage: fm = FanMorphism(identity_matrix(2), quadrant_bl, ZZ^2)
    402             sage: fm.codomain_fan().ray_matrix()  # indirect doctest
     405            sage: fm.codomain_fan().rays()  # indirect doctest
    403406            [1 0 1]
    404407            [0 1 1]
     408            in Ambient free module of rank 2
     409            over the principal ideal domain Integer Ring
    405410        """
    406411        # We literally try to construct the image fan and hope that it works.
    407412        # If it does not, the fan constructor will raise an exception.
     
    547552            is not contained in a single cone of the codomain fan!
    548553            sage: fm = FanMorphism(identity_matrix(2), quadrant,
    549554            ...                    quadrant_bl, subdivide=True)
    550             sage: fm.domain_fan().ray_matrix()  # indirect doctest
     555            sage: fm.domain_fan().rays()  # indirect doctest
    551556            [1 0 1]
    552557            [0 1 1]
     558            in 2-d lattice N
    553559
    554560        Now we demonstrate a more subtle example. We take the first quadrant
    555561        as our ``domain_fan``. Then we divide the first quadrant into three
     
    585591            sage: Sigma_prime = FaceFan(lattice_polytope.octahedron(3))
    586592            sage: fm = FanMorphism(identity_matrix(3),
    587593            ...                    Sigma, Sigma_prime, subdivide=True)
    588             sage: fm.domain_fan().ray_matrix()
     594            sage: fm.domain_fan().rays()
    589595            [ 1  1  1]
    590596            [ 1 -1  0]
    591597            [ 0  0  0]
     598            in 3-d lattice N
    592599            sage: [cone.ambient_ray_indices() for cone in fm.domain_fan()]
    593600            [(0, 2), (1, 2)]
    594601           
     
    748755            sage: F1 = Fan(cones=[(0,1,2), (1,2,3)],
    749756            ...            rays=[(1,1,1), (1,1,-1), (1,-1,1), (1,-1,-1)],
    750757            ...            lattice=N3)
    751             sage: F1.ray_matrix()
     758            sage: F1.rays()
    752759            [ 1  1  1  1]
    753760            [ 1  1 -1 -1]
    754761            [ 1 -1  1 -1]
     762            in 3-d lattice N3
    755763            sage: [phi(ray) for ray in F1.rays()]
    756764            [N2(2, 1), N2(0, 1), N2(2, -1), N2(0, -1)]
    757765            sage: F2 = Fan(cones=[(0,1,2), (1,2,3)],
    758766            ...            rays=[(1,1,1), (1,1,-1), (1,2,1), (1,2,-1)],
    759767            ...            lattice=N3)
    760             sage: F2.ray_matrix()
     768            sage: F2.rays()
    761769            [ 1  1  1  1]
    762770            [ 1  1  2  2]
    763771            [ 1 -1  1 -1]
     772            in 3-d lattice N3
    764773            sage: [phi(ray) for ray in F2.rays()]
    765774            [N2(2, 1), N2(0, 1), N2(2, 2), N2(0, 2)]
    766775            sage: F3 = Fan(cones=[(0,1), (1,2)],
     
    13041313            sage: fm = FanMorphism(matrix(2, 1, [1,-1]), fan, ToricLattice(1))
    13051314            sage: fm.kernel_fan()
    13061315            Rational polyhedral fan in Sublattice <N(1, 1)>
    1307             sage: _.ray_matrix()
     1316            sage: _.rays()
    13081317            [1]
    13091318            [1]
     1319            in Sublattice <N(1, 1)>
    13101320            sage: fm.kernel_fan().cones()
    13111321            ((0-d cone of Rational polyhedral fan in Sublattice <N(1, 1)>,),
    13121322             (1-d cone of Rational polyhedral fan in Sublattice <N(1, 1)>,))
     
    14661476        Consider a projection of a del Pezzo surface onto the projective line::
    14671477       
    14681478            sage: Sigma = toric_varieties.dP6().fan()
    1469             sage: Sigma.ray_matrix()
     1479            sage: Sigma.rays()
    14701480            [ 0 -1 -1  0  1  1]
    14711481            [ 1  0 -1 -1  0  1]
     1482            in 2-d lattice N
    14721483            sage: Sigma_p = toric_varieties.P1().fan()
    14731484            sage: phi = FanMorphism(matrix([[1], [-1]]), Sigma, Sigma_p)
    14741485           
     
    15571568       
    15581569            sage: psi.codomain().gens()
    15591570            (N(1, 1),)
    1560             sage: psi.codomain_fan().ray_matrix()
     1571            sage: psi.codomain_fan().rays()
    15611572            [ 1 -1]
    15621573            [ 1 -1]
     1574            in Sublattice <N(1, 1)>
    15631575           
    15641576        Restriction to image returns exactly the same map if the corresponding
    15651577        map of vector spaces is surjective, e.g. in the case of double
  • sage/geometry/point_collection.pyx

    diff --git a/sage/geometry/point_collection.pyx b/sage/geometry/point_collection.pyx
    a b  
    99
    1010- Andrey Novoseltsev (2011-04-25): initial version, based on cone module.
    1111
     12- Andrey Novoseltsev (2012-03-06): additions and doctest changes while
     13  switching cones to use point collections.
     14
    1215EXAMPLES:
    1316
    1417The idea behind :class:`point collections <PointCollection>` is to have a
     
    1619
    1720* behaves like a tuple *without significant performance penalty*::
    1821
    19     sage: from sage.geometry.point_collection import PointCollection
    20     sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    21     sage: c = PointCollection(c.rays(), c.lattice())
     22    sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    2223    sage: c[1]
    2324    N(1, 0, 1)
    2425    sage: for point in c: point
     
    6768"""
    6869
    6970#*****************************************************************************
    70 #       Copyright (C) 2011 Andrey Novoseltsev <novoselt@gmail.com>
     71#       Copyright (C) 2012 Andrey Novoseltsev <novoselt@gmail.com>
    7172#
    7273#  Distributed under the terms of the GNU General Public License (GPL)
    7374#  as published by the Free Software Foundation; either version 2 of
     
    9899        sage: from sage.geometry.point_collection import is_PointCollection
    99100        sage: is_PointCollection(1)
    100101        False
    101         sage: from sage.geometry.point_collection import PointCollection
    102102        sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    103103        sage: is_PointCollection(c.rays())
    104104        True
    105         sage: c = PointCollection(c.rays(), c.lattice())
    106         sage: is_PointCollection(c)
    107         True
    108105    """
    109106    return isinstance(x, PointCollection)
    110107
     
    184181
    185182        TESTS::
    186183
    187             sage: from sage.geometry.point_collection import PointCollection
    188             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    189             sage: c = PointCollection(c.rays(), c.lattice())
     184            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    190185            sage: c()
    191186            []
    192187            in 3-d lattice N
     
    226221
    227222        TESTS::
    228223
    229             sage: from sage.geometry.point_collection import PointCollection
    230             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    231             sage: c = PointCollection(c.rays(), c.lattice())
     224            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    232225            sage: cmp(c, c)
    233226            0
    234227            sage: cmp(c, 1) * cmp(1, c)
     
    257250
    258251        EXAMPLES::
    259252
    260             sage: from sage.geometry.point_collection import PointCollection
    261             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    262             sage: c = PointCollection(c.rays(), c.lattice())
     253            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    263254            sage: c[0]
    264255            N(0, 0, 1)
    265256        """
     
    275266
    276267        TESTS::
    277268
    278             sage: from sage.geometry.point_collection import PointCollection
    279             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    280             sage: c = PointCollection(c.rays(), c.lattice())
     269            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    281270            sage: hash(c) == hash(c)
    282271            True
    283272        """
     
    293282
    294283        TESTS::
    295284
    296             sage: from sage.geometry.point_collection import PointCollection
    297             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    298             sage: c = PointCollection(c.rays(), c.lattice())
     285            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    299286            sage: for point in c: print point
    300287            N(0, 0, 1)
    301288            N(1, 0, 1)
     
    314301
    315302        EXAMPLES::
    316303
    317             sage: from sage.geometry.point_collection import PointCollection
    318             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    319             sage: c = PointCollection(c.rays(), c.lattice())
     304            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    320305            sage: len(c)
    321306            4
    322307        """
     
    332317
    333318        TESTS::
    334319
    335             sage: from sage.geometry.point_collection import PointCollection
    336             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    337             sage: c = PointCollection(c.rays(), c.lattice())
     320            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    338321            sage: list(c)
    339322            [N(0, 0, 1), N(1, 0, 1), N(0, 1, 1), N(1, 1, 1)]
    340323        """
     
    351334
    352335        TESTS::
    353336
    354             sage: from sage.geometry.point_collection import PointCollection
    355             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    356             sage: c = PointCollection(c.rays(), c.lattice())
     337            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    357338            sage: loads(dumps(c))
    358339            [0 1 0 1]
    359340            [0 0 1 1]
     
    374355
    375356        TESTS::
    376357
    377             sage: from sage.geometry.point_collection import PointCollection
    378             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    379             sage: c = PointCollection(c.rays(), c.lattice())
     358            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    380359            sage: tuple(c)
    381360            (N(0, 0, 1), N(1, 0, 1), N(0, 1, 1), N(1, 1, 1))
    382361        """
     
    392371
    393372        TESTS::
    394373
    395             sage: from sage.geometry.point_collection import PointCollection
    396             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    397             sage: c = PointCollection(c.rays(), c.lattice())
     374            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    398375            sage: print c._latex_()
    399376            \left(\begin{array}{rrrr}
    400377            0 & 1 & 0 & 1 \\
     
    414391
    415392        TESTS::
    416393
    417             sage: from sage.geometry.point_collection import PointCollection
    418             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    419             sage: c = PointCollection(c.rays(), c.lattice())
     394            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    420395            sage: print c._repr_()
    421396            [0 1 0 1]
    422397            [0 0 1 1]
     
    437412
    438413        EXAMPLES::
    439414
    440             sage: from sage.geometry.point_collection import PointCollection
    441             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    442             sage: c = PointCollection(c.rays(), c.lattice())
     415            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    443416            sage: c.basis()
    444417            [0 1 0]
    445418            [0 0 1]
     
    466439
    467440        EXAMPLES::
    468441
    469             sage: from sage.geometry.point_collection import PointCollection
    470             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    471             sage: c = PointCollection(c.rays(), c.lattice())
     442            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    472443            sage: c.cardinality()
    473444            4
    474445        """
     
    492463       
    493464        EXAMPLES::
    494465
    495             sage: from sage.geometry.point_collection import PointCollection
    496             sage: c = Cone([(0,0,1), (1,1,1)])
    497             sage: c = PointCollection(c.rays(), c.lattice())
     466            sage: c = Cone([(0,0,1), (1,1,1)]).rays()
    498467            sage: c.cartesian_product(c)
    499468            [0 1 0 1]
    500469            [0 1 0 1]
     
    526495
    527496        EXAMPLES::
    528497
    529             sage: from sage.geometry.point_collection import PointCollection
    530             sage: c = Cone([(0,0,1), (1,1,1)])
    531             sage: c = PointCollection(c.rays(), c.lattice())
     498            sage: c = Cone([(0,0,1), (1,1,1)]).rays()
    532499            sage: c.dimension()
    533500            2
    534501            sage: c.dim()
     
    551518
    552519        EXAMPLES::
    553520
    554             sage: from sage.geometry.point_collection import PointCollection
    555             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    556             sage: c = PointCollection(c.rays(), c.lattice())
     521            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    557522            sage: c.dual_module()
    558523            3-d lattice M
    559524        """
     
    585550
    586551        EXAMPLES::
    587552
    588             sage: from sage.geometry.point_collection import PointCollection
    589             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    590             sage: c = PointCollection(c.rays(), c.lattice())
     553            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    591554            sage: c.index((0,1,1))
    592555            Traceback (most recent call last):
    593556            ...
     
    615578
    616579        EXAMPLES::
    617580
    618             sage: from sage.geometry.point_collection import PointCollection
    619             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    620             sage: c = PointCollection(c.rays(), c.lattice())
     581            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    621582            sage: c.matrix()
    622583            [0 1 0 1]
    623584            [0 0 1 1]
     
    640601
    641602        EXAMPLES::
    642603
    643             sage: from sage.geometry.point_collection import PointCollection
    644             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    645             sage: c = PointCollection(c.rays(), c.lattice())
     604            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    646605            sage: c.module()
    647606            3-d lattice N
    648607        """
     
    658617
    659618        EXAMPLES::
    660619
    661             sage: from sage.geometry.point_collection import PointCollection
    662             sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)])
    663             sage: c = PointCollection(c.rays(), c.lattice())
     620            sage: c = Cone([(0,0,1), (1,0,1), (0,1,1), (1,1,1)]).rays()
    664621            sage: c.set()
    665622            frozenset([N(0, 1, 1), N(1, 1, 1), N(0, 0, 1), N(1, 0, 1)])
    666623        """
  • sage/schemes/generic/algebraic_scheme.py

    diff --git a/sage/schemes/generic/algebraic_scheme.py b/sage/schemes/generic/algebraic_scheme.py
    a b  
    22882288        polynomials = [ p.subs(inhomogenize) for p in self.defining_polynomials() ]
    22892289
    22902290        # map the monomial x^{D_m} to m, see reference.
    2291         n_rho_matrix = cone.ray_matrix()
     2291        n_rho_matrix = cone.rays().matrix()
    22922292        def pullback_polynomial(p):
    22932293            result = R.zero()
    22942294            for coefficient, monomial in p:
  • sage/schemes/generic/fano_toric_variety.py

    diff --git a/sage/schemes/generic/fano_toric_variety.py b/sage/schemes/generic/fano_toric_variety.py
    a b  
    305305        2-d CPR-Fano toric variety covered by 4 affine patches
    306306        sage: P1xP1.fan()
    307307        Rational polyhedral fan in 2-d lattice N
    308         sage: P1xP1.fan().ray_matrix()
     308        sage: P1xP1.fan().rays()
    309309        [ 1  0 -1  0]
    310310        [ 0  1  0 -1]
     311        in 2-d lattice N
    311312
    312313    "Unfortunately," this variety is smooth to start with and we cannot
    313314    perform any subdivisions of the underlying fan without leaving the
     
    325326    We will construct several varieties associated to it::
    326327
    327328        sage: FTV = CPRFanoToricVariety(Delta_polar=square)
    328         sage: FTV.fan().ray_matrix()
     329        sage: FTV.fan().rays()
    329330        [-1  1 -1  1]
    330331        [ 1  1 -1 -1]
     332        in 2-d lattice N
    331333        sage: FTV.gens()
    332334        (z0, z1, z2, z3)
    333335
    334336        sage: FTV = CPRFanoToricVariety(Delta_polar=square,
    335337        ...         coordinate_points=[0,1,2,3,8])
    336         sage: FTV.fan().ray_matrix()
     338        sage: FTV.fan().rays()
    337339        [-1  1 -1  1  1]
    338340        [ 1  1 -1 -1  0]
     341        in 2-d lattice N
    339342        sage: FTV.gens()
    340343        (z0, z1, z2, z3, z8)
    341344
    342345        sage: FTV = CPRFanoToricVariety(Delta_polar=square,
    343346        ...         coordinate_points=[8,0,2,1,3],
    344347        ...         coordinate_names="x+")
    345         sage: FTV.fan().ray_matrix()
     348        sage: FTV.fan().rays()
    346349        [ 1 -1 -1  1  1]
    347350        [ 0  1 -1  1 -1]
     351        in 2-d lattice N
    348352        sage: FTV.gens()
    349353        (x8, x0, x2, x1, x3)
    350354
    351355        sage: FTV = CPRFanoToricVariety(Delta_polar=square,
    352356        ...         coordinate_points="all",
    353357        ...         coordinate_names="x y Z+")
    354         sage: FTV.fan().ray_matrix()
     358        sage: FTV.fan().rays()
    355359        [-1  1 -1  1 -1  0  0  1]
    356360        [ 1  1 -1 -1  0 -1  1  0]
     361        in 2-d lattice N
    357362        sage: FTV.gens()
    358363        (x, y, Z2, Z3, Z4, Z5, Z7, Z8)
    359364
     
    414419        sage: FTV = CPRFanoToricVariety(Delta_polar=square,
    415420        ...         coordinate_points=[0,1,2,3,4],
    416421        ...         charts=charts)
    417         sage: FTV.fan().ray_matrix()
     422        sage: FTV.fan().rays()
    418423        [-1  1 -1  1 -1]
    419424        [ 1  1 -1 -1  0]
     425        in 2-d lattice N
    420426        sage: [cone.ambient_ray_indices() for cone in FTV.fan()]
    421427        [(0, 1), (1, 3), (2, 3), (2, 4), (0, 4)]
    422428
     
    440446        ...         coordinate_points=[0,1,2,3,4],
    441447        ...         charts=bad_charts,
    442448        ...         check=False)
    443         sage: FTV.fan().ray_matrix()
     449        sage: FTV.fan().rays()
    444450        [-1  1 -1  1 -1]
    445451        [ 1  1 -1 -1  0]
     452        in 2-d lattice N
    446453        sage: [cone.ambient_ray_indices() for cone in FTV.fan()]
    447454        [(0, 1), (1, 3), (2, 3), (2, 4), (0, 4), (2, 4), (0, 4)]
    448455
     
    586593            raise ValueError("given charts do not form a complete fan!")
    587594    # Subdivide this fan to use all required points
    588595    fan = fan.subdivide(new_rays=(ray for ray in rays
    589                                       if ray not in fan.ray_set()),
     596                                      if ray not in fan.rays().set()),
    590597                        make_simplicial=make_simplicial)
    591598    # Now create yet another fan making sure that the order of the rays is
    592599    # the same as requested (it is a bit difficult to get it from the start)
  • sage/schemes/generic/toric_divisor.py

    diff --git a/sage/schemes/generic/toric_divisor.py b/sage/schemes/generic/toric_divisor.py
    a b  
    828828
    829829        assert cone.ambient() is fan
    830830        b = vector(self.coefficient(i) for i in cone.ambient_ray_indices())
    831         A = cone.ray_matrix()
     831        A = cone.rays().matrix()
    832832        try:
    833833            if cone.dim() == X.dimension():
    834834                # either unique solution or ValueError (if not QQ-Cartier)
  • sage/schemes/generic/toric_morphism.py

    diff --git a/sage/schemes/generic/toric_morphism.py b/sage/schemes/generic/toric_morphism.py
    a b  
    506506        for rho, x in zip(phi.domain_fan(1), R.gens()):
    507507            ray = rho.ray(0)
    508508            sigma = phi.image_cone(rho)
    509             degrees = sigma.ray_matrix().solve_right(phi(ray))
     509            degrees = sigma.rays().matrix().solve_right(phi(ray))
    510510            for i, d in zip(sigma.ambient_ray_indices(), degrees):
    511511                try:
    512512                    d = ZZ(d)
  • sage/schemes/generic/toric_variety.py

    diff --git a/sage/schemes/generic/toric_variety.py b/sage/schemes/generic/toric_variety.py
    a b  
    9797    sage: P1xP1 = ToricVariety(fan)
    9898    sage: P1xP1
    9999    2-d toric variety covered by 4 affine patches
    100     sage: P1xP1.fan().ray_matrix()
     100    sage: P1xP1.fan().rays()
    101101    [ 1  0 -1  0]
    102102    [ 0  1  0 -1]
     103    in 2-d lattice N
    103104    sage: P1xP1.gens()
    104105    (z0, z1, z2, z3)
    105106
     
    141142    sage: patch = P1xP1.affine_patch(2)
    142143    sage: patch
    143144    2-d affine toric variety
    144     sage: patch.fan().ray_matrix()
     145    sage: patch.fan().rays()
    145146    [1 0]
    146147    [0 1]
     148    in 2-d lattice N
    147149    sage: patch.embedding_morphism()
    148150    Scheme morphism:
    149151      From: 2-d affine toric variety
     
    168170    sage: P1xP1.is_smooth()
    169171    True
    170172    sage: TV = ToricVariety(NormalFan(diamond))
    171     sage: TV.fan().ray_matrix()
     173    sage: TV.fan().rays()
    172174    [-1  1 -1  1]
    173175    [ 1  1 -1 -1]
     176    in 2-d lattice N
    174177    sage: TV.is_orbifold()
    175178    True
    176179    sage: TV.is_smooth()
     
    179182In higher dimensions worse things can happen::
    180183
    181184    sage: TV3 = ToricVariety(NormalFan(lattice_polytope.octahedron(3)))
    182     sage: TV3.fan().ray_matrix()
     185    sage: TV3.fan().rays()
    183186    [-1  1 -1  1 -1  1 -1  1]
    184187    [-1 -1  1  1 -1 -1  1  1]
    185188    [ 1  1  1  1 -1 -1 -1 -1]
     189    in 3-d lattice N
    186190    sage: TV3.is_orbifold()
    187191    False
    188192
     
    389393    We will create the product of two projective lines::
    390394
    391395        sage: fan = FaceFan(lattice_polytope.octahedron(2))
    392         sage: fan.ray_matrix()
     396        sage: fan.rays()
    393397        [ 1  0 -1  0]
    394398        [ 0  1  0 -1]
     399        in 2-d lattice N
    395400        sage: P1xP1 = ToricVariety(fan)
    396401        sage: P1xP1.gens()
    397402        (z0, z1, z2, z3)
     
    893898        `(x, y)` for one and `(s, t)` for the other::
    894899
    895900            sage: fan = FaceFan(lattice_polytope.octahedron(2))
    896             sage: fan.ray_matrix()
     901            sage: fan.rays()
    897902            [ 1  0 -1  0]
    898903            [ 0  1  0 -1]
     904            in 2-d lattice N
    899905            sage: P1xP1 = ToricVariety(fan, "x s y t")
    900906            sage: P1xP1.inject_variables()
    901907            Defining x, s, y, t
     
    12211227        `(x, y)` for one and `(s, t)` for the other::
    12221228
    12231229            sage: fan = FaceFan(lattice_polytope.octahedron(2))
    1224             sage: fan.ray_matrix()
     1230            sage: fan.rays()
    12251231            [ 1  0 -1  0]
    12261232            [ 0  1  0 -1]
     1233            in 2-d lattice N
    12271234            sage: P1xP1 = ToricVariety(fan, "x s y t")
    12281235            sage: P1xP1.inject_variables()
    12291236            Defining x, s, y, t
     
    12621269        if '_homogeneous_degrees_group' not in self.__dict__:
    12631270            fan = self.fan()
    12641271            from sage.modules.free_module import FreeModule
    1265             degrees_group = FreeModule(ZZ, fan.nrays()).quotient(fan.ray_matrix().rows())
     1272            degrees_group = FreeModule(ZZ, fan.nrays()).quotient(
     1273                                                    fan.rays().matrix().rows())
    12661274            self._homogeneous_degrees_group = degrees_group
    12671275        degrees_group = self._homogeneous_degrees_group
    12681276        S = self.coordinate_ring()
     
    16771685            sage: TV_res = TV.resolve(new_rays=[(0,1)])
    16781686            sage: TV_res.is_smooth()
    16791687            True
    1680             sage: TV_res.fan().ray_matrix()
     1688            sage: TV_res.fan().rays()
    16811689            [ 1 -1  0]
    16821690            [ 1  1  1]
     1691            in 2-d lattice N
    16831692            sage: [cone.ambient_ray_indices() for cone in TV_res.fan()]
    16841693            [(0, 2), (1, 2)]
    16851694
     
    18071816        with coordinates `(x, y)` for one and `(s, t)` for the other::
    18081817
    18091818            sage: fan = FaceFan(lattice_polytope.octahedron(2))
    1810             sage: fan.ray_matrix()
     1819            sage: fan.rays()
    18111820            [ 1  0 -1  0]
    18121821            [ 0  1  0 -1]
     1822            in 2-d lattice N
    18131823            sage: P1xP1 = ToricVariety(fan, "x s y t")
    18141824            sage: P1xP1.inject_variables()
    18151825            Defining x, s, y, t
     
    24812491        basis = dual.Hilbert_basis()
    24822492        N = len(basis)
    24832493        names = normalize_names(names, N, DEFAULT_PREFIX)
    2484         A = matrix(ZZ,basis).transpose()
     2494        A = basis.matrix()
    24852495        IA = ToricIdeal(A, names, base_ring=self.base_ring())
    24862496        return (IA.ring(), IA, dual)
    24872497
     
    30923102        elif is_Cone(x):
    30933103            cone = fan.embed(x)
    30943104            assert cone.ambient() is fan
    3095             mult = cone.ray_matrix().index_in_saturation()
     3105            mult = cone.rays().matrix().index_in_saturation()
    30963106            x = prod((self.cover_ring().gen(i) for i in cone.ambient_ray_indices()),
    30973107                     z=self.cover_ring().one()) * mult
    30983108        else:
  • sage/schemes/generic/toric_variety_library.py

    diff --git a/sage/schemes/generic/toric_variety_library.py b/sage/schemes/generic/toric_variety_library.py
    a b  
    288288            sage: dP6 = toric_varieties.dP6()
    289289            sage: dP6
    290290            2-d CPR-Fano toric variety covered by 6 affine patches
    291             sage: dP6.fan().ray_matrix()
     291            sage: dP6.fan().rays()
    292292            [ 0 -1 -1  0  1  1]
    293293            [ 1  0 -1 -1  0  1]
     294            in 2-d lattice N
    294295            sage: dP6.gens()
    295296            (x, u, y, v, z, w)
    296297        """
     
    318319            sage: dP7 = toric_varieties.dP7()
    319320            sage: dP7
    320321            2-d CPR-Fano toric variety covered by 5 affine patches
    321             sage: dP7.fan().ray_matrix()
     322            sage: dP7.fan().rays()
    322323            [ 0 -1 -1  0  1]
    323324            [ 1  0 -1 -1  0]
     325            in 2-d lattice N
    324326            sage: dP7.gens()
    325327            (x, u, y, v, z)
    326328        """
     
    348350            sage: dP8 = toric_varieties.dP8()
    349351            sage: dP8
    350352            2-d CPR-Fano toric variety covered by 4 affine patches
    351             sage: dP8.fan().ray_matrix()
     353            sage: dP8.fan().rays()
    352354            [ 1  0 -1  1]
    353355            [ 1  1 -1  0]
     356            in 2-d lattice N
    354357            sage: dP8.gens()
    355358            (t, x, y, z)
    356359        """
     
    378381            sage: P1xP1 = toric_varieties.P1xP1()
    379382            sage: P1xP1
    380383            2-d CPR-Fano toric variety covered by 4 affine patches
    381             sage: P1xP1.fan().ray_matrix()
     384            sage: P1xP1.fan().rays()
    382385            [ 1 -1  0  0]
    383386            [ 0  0  1 -1]
     387            in 2-d lattice N
    384388            sage: P1xP1.gens()
    385389            (s, t, x, y)
    386390        """
     
    408412            sage: P1xP1_Z2 = toric_varieties.P1xP1_Z2()
    409413            sage: P1xP1_Z2
    410414            2-d CPR-Fano toric variety covered by 4 affine patches
    411             sage: P1xP1_Z2.fan().ray_matrix()
     415            sage: P1xP1_Z2.fan().rays()
    412416            [ 1 -1 -1  1]
    413417            [ 1 -1  1 -1]
     418            in 2-d lattice N
    414419            sage: P1xP1_Z2.gens()
    415420            (s, t, x, y)
    416421            sage: P1xP1_Z2.Chow_group().degree(1)
     
    440445            sage: P1 = toric_varieties.P1()
    441446            sage: P1
    442447            1-d CPR-Fano toric variety covered by 2 affine patches
    443             sage: P1.fan().ray_matrix()
     448            sage: P1.fan().rays()
    444449            [ 1 -1]
     450            in 1-d lattice N
    445451            sage: P1.gens()
    446452            (s, t)
    447453        """
     
    469475            sage: P2 = toric_varieties.P2()
    470476            sage: P2
    471477            2-d CPR-Fano toric variety covered by 3 affine patches
    472             sage: P2.fan().ray_matrix()
     478            sage: P2.fan().rays()
    473479            [ 1  0 -1]
    474480            [ 0  1 -1]
     481            in 2-d lattice N
    475482            sage: P2.gens()
    476483            (x, y, z)
    477484        """
     
    500507            sage: P3 = toric_varieties.P(3)
    501508            sage: P3
    502509            3-d CPR-Fano toric variety covered by 4 affine patches
    503             sage: P3.fan().ray_matrix()
     510            sage: P3.fan().rays()
    504511            [ 1  0  0 -1]
    505512            [ 0  1  0 -1]
    506513            [ 0  0  1 -1]
     514            in 3-d lattice N
    507515            sage: P3.gens()
    508516            (z0, z1, z2, z3)
    509517        """
     
    544552            sage: A1 = toric_varieties.A1()
    545553            sage: A1
    546554            1-d affine toric variety
    547             sage: A1.fan().ray_matrix()
     555            sage: A1.fan().rays()
    548556            [1]
     557            in 1-d lattice N
    549558            sage: A1.gens()
    550559            (z,)
    551560        """
     
    572581            sage: A2 = toric_varieties.A2()
    573582            sage: A2
    574583            2-d affine toric variety
    575             sage: A2.fan().ray_matrix()
     584            sage: A2.fan().rays()
    576585            [1 0]
    577586            [0 1]
     587            in 2-d lattice N
    578588            sage: A2.gens()
    579589            (x, y)
    580590        """
     
    603613            sage: A3 = toric_varieties.A(3)
    604614            sage: A3
    605615            3-d affine toric variety
    606             sage: A3.fan().ray_matrix()
     616            sage: A3.fan().rays()
    607617            [1 0 0]
    608618            [0 1 0]
    609619            [0 0 1]
     620            in 3-d lattice N
    610621            sage: A3.gens()
    611622            (z0, z1, z2)
    612623        """
     
    647658            sage: A2_Z2 = toric_varieties.A2_Z2()
    648659            sage: A2_Z2
    649660            2-d affine toric variety
    650             sage: A2_Z2.fan().ray_matrix()
     661            sage: A2_Z2.fan().rays()
    651662            [1 1]
    652663            [0 2]
     664            in 2-d lattice N
    653665            sage: A2_Z2.gens()
    654666            (x, y)
    655667        """
     
    677689            sage: P1xA1 = toric_varieties.P1xA1()
    678690            sage: P1xA1
    679691            2-d toric variety covered by 2 affine patches
    680             sage: P1xA1.fan().ray_matrix()
     692            sage: P1xA1.fan().rays()
    681693            [ 1 -1  0]
    682694            [ 0  0  1]
     695            in 2-d lattice N
    683696            sage: P1xA1.gens()
    684697            (s, t, z)
    685698        """
     
    706719            sage: Conifold = toric_varieties.Conifold()
    707720            sage: Conifold
    708721            3-d affine toric variety
    709             sage: Conifold.fan().ray_matrix()
     722            sage: Conifold.fan().rays()
    710723            [0 0 1 1]
    711724            [0 1 0 1]
    712725            [1 1 1 1]
     726            in 3-d lattice N
    713727            sage: Conifold.gens()
    714728            (u, x, y, v)
    715729        """
     
    737751            sage: dP6xdP6 = toric_varieties.dP6xdP6()   # long time (20s on sage.math, 2011)
    738752            sage: dP6xdP6                               # long time
    739753            4-d CPR-Fano toric variety covered by 36 affine patches
    740             sage: dP6xdP6.fan().ray_matrix()            # long time
     754            sage: dP6xdP6.fan().rays()            # long time
    741755            [ 0 -1 -1  0  1  1  0  0  0  0  0  0]
    742756            [ 1  0 -1 -1  0  1  0  0  0  0  0  0]
    743757            [ 0  0  0  0  0  0  0 -1 -1  0  1  1]
    744758            [ 0  0  0  0  0  0  1  0 -1 -1  0  1]
     759            in 4-d lattice N
    745760            sage: dP6xdP6.gens()                        # long time
    746761            (x0, x1, x2, x3, x4, x5, y0, y1, y2, y3, y4, y5)
    747762        """
     
    772787            sage: Cube_face_fan = toric_varieties.Cube_face_fan()
    773788            sage: Cube_face_fan
    774789            3-d CPR-Fano toric variety covered by 6 affine patches
    775             sage: Cube_face_fan.fan().ray_matrix()
     790            sage: Cube_face_fan.fan().rays()
    776791            [ 1  1 -1 -1 -1 -1  1  1]
    777792            [ 1 -1  1 -1 -1  1 -1  1]
    778793            [ 1  1  1  1 -1 -1 -1 -1]
     794            in 3-d lattice N
    779795            sage: Cube_face_fan.gens()
    780796            (z0, z1, z2, z3, z4, z5, z6, z7)
    781797        """
     
    807823            sage: Cube_sublattice = toric_varieties.Cube_sublattice()
    808824            sage: Cube_sublattice
    809825            3-d CPR-Fano toric variety covered by 6 affine patches
    810             sage: Cube_sublattice.fan().ray_matrix()
     826            sage: Cube_sublattice.fan().rays()
    811827            [ 1  0  0 -1 -1  0  0  1]
    812828            [ 0  1  0  1  0 -1  0 -1]
    813829            [ 0  0  1  1  0  0 -1 -1]
     830            in 3-d lattice N
    814831            sage: Cube_sublattice.gens()
    815832            (z0, z1, z2, z3, z4, z5, z6, z7)
    816833
     
    855872            sage: Cube_nonpolyhedral = toric_varieties.Cube_nonpolyhedral()
    856873            sage: Cube_nonpolyhedral
    857874            3-d toric variety covered by 6 affine patches
    858             sage: Cube_nonpolyhedral.fan().ray_matrix()
     875            sage: Cube_nonpolyhedral.fan().rays()
    859876            [ 1  1 -1 -1 -1 -1  1  1]
    860877            [ 2 -1  1 -1 -1  1 -1  1]
    861878            [ 3  1  1  1 -1 -1 -1 -1]
     879            in 3-d lattice N
    862880            sage: Cube_nonpolyhedral.gens()
    863881            (z0, z1, z2, z3, z4, z5, z6, z7)
    864882        """
     
    895913            sage: X_2 = toric_varieties.Cube_deformation(2)
    896914            sage: X_2
    897915            3-d toric variety covered by 6 affine patches
    898             sage: X_2.fan().ray_matrix()
     916            sage: X_2.fan().rays()
    899917            [ 1  1 -1 -1 -1 -1  1  1]
    900918            [ 1 -1  1 -1 -1  1 -1  1]
    901919            [ 5  1  1  1 -1 -1 -1 -1]
     920            in 3-d lattice N
    902921            sage: X_2.gens()
    903922            (z0, z1, z2, z3, z4, z5, z6, z7)
    904923
     
    946965            sage: X = toric_varieties.BCdlOG()      # long time (56s on sage.math, 2011)
    947966            sage: X                                 # long time
    948967            5-d CPR-Fano toric variety covered by 54 affine patches
    949             sage: X.fan().ray_matrix()              # long time
     968            sage: X.fan().rays()              # long time
    950969            [-1  0  0  0  0  0  0  0  0  0  0  0  1]
    951970            [ 0 -1  0  0  0  0  0  0  0  0  1  1  0]
    952971            [ 0  0 -1 -1  0  0  0  1  2  1  2  3  4]
    953972            [ 2  2  2  1 -1  0  2  2  2  1  2  2  2]
    954973            [ 3  3  3  2  0 -1  3  3  3  1  3  3  3]
     974            in 5-d lattice N
    955975            sage: X.gens()                          # long time
    956976            (v1, v2, c1, c2, v4, v5, b, e1, e2, e3, f, g, v6)
    957977
     
    9921012            sage: base = toric_varieties.BCdlOG_base() 
    9931013            sage: base
    9941014            3-d toric variety covered by 10 affine patches
    995             sage: base.fan().ray_matrix()
     1015            sage: base.fan().rays()
    9961016            [-1  0  0  0  0  0  1]
    9971017            [ 0 -1  0  0  1  1  0]
    9981018            [ 0  0 -1  1  2  3  4]
     1019            in 3-d lattice N
    9991020            sage: base.gens()
    10001021            (d4, d3, r2, r1, d2, u, d1)
    10011022        """
     
    10231044            sage: P2_112 = toric_varieties.P2_112()
    10241045            sage: P2_112
    10251046            2-d CPR-Fano toric variety covered by 3 affine patches
    1026             sage: P2_112.fan().ray_matrix()
     1047            sage: P2_112.fan().rays()
    10271048            [ 1  0 -1]
    10281049            [ 0  1 -2]
     1050            in 2-d lattice N
    10291051            sage: P2_112.gens()
    10301052            (z0, z1, z2)
    10311053        """
     
    10531075            sage: P2_123 = toric_varieties.P2_123()
    10541076            sage: P2_123
    10551077            2-d CPR-Fano toric variety covered by 3 affine patches
    1056             sage: P2_123.fan().ray_matrix()
     1078            sage: P2_123.fan().rays()
    10571079            [ 1  0 -2]
    10581080            [ 0  1 -3]
     1081            in 2-d lattice N
    10591082            sage: P2_123.gens()
    10601083            (z0, z1, z2)
    10611084        """
     
    10831106            sage: P4_11169 = toric_varieties.P4_11169()
    10841107            sage: P4_11169
    10851108            4-d CPR-Fano toric variety covered by 5 affine patches
    1086             sage: P4_11169.fan().ray_matrix()
     1109            sage: P4_11169.fan().rays()
    10871110            [ 1  0  0  0 -9]
    10881111            [ 0  1  0  0 -6]
    10891112            [ 0  0  1  0 -1]
    10901113            [ 0  0  0  1 -1]
     1114            in 4-d lattice N
    10911115            sage: P4_11169.gens()
    10921116            (z0, z1, z2, z3, z4)
    10931117        """
     
    11161140            sage: P4_11169_resolved = toric_varieties.P4_11169_resolved()  # long time (2s on sage.math, 2011)
    11171141            sage: P4_11169_resolved                      # long time
    11181142            4-d CPR-Fano toric variety covered by 9 affine patches
    1119             sage: P4_11169_resolved.fan().ray_matrix()   # long time
     1143            sage: P4_11169_resolved.fan().rays()   # long time
    11201144            [ 1  0  0  0 -9 -3]
    11211145            [ 0  1  0  0 -6 -2]
    11221146            [ 0  0  1  0 -1  0]
    11231147            [ 0  0  0  1 -1  0]
     1148            in 4-d lattice N
    11241149            sage: P4_11169_resolved.gens()               # long time
    11251150            (z0, z1, z2, z3, z4, z5)
    11261151        """
     
    11481173            sage: P4_11133 = toric_varieties.P4_11133()
    11491174            sage: P4_11133
    11501175            4-d CPR-Fano toric variety covered by 5 affine patches
    1151             sage: P4_11133.fan().ray_matrix()
     1176            sage: P4_11133.fan().rays()
    11521177            [ 1  0  0  0 -3]
    11531178            [ 0  1  0  0 -3]
    11541179            [ 0  0  1  0 -1]
    11551180            [ 0  0  0  1 -1]
     1181            in 4-d lattice N
    11561182            sage: P4_11133.gens()
    11571183            (z0, z1, z2, z3, z4)
    11581184        """
     
    11801206            sage: P4_11133_resolved = toric_varieties.P4_11133_resolved()
    11811207            sage: P4_11133_resolved
    11821208            4-d CPR-Fano toric variety covered by 9 affine patches
    1183             sage: P4_11133_resolved.fan().ray_matrix()
     1209            sage: P4_11133_resolved.fan().rays()
    11841210            [ 1  0  0  0 -3 -1]
    11851211            [ 0  1  0  0 -3 -1]
    11861212            [ 0  0  1  0 -1  0]
    11871213            [ 0  0  0  1 -1  0]
     1214            in 4-d lattice N
    11881215            sage: P4_11133_resolved.gens()
    11891216            (z0, z1, z2, z3, z4, z5)
    11901217        """