X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Fcone.py;h=8b07f86b329e191e105994e83676f3e30d8c4220;hb=69a732dd23596a40f9d3a1aacf61f1de2823f498;hp=ae3ec48cddc9700d4f63ae378fc01b178dee6e3b;hpb=8353d776d562e16cdbccfd10881662fc542c8d6f;p=sage.d.git diff --git a/mjo/cone/cone.py b/mjo/cone/cone.py index ae3ec48..8b07f86 100644 --- a/mjo/cone/cone.py +++ b/mjo/cone/cone.py @@ -284,6 +284,25 @@ def positive_operator_gens(K): sage: K.contains(P*K.random_element()) True + The lineality space of the dual of the cone of positive operators + can be computed from the lineality spaces of the cone and its dual:: + + sage: set_random_seed() + sage: K = random_cone(max_ambient_dim=5) + sage: pi_of_K = positive_operator_gens(K) + sage: L = ToricLattice(K.lattice_dim()**2) + sage: pi_cone = Cone([ g.list() for g in pi_of_K ], lattice=L) + sage: actual = pi_cone.dual().linear_subspace() + sage: U1 = [ vector((s.tensor_product(x)).list()) + ....: for x in K.lines() + ....: for s in K.dual() ] + sage: U2 = [ vector((s.tensor_product(x)).list()) + ....: for x in K + ....: for s in K.dual().lines() ] + sage: expected = pi_cone.lattice().vector_space().span(U1 + U2) + sage: actual == expected + True + The dimension of the cone of positive operators is given by the corollary in my paper::