X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Fcone%2Ffaces.py;h=70706a8ca82383c25d98a17d28a333d8d942f83a;hb=d1017f501eb2058908a409818f143d2376863aa6;hp=ee16890dd6234cd0003cc0e8e9448674668386f5;hpb=d3561bfcfea6f26e5942e6e49992bf34efc24b5c;p=sage.d.git diff --git a/mjo/cone/faces.py b/mjo/cone/faces.py index ee16890..70706a8 100644 --- a/mjo/cone/faces.py +++ b/mjo/cone/faces.py @@ -143,6 +143,10 @@ def dual_face(K,F): REFERENCES: + .. [HilgertHofmannLawson] Joachim Hilgert, Karl Heinrich Hofmann, and Jimmie + D. Lawson. Lie groups, convex cones and semigroups. Oxford Mathematical + Monographs. Clarendon Press, Oxford, 1989. ISBN 9780198535690. + .. [Tam] Bit-Shun Tam. On the duality operator of a convex cone. Linear Algebra and its Applications, 64:33-56, 1985, doi:10.1016/0024-3795(85) 90265-4. @@ -202,6 +206,16 @@ def dual_face(K,F): sage: points_cone.dual().is_equivalent(dual_face(K, phi_y)) True + Since all faces of a polyhedral cone are exposed, the dual face of a + dual face should be the original face [HilgertHofmannLawson]_:: + + sage: set_random_seed() + sage: def check_prop(K,F): + ....: return dual_face(K.dual(), dual_face(K,F)).is_equivalent(F) + sage: K = random_cone(max_ambient_dim=8, max_rays=10) + sage: all([check_prop(K,F) for F in K.face_lattice()]) + True + """ # Ensure that F is actually a face of K before continuing. if not F.is_face_of(K):