#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.