#10148: Automorphism group of a Polyhedron
----------------------------------+-----------------------------------------
   Reporter:  vbraun              |       Owner:  mhampton    
       Type:  enhancement         |      Status:  needs_work  
   Priority:  major               |   Milestone:  sage-feature
  Component:  geometry            |    Keywords:              
     Author:  Volker Braun        |    Upstream:  N/A         
   Reviewer:  Andrey Novoseltsev  |      Merged:              
Work_issues:                      |  
----------------------------------+-----------------------------------------
Changes (by novoselt):

  * status:  needs_review => needs_work


Comment:

 First of all, let me correct myself - when I was talking about GL-
 symmetries, of course I meant affine-linear ones - they just happen to be
 the same for reflexive polytopes and I forgot about general situation.

 I am more interested in the linear automorphism group and even more in the
 lattice preserving one, rather than in the combinatorial one. I think the
 abundance of automorphism groups indicates that maybe we should never have
 a method called just `automorphism_group`, but always indicate its kind,
 as it is done in the new patch.

 The current implementation does not preserve the lattice - the example
 that I have given above is the polytope of WP(1,1,2) and one of the edges
 has length 2 while others only 1. So there is only one lattice-preserving
 symmetry. (But that's OK for this ticket.)

 Previously raised issues were addressed, but I have some new comments :-)
  1. "Note that there are no translations possible since `Q` contains only
 a single vertex." is a bit misleading. "Separate" translations are
 possible iff there is a non-trivial linear subspace. In this case you
 probably meant that there are no "translation components" attached to
 matrices, since there is only a single vertex. I think this either should
 be explained in more detail, or not mentioned at all.
  2. I don't understand how the floating point part works. I am not at all
 an expert on such cases, but I don't understand how calling a function
 returning `x == 0` is any different from direct comparison with 0, which
 should not be done for floating point numbers anyway. How can it ever
 return `True` for anything but exactly zero? It seems to me that you
 should be comparing `x-c` with the absolute value of `x` and `c` and if
 the ratio is too small, declare it to be zero. Probably some care should
 be taken in the case when `x` or `c` is actually zero. Fixing some
 absolute threshold in advance for `x-c` will lead to incorrect work with
 "small" polyhedra, but maybe some rough estimate for the diameter can be
 used. E.g. it is relatively cheap to compute the bounding box of the
 polyhedra generators and then declare its size divided by 10^6^ or so to
 be zero. Or one can try to be more clever and choose this tolerance based
 on the actual "edge colors" before rounding. The current version seems to
 be too fragile to me.
  3. I think you should treat vertices and rays/lines differently when
 constructing `v_list`, adding 1 to vertices (which fixed translation
 issues above) and 0 to others. Otherwise
  {{{
 sage: p = Polyhedron(vertices=[(1,0), (1,1)], rays=[(1,0)])
 sage: p.restricted_automorphism_group().order()
 1
 }}}
  while it should be 2, I think.

-- 
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/10148#comment:9>
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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sage-trac?hl=en.

Reply via email to