#13189: fan isomorphism check
--------------------------------------+-------------------------------------
Reporter: vbraun | Owner: AlexGhitza
Type: enhancement | Status: needs_review
Priority: major | Milestone: sage-5.2
Component: algebraic geometry | Resolution:
Keywords: | Work issues:
Report Upstream: N/A | Reviewers: Andrey Novoseltsev
Authors: Volker Braun | Merged in:
Dependencies: #12544 | Stopgaps:
--------------------------------------+-------------------------------------
Old description:
> This patch implements testing for isomorphism (equivalence up to
> `GL(n,ZZ)` rotation) of fans
> {{{
> sage: m1 = matrix([(1, 0), (0, -5), (-3, 4)])
> sage: m2 = matrix([(3, 0), (1, 0), (-2, 1)])
> sage: m1.elementary_divisors() == m2.elementary_divisors() == [1,1,0]
> True
> sage: fan1 = Fan([Cone([m1*vector([23, 14]), m1*vector([ 3,100])]),
> ... Cone([m1*vector([-1,-14]), m1*vector([-100, -5])])])
> sage: fan2 = Fan([Cone([m2*vector([23, 14]), m2*vector([ 3,100])]),
> ... Cone([m2*vector([-1,-14]), m2*vector([-100, -5])])])
> sage: fan1.is_isomorphic(fan2)
> True
> sage: fan1.isomorphism(fan2)
> Fan morphism defined by the matrix
> [18 1 -5]
> [ 4 0 -1]
> [ 5 0 -1]
> Domain fan: Rational polyhedral fan in 3-d lattice N
> Codomain fan: Rational polyhedral fan in 3-d lattice N
> }}}
> This is implemented by first computing the isomorphisms of auxiliary
> labelled graphs, and then trying to lift those to actual fan morphisms.
>
> Apply:
> * [[attachment:trac_13189_Hirzebruch_Jung_continued_fraction.patch]]
> * [[attachment:trac_13189_virtual_rays.patch]]
> * [[attachment:trac_13189_fan_isomorphism.patch]]
> * [[attachment:trac_13189_cone_isomorphism.patch]]
New description:
This patch implements testing for isomorphism (equivalence up to
`GL(n,ZZ)` rotation) of fans
{{{
sage: m1 = matrix([(1, 0), (0, -5), (-3, 4)])
sage: m2 = matrix([(3, 0), (1, 0), (-2, 1)])
sage: m1.elementary_divisors() == m2.elementary_divisors() == [1,1,0]
True
sage: fan1 = Fan([Cone([m1*vector([23, 14]), m1*vector([ 3,100])]),
... Cone([m1*vector([-1,-14]), m1*vector([-100, -5])])])
sage: fan2 = Fan([Cone([m2*vector([23, 14]), m2*vector([ 3,100])]),
... Cone([m2*vector([-1,-14]), m2*vector([-100, -5])])])
sage: fan1.is_isomorphic(fan2)
True
sage: fan1.isomorphism(fan2)
Fan morphism defined by the matrix
[18 1 -5]
[ 4 0 -1]
[ 5 0 -1]
Domain fan: Rational polyhedral fan in 3-d lattice N
Codomain fan: Rational polyhedral fan in 3-d lattice N
}}}
This is implemented by first computing the isomorphisms of auxiliary
labelled graphs, and then trying to lift those to actual fan morphisms.
Apply:
* [[attachment:trac_13189_Hirzebruch_Jung_continued_fraction.patch]]
* [[attachment:trac_13189_virtual_rays.patch]]
* [[attachment:trac_13189_fan_isomorphism.patch]]
* [[attachment:trac_13189_cone_isomorphism.patch]]
* [[attachment:trac_13189_reviewer.patch]]
--
Comment (by novoselt):
Tests pass now. The first patch is OK modulo changes, going through
others...
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/13189#comment:11>
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.