#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                 |  a193b815d8c6cfac86cbf3104f0eedbcb5d1f5bc
   Dependencies:  #19368             |     Stopgaps:
-------------------------------------+-------------------------------------

Comment (by novoselt):

 Replying to [comment:13 mjo]:
 > 1. What exactly is the problem with the quotient? Is it that `M` and `N`
 are different, so we don't think of the thing in `M` as being a subthing
 of the thing in `N`? (This makes sense to me, I just didn't expect a
 "sublattice" method to give me something in another lattice.)

 Correct, elements of `M` can not be thought of as elements of `N` because
 while these lattices are isomorphic there is no canonical isomorphism. The
 reason for the (standard) name "sublattice" here is that a cone has two
 canonical lattices associated to it - characters/one-dimensional
 representations and one-parameter subgroups. Neither comes with a choice
 of basis.

 > 2. I borrowed the quotient terminology from `strict_quotient` where we
 go through the back door of `linear_subspace()` -- why isn't that cheating
 too, since it drops down to vector spaces?

 It is a bit of a cheating in the sense that the result should live in a
 quotient lattice of N. But since they (quotient lattices) were not
 implemented before and still lack some features the result is returned in
 a generic lattice. However, this is "code cheating" - I am performing a
 mathematically allowed operation in a way possible with current code.
 Taking quotient of N by sublattice of M is doing a mathematically illegal
 operation in a way that your (or perhaps rather mine ;-)) code tolerates.

 > 3. Sage will let me take the lattice quotient of `N` and a sublattice
 `M`. Isn't it supposed to stop me? The docstring says it checks for a
 valid sublattice. Here's an example:
 >
 > {{{
 > sage: K = Cone([(1,0,0),(0,1,0)])
 > sage: K.lattice()
 > 3-d lattice N
 > sage: K.orthogonal_sublattice()
 > Sublattice <M(0, 0, 1)>
 > sage: K.lattice().quotient(K.orthogonal_sublattice())
 > 2-d lattice, quotient of 3-d lattice N by Free module of degree 3 and
 rank 1 over Integer Ring
 > Echelon basis matrix:
 > [0 0 1]
 > }}}

 It is supposed to stop you, especially since documentation claims it. You
 have discovered another bug!

 > 4. If the only problem is the `M`/`N` distinction, can I use
 `sublattice_complement()` instead of `orthogonal_complement()`? I think
 this gives me the correct subthing:
 >
 > {{{
 > sage: K.sublattice_complement()
 > Sublattice <N(0, 0, 1)>
 > }}}
 >
 > Could I now consider `K.lattice().quotient(K.sublattice_complement())` a
 true quotient?

 It is a true quotient in the sense that it is a mathematically legal
 operation, however this is not what you want. What you want is just
 `K.sublattice()` - get coordinates of rays of `K` in the basis of this
 sublattice and return a new cone in the generic lattice of this dimension
 generated by those coordinates. Something like
 {{{
 N_K = K.sublattice()
 L = ToricLattice(N_K.dimension(), <name tweaks>)
 Cone([L(N_K.coordinates(r)) for r in K], check=False)
 }}}

--
Ticket URL: <http://trac.sagemath.org/ticket/19405#comment:14>
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