]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
Remove the lineality() and codim() functions (now depends on branch u/mjo/ticket...
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 14 Jun 2015 16:25:55 +0000 (12:25 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 14 Jun 2015 16:25:55 +0000 (12:25 -0400)
mjo/cone/cone.py

index c6d26829f32a6efedf927dc542fdcfc453c22e30..f4b2244c3486ad6d9ec417bdcdddcc9ffd0f2a62 100644 (file)
@@ -24,7 +24,7 @@ def basically_the_same(K1,K2):
     if K1.dim() != K2.dim():
         return False
 
-    if lineality(K1) != lineality(K2):
+    if K1.lineality() != K2.lineality():
         return False
 
     if K1.is_solid() != K2.is_solid():
@@ -108,7 +108,7 @@ def rho(K, K2=None):
 
         sage: set_random_seed()
         sage: K = random_cone(max_dim = 8)
-        sage: lineality(K) == lineality(rho(K))
+        sage: K.lineality() == rho(K).lineality()
         True
 
     No matter which space we restrict to, the lineality should not
@@ -116,9 +116,9 @@ def rho(K, K2=None):
 
         sage: set_random_seed()
         sage: K = random_cone(max_dim = 8)
-        sage: lineality(K) >= lineality(rho(K))
+        sage: K.lineality() >= rho(K).lineality()
         True
-        sage: lineality(K) >= lineality(rho(K, K.dual()))
+        sage: K.lineality() >= rho(K, K.dual()).lineality()
         True
 
     If we do this according to our paper, then the result is proper::
@@ -235,171 +235,6 @@ def rho(K, K2=None):
 
 
 
-def lineality(K):
-    r"""
-    Compute the lineality of this cone.
-
-    The lineality of a cone is the dimension of the largest linear
-    subspace contained in that cone.
-
-    OUTPUT:
-
-    A nonnegative integer; the dimension of the largest subspace
-    contained within this cone.
-
-    REFERENCES:
-
-    .. [Rockafellar] R.T. Rockafellar. Convex Analysis. Princeton
-       University Press, Princeton, 1970.
-
-    EXAMPLES:
-
-    The lineality of the nonnegative orthant is zero, since it clearly
-    contains no lines::
-
-        sage: K = Cone([(1,0,0), (0,1,0), (0,0,1)])
-        sage: lineality(K)
-        0
-
-    However, if we add another ray so that the entire `x`-axis belongs
-    to the cone, then the resulting cone will have lineality one::
-
-        sage: K = Cone([(1,0,0), (-1,0,0), (0,1,0), (0,0,1)])
-        sage: lineality(K)
-        1
-
-    If our cone is all of `\mathbb{R}^{2}`, then its lineality is equal
-    to the dimension of the ambient space (i.e. two)::
-
-        sage: K = Cone([(1,0), (-1,0), (0,1), (0,-1)])
-        sage: lineality(K)
-        2
-
-    Per the definition, the lineality of the trivial cone in a trivial
-    space is zero::
-
-        sage: K = Cone([], lattice=ToricLattice(0))
-        sage: lineality(K)
-        0
-
-    TESTS:
-
-    The lineality of a cone should be an integer between zero and the
-    dimension of the ambient space, inclusive::
-
-        sage: set_random_seed()
-        sage: K = random_cone(max_dim = 8)
-        sage: l = lineality(K)
-        sage: l in ZZ
-        True
-        sage: (0 <= l) and (l <= K.lattice_dim())
-        True
-
-    A strictly convex cone should have lineality zero::
-
-        sage: set_random_seed()
-        sage: K = random_cone(max_dim = 8, strictly_convex = True)
-        sage: lineality(K)
-        0
-
-    """
-    return K.linear_subspace().dimension()
-
-
-def codim(K):
-    r"""
-    Compute the codimension of this cone.
-
-    The codimension of a cone is the dimension of the space of all
-    elements perpendicular to every element of the cone. In other words,
-    the codimension is the difference between the dimension of the
-    ambient space and the dimension of the cone itself.
-
-    OUTPUT:
-
-    A nonnegative integer representing the dimension of the space of all
-    elements perpendicular to this cone.
-
-    .. seealso::
-
-        :meth:`dim`, :meth:`lattice_dim`
-
-    EXAMPLES:
-
-    The codimension of the nonnegative orthant is zero, since the span of
-    its generators equals the entire ambient space::
-
-        sage: K = Cone([(1,0,0), (0,1,0), (0,0,1)])
-        sage: codim(K)
-        0
-
-    However, if we remove a ray so that the entire cone is contained
-    within the `x-y`-plane, then the resulting cone will have
-    codimension one, because the `z`-axis is perpendicular to every
-    element of the cone::
-
-        sage: K = Cone([(1,0,0), (0,1,0)])
-        sage: codim(K)
-        1
-
-    If our cone is all of `\mathbb{R}^{2}`, then its codimension is zero::
-
-        sage: K = Cone([(1,0), (-1,0), (0,1), (0,-1)])
-        sage: codim(K)
-        0
-
-    And if the cone is trivial in any space, then its codimension is
-    equal to the dimension of the ambient space::
-
-        sage: K = Cone([], lattice=ToricLattice(0))
-        sage: K.lattice_dim()
-        0
-        sage: codim(K)
-        0
-
-        sage: K = Cone([(0,)])
-        sage: K.lattice_dim()
-        1
-        sage: codim(K)
-        1
-
-        sage: K = Cone([(0,0)])
-        sage: K.lattice_dim()
-        2
-        sage: codim(K)
-        2
-
-    TESTS:
-
-    The codimension of a cone should be an integer between zero and
-    the dimension of the ambient space, inclusive::
-
-        sage: set_random_seed()
-        sage: K = random_cone(max_dim = 8)
-        sage: c = codim(K)
-        sage: c in ZZ
-        True
-        sage: (0 <= c) and (c <= K.lattice_dim())
-        True
-
-    A solid cone should have codimension zero::
-
-        sage: set_random_seed()
-        sage: K = random_cone(max_dim = 8, solid = True)
-        sage: codim(K)
-        0
-
-    The codimension of a cone is equal to the lineality of its dual::
-
-        sage: set_random_seed()
-        sage: K = random_cone(max_dim = 8, solid = True)
-        sage: codim(K) == lineality(K.dual())
-        True
-
-    """
-    return (K.lattice_dim() - K.dim())
-
-
 def discrete_complementarity_set(K):
     r"""
     Compute the discrete complementarity set of this cone.
@@ -711,7 +546,7 @@ def lyapunov_rank(K):
         sage: K = Cone([e1, neg_e1, e2, neg_e2, z, z, z])
         sage: lyapunov_rank(K)
         19
-        sage: K.lattice_dim()**2 - K.dim()*codim(K)
+        sage: K.lattice_dim()**2 - K.dim()*K.codim()
         19
 
     The Lyapunov rank should be additive on a product of proper cones
@@ -819,8 +654,8 @@ def lyapunov_rank(K):
         sage: actual = lyapunov_rank(K)
         sage: K_S = rho(K)
         sage: K_SP = rho(K_S.dual()).dual()
-        sage: l = lineality(K)
-        sage: c = codim(K)
+        sage: l = K.lineality()
+        sage: c = K.codim()
         sage: expected = lyapunov_rank(K_SP) + K.dim()*(l + c) + c**2
         sage: actual == expected
         True
@@ -859,7 +694,7 @@ def lyapunov_rank(K):
 
     m = K.dim()
     n = K.lattice_dim()
-    l = lineality(K)
+    l = K.lineality()
 
     if m < n:
         # K is not solid, restrict to its span.