]> gitweb.michael.orlitzky.com - sage.d.git/commitdiff
Add more examples for the positive operators.
authorMichael Orlitzky <michael@orlitzky.com>
Thu, 7 Jan 2016 19:29:51 +0000 (14:29 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Thu, 7 Jan 2016 19:29:51 +0000 (14:29 -0500)
mjo/cone/cone.py

index 332d4b24ed93ce9daac2a5779df94068d6479838..43ec8f7f18f031bea3e159f2f434b72b4d05909b 100644 (file)
@@ -334,6 +334,43 @@ def positive_operator_gens(K):
         sage: actual == expected
         True
 
+    The trivial cone, full space, and half-plane all give rise to the
+    expected dimensions::
+
+        sage: n = ZZ.random_element().abs()
+        sage: K = Cone([[0] * n], ToricLattice(n))
+        sage: K.is_trivial()
+        True
+        sage: L = ToricLattice(n^2)
+        sage: pi_of_K = positive_operator_gens(K)
+        sage: actual = Cone([p.list() for p in pi_of_K], lattice=L).dim()
+        sage: actual == n^2
+        True
+        sage: K = K.dual()
+        sage: K.is_full_space()
+        True
+        sage: pi_of_K = positive_operator_gens(K)
+        sage: actual = Cone([p.list() for p in pi_of_K], lattice=L).dim()
+        sage: actual == n^2
+        True
+        sage: K = Cone([(1,0),(0,1),(0,-1)])
+        sage: pi_of_K = positive_operator_gens(K)
+        sage: actual = Cone([p.list() for p in pi_of_K]).dim()
+        sage: actual == 3
+        True
+
+    The cone of positive operators is solid when the original cone is proper::
+
+        sage: set_random_seed()
+        sage: K = random_cone(max_ambient_dim=5,
+        ....:                 strictly_convex=True,
+        ....:                 solid=True)
+        sage: pi_of_K = positive_operator_gens(K)
+        sage: L = ToricLattice(K.lattice_dim()**2)
+        sage: pi_cone = Cone([p.list() for p in pi_of_K], lattice=L)
+        sage: pi_cone.is_solid()
+        True
+
     The lineality of the cone of positive operators is given by the
     corollary in my paper::
 
@@ -371,7 +408,8 @@ def positive_operator_gens(K):
     vectors = [ W(tp.list()) for tp in tensor_products ]
 
     # Create the *dual* cone of the positive operators, expressed as
-    # long vectors..
+    # long vectors. WARNING: takes forever unless we pass check=False
+    # to Cone().
     pi_dual = Cone(vectors, ToricLattice(W.dimension()))
 
     # Now compute the desired cone from its dual...
@@ -487,7 +525,8 @@ def Z_transformation_gens(K):
     vectors = [ W(m.list()) for m in tensor_products ]
 
     # Create the *dual* cone of the cross-positive operators,
-    # expressed as long vectors..
+    # expressed as long vectors. WARNING: takes forever unless we pass
+    # check=False to Cone().
     Sigma_dual = Cone(vectors, lattice=ToricLattice(W.dimension()))
 
     # Now compute the desired cone from its dual...