From e0acc328048efbded42e1459e766de1884ced651 Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Wed, 13 Jan 2016 09:51:48 -0500 Subject: [PATCH] Only check=False when K is proper (can't prove it otherwise). --- mjo/cone/cone.py | 51 ++++++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 19 deletions(-) diff --git a/mjo/cone/cone.py b/mjo/cone/cone.py index dd28f2f..3d74b5f 100644 --- a/mjo/cone/cone.py +++ b/mjo/cone/cone.py @@ -77,6 +77,17 @@ def positive_operator_gens(K): ``K``. Moreover, any nonnegative linear combination of these matrices shares the same property. + REFERENCES: + + .. [Orlitzky-Pi-Z] + M. Orlitzky. + Positive operators and Z-transformations on closed convex cones. + + .. [Tam] + B.-S. Tam. + Some results of polyhedral cones and simplicial cones. + Linear and Multilinear Algebra, 4:4 (1977) 281--284. + EXAMPLES: Positive operators on the nonnegative orthant are nonnegative matrices:: @@ -393,14 +404,12 @@ def positive_operator_gens(K): vectors = [ W(tp.list()) for tp in tensor_products ] check = True - if K.is_solid() or K.is_strictly_convex(): - # The lineality space of either ``K`` or ``K.dual()`` is - # trivial and it's easy to show that our generating set is - # minimal. I would love a proof that this works when ``K`` is - # neither pointed nor solid. - # - # Note that in that case we can get *duplicates*, since the - # tensor product of (x,s) is the same as that of (-x,-s). + if K.is_proper(): + # All of the generators involved are extreme vectors and + # therefore minimal [Tam]_. If this cone is neither solid nor + # strictly convex, then the tensor product of ``s`` and ``x`` + # is the same as that of ``-s`` and ``-x``. However, as a + # /set/, ``tensor_products`` may still be minimal. check = False # Create the dual cone of the positive operators, expressed as @@ -423,9 +432,15 @@ def Z_transformation_gens(K): A list of `n`-by-``n`` matrices where ``n == K.lattice_dim()``. Each matrix ``L`` in the list should have the property that - ``(L*x).inner_product(s) <= 0`` whenever ``(x,s)`` is an element the - discrete complementarity set of ``K``. Moreover, any nonnegative - linear combination of these matrices shares the same property. + ``(L*x).inner_product(s) <= 0`` whenever ``(x,s)`` is an element of + this cone's :meth:`discrete_complementarity_set`. Moreover, any + conic (nonnegative linear) combination of these matrices shares the + same property. + + REFERENCES: + + M. Orlitzky. + Positive operators and Z-transformations on closed convex cones. EXAMPLES: @@ -643,14 +658,12 @@ def Z_transformation_gens(K): vectors = [ W(m.list()) for m in tensor_products ] check = True - if K.is_solid() or K.is_strictly_convex(): - # The lineality space of either ``K`` or ``K.dual()`` is - # trivial and it's easy to show that our generating set is - # minimal. I would love a proof that this works when ``K`` is - # neither pointed nor solid. - # - # Note that in that case we can get *duplicates*, since the - # tensor product of (x,s) is the same as that of (-x,-s). + if K.is_proper(): + # All of the generators involved are extreme vectors and + # therefore minimal. If this cone is neither solid nor + # strictly convex, then the tensor product of ``s`` and ``x`` + # is the same as that of ``-s`` and ``-x``. However, as a + # /set/, ``tensor_products`` may still be minimal. check = False # Create the dual cone of the cross-positive operators, -- 2.43.2