id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
15703 Refactor Coxeter groups as matrix groups and non crystallographic root systems nthiery "This is a follow up to #9290.
* Experiment with the infrastructure scales and benchmark
* !CoxeterGraph, see #16126
- 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.
- adapt column() and row() method to give the labels in the base ring
* Update !CartanMatrix, see #17798
- Add a base ring argument to the constructor
- Update is_crystallographic
- Update is_affine
- Update is_finite
- Update is_generalized_cartan_matrix
* !CartanType
- Possibly update to accept appropriate data to build a !CoxeterGraph (e.g. a matrix)
- Add a base_ring method?
- Decide on the semantic of is_crystallographic (symmetrizable or
not?), and if possibly add an is_... method to decide whether the
entries are integral or not.
- 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
* !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.
- Define a new projection ""transversal"" to visualise root systems (and find a right name for it)
- 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
- adapt the is_positive_root to make it work for any base ring
- 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.
* Plotting:
- add a family_of_points method in the projections to be used by the ""transversal projection""
* Update !WeylGroups:
- inversions: use the ""root_lattice"" by default?
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.
" enhancement new major sage-6.4 combinatorics coxeter groups, days57 sage-combinat tscrim jipilab vripoll mathzeta2 Jean-Philippe Labbé, Vivien Ripoll Nicolas M. Thiéry N/A u/jipilab/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems 09a1ff9ae3fe50ab4b1d4c31f0afe682ed5173e1 #16120, #16126, #16130, #17798, #18152