#19405: Add lyapunov_rank() method for polyhedral cones
-------------------------------------+-------------------------------------
       Reporter:  mjo                |        Owner:
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.10
      Component:  geometry           |   Resolution:
       Keywords:                     |    Merged in:
        Authors:  Michael Orlitzky   |    Reviewers:
Report Upstream:  N/A                |  Work issues:
         Branch:                     |       Commit:
  u/mjo/ticket/19405                 |  3d81380c8457e49e2110eb04da8950c19bc0f899
   Dependencies:  #19368             |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by novoselt):

 Well, I do intend to review this positively, I just usually try to really
 understand the code and read documentation ;-) Life got a bit busier, but
 I still hope to manage in time for 6.10.

 1. Can we please remove "yet we have no way to perform operations like
 :meth:`dual` in the subspace" or augment it to the effect of "it is not
 implemented at the moment" since mathematically there is nothing wrong
 with taking a cone in a saturated sublattice and considering its dual,
 which will live in the torsion-free quotient of the dual of the original
 lattice. I actually had a hope that it will work already, but apparently
 it does not.
 1. The last test in the helper method goes very much against the
 philosophy of toric dualities with dual lattices being distinct:
 {{{
 +        Through a series of restrictions, any closed convex cone can be
 +        reduced to a cartesian product with a proper factor [Orlitzky]_::
 +
 +            sage: set_random_seed()
 +            sage: K = random_cone(max_ambient_dim = 8)
 +            sage: K_S = K._restrict_to_subspace(K.span())
 +            sage: P = K_S.dual().span()
 +            sage: K_SP = K_S._restrict_to_subspace(P)
 +            sage: K_SP.is_proper()
 +            True
 }}}
  Given that this method is there only for the sake of `lyapunov_rank`, I
 would suggest making it an internal function of `lyapunov_rank`. In this
 case you can do whatever you want and in fact there is no need at all for
 documentation and tests - you are of course welcome to still explain what
 it does, but I am not even sure if test will run on internal functions.
 1. Note that there is already `strict_quotient` doing one of the
 restrictions you need:
 {{{
 sage: K = Cone([(1,1,1), (1,0,0), (-1,0,0)])
 sage: K
 2-d cone in 3-d lattice N
 sage: K.rays()
 N( 0, 1, 1),
 N( 1, 0, 0),
 N(-1, 0, 0)
 in 3-d lattice N
 sage: K.strict_quotient()
 1-d cone in 2-d lattice N
 sage: K.strict_quotient().rays()
 N(1, 1)
 in 2-d lattice N
 }}}
 1. The recommended spacing for keywords is
 `random_cone(max_ambient_dim=8)` rather than `random_cone(max_ambient_dim
 = 8)`

--
Ticket URL: <http://trac.sagemath.org/ticket/19405#comment:6>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

-- 
You received this message because you are subscribed to the Google Groups 
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.

Reply via email to