#15703: Refactor Coxeter groups as matrix groups and non crystallographic root
systems
------------------------------------------+------------------------
Reporter: nthiery | Owner:
Type: enhancement | Status: new
Priority: major | Milestone: sage-6.2
Component: combinatorics | Resolution:
Keywords: coxeter groups, days57 | Merged in:
Authors: | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: | Stopgaps:
------------------------------------------+------------------------
Description changed by nthiery:
Old description:
> This is a follow up to: #9290.
>
> * Create a class CoxeterGraph (similar to DynkinDiagram) Edge labels:
> m_{i,j}, possibly with number <-1 for oo
>
> Starter: a edge-labeled graph.
>
> * Implement the method dynkin_diagram() which builds the cartan matrix
> for the geometric representation
>
> Starter: just make this a function
>
> * Feed this to RootSystem, and check that the root space and weight
> space are built properly. Rename the weyl_group method to
> reflection_group, with an alias from weyl_group.
>
> * Long run: stuff specific to the crystallographic case, starting with
> this weyl_group method, should go in
> RootLatticeRealizations.Crystallographic. That's for a follow up ticket
> on using axioms for root systems; but let's not depend on #10963 right
> now.
>
> * Refactor CoxeterMatrixGroup and WeylGroup to make the latter a
> subclass of the former, and lift as many features as possible from
> WeylGroup to CoxeterMatrixGroup.
>
> Tests:
>
> {{{
> sage: C = CoxeterDiagram(...) # good name? or
> CartanDatum(coxeter_matrix=...) [1] ? or?
> sage: L = RootSystem(C).root_space()
> sage: W = L.reflection_group()
> sage: W = CoxeterGroup(['H',3])
> sage: W.domain()
> }}}
> Sage Days 57 in Cernay will be a good occasion to work on this.
>
> Follow ups: #16087
>
> [1]: Generally speaking, it's planned to rename CartanType to
> CartanDatum.
New description:
This is a follow up to #9290.
* Experiment with the infrastructure scales and benchmark
- Build by hand an interesting dynkin diagram.
- Shoot straight at producing a nice plot with a bunch of limit roots.
- Post the picture here.
- Benchmark the calculation.
- Every hack along the way is fair.
- Update the TODO list below with what would need to be done for a
proper implementation.
- Discard the experiment.
* CoxegerGraph
- Create a class similar to DynkinDiagram
Starter: an edge-labeled graph.
- Edge labels: m_{i,j}, possibly with number <-1 for oo
- method dynkin_diagram() which builds the cartan matrix for the
geometric representation
Starter: just make this a function
* Update DynkinDiagram to support non crystallographic case:
- Add an argument base_ring to the constructor
- Add a method base_ring
- Make add_edge honor this method when automatically adding edges
- Update cartan_matrix() to use the base_ring
- Add a method _test_base_ring that checks that all edge labels are
indeed in this base ring
- Implement is_crystallographic testing if the base ring is ZZ
- Add an argument symmetric=False to the constructor, and make
add_edge and symmetrizer use it.
- Add a method _test_dynkin_diagram that tests that the Dynkin
diagram indeed defines a proper root system. See in particular
cartan_matrix.is_generalized_cartan_matrix.
* Update CartanMatrix
- Add a base ring argument to the constructor
- Update is_crystallographic
- Decide on the semantic of crystallographic (symmetrizable or
not?), and if possibly add an is_... method to decide whether the
entries are integral or not.
- Update is_affine
- Update is_finite
- Update is_generalized_cartan_matrix
* CartanType
- Possibly update to accept appropriate data to build a
CoxeterDiagram
* RootSystem
- Decide on the meaning of root_lattice: either disable it in the
non integral case, or have it be the span of the roots over the
smallest available ring.
* RootLatticeRealizations:
- Feed this to RootSystem, and check that the root space and weight
space are built properly.
- Rename the weyl_group method to reflection_group, with an alias
from weyl_group; update the setting of the category.
- Long run: stuff specific to the crystallographic case, starting
with this weyl_group method, should go in
RootLatticeRealizations.Crystallographic. That's for a follow up
ticket on using axioms for root systems; but let's not depend on
#10963 right now.
* RootSpace (for this ticket or some follow up):
- Define the inner product
- Signature of the bilinear form
* CoxeterMatrixGroup and WeylGroup:
- Refactor WeylGroup to make it a subclass of CoxeterMatrixGroup,
and lift as many features as possible from WeylGroup to
CoxeterMatrixGroup.
- Check that, with a proper Dynkin diagram, the conversion to GAP
issue does not appear
- Now or later: we probably want the Weyl group elements to be
represented by Sage matrices, but keep a handle to the
corresponding Gap group. Currently one has to make a choice
between MatrixGroup_generic and MatrixGroup_gap.
* Update WeylGroups:
- inversions: use the "root_lattice" by default?
* Cartan types
- provide a dynkin_diagram method that builds the Dynkin diagram
from the Coxeter diagram when available?
- Test: H_3 and friends should have a working dynkin_diagram method
* Prerequisites:
- Add a _float_ method to UCF
Tests:
{{{
sage: C = CoxeterDiagram(...) # good name? or
CartanDatum(coxeter_matrix=...) [1] ? or?
sage: L = RootSystem(C).root_space()
sage: W = L.reflection_group()
sage: W = CoxeterGroup(['H',3])
sage: W.domain()
}}}
Sage Days 57 in Cernay will be a good occasion to work on this.
Follow ups: #16087
[1]: Generally speaking, it's planned to rename CartanType to CartanDatum.
--
--
Ticket URL: <http://trac.sagemath.org/ticket/15703#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 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.