Opened 7 years ago
Last modified 6 years ago
#15703 new enhancement
Refactor Coxeter groups as matrix groups and non crystallographic root systems
Reported by: | nthiery | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | sage-6.4 |
Component: | combinatorics | Keywords: | coxeter groups, days57 |
Cc: | sage-combinat, tscrim, jipilab, vripoll, mathzeta2 | Merged in: | |
Authors: | Jean-Philippe Labbé, Vivien Ripoll | Reviewers: | Nicolas M. Thiéry |
Report Upstream: | N/A | Work issues: | |
Branch: | u/jipilab/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems (Commits, GitHub, GitLab) | Commit: | 09a1ff9ae3fe50ab4b1d4c31f0afe682ed5173e1 |
Dependencies: | #16120, #16126, #16130, #17798, #18152 | Stopgaps: |
Description (last modified by )
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.
Attachments (3)
Change History (29)
comment:1 Changed 7 years ago by
- Cc tscrim added
comment:2 Changed 7 years ago by
- Milestone changed from sage-6.1 to sage-6.2
comment:3 Changed 7 years ago by
- Keywords coxeter added
comment:4 Changed 7 years ago by
- Summary changed from Refactor Coxeter groups as matrix groups and non crystalographic root systems to Refactor Coxeter groups as matrix groups and non crystallographic root systems
comment:5 Changed 7 years ago by
- Cc jipilab added
- Description modified (diff)
comment:6 Changed 7 years ago by
- Description modified (diff)
- Keywords groups days57 added
comment:7 Changed 7 years ago by
- Cc vripoll added
- Description modified (diff)
comment:8 Changed 7 years ago by
- Cc mathzeta2 added
comment:9 Changed 7 years ago by
- Description modified (diff)
comment:10 Changed 7 years ago by
- Description modified (diff)
- Reviewers set to Nicolas M. Thiéry
comment:11 Changed 7 years ago by
comment:12 Changed 7 years ago by
Very good!
Just a small suggestion: I would call the function "bilinear_form". Although it is true that we deal with symmetric forms so far...
Changed 7 years ago by
comment:13 Changed 7 years ago by
- Dependencies set to 16120
- Description modified (diff)
comment:14 Changed 7 years ago by
- Dependencies changed from 16120 to #16120
comment:15 Changed 7 years ago by
- Branch set to u/vripoll/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems
comment:16 Changed 7 years ago by
- Commit set to 2846f67039fe6baf568fe3ffebdb675fba9ba091
- Dependencies changed from #16120 to #16120, #16126
- Description modified (diff)
comment:17 Changed 7 years ago by
- Dependencies changed from #16120, #16126 to #16120, #16126, #16130
comment:18 Changed 7 years ago by
- Description modified (diff)
Changed 7 years ago by
comment:19 Changed 7 years ago by
- Description modified (diff)
comment:20 Changed 7 years ago by
- Branch changed from u/vripoll/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems to u/jipilab/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems
comment:21 Changed 7 years ago by
- Commit changed from 2846f67039fe6baf568fe3ffebdb675fba9ba091 to 09a1ff9ae3fe50ab4b1d4c31f0afe682ed5173e1
I adapted the TODO list in relation with the latest changes I just pushed. The script joined allows you to create the pictures and do some tests...
Now we have to work!!
New commits:
09a1ff9 | First dirty version to get a TODO list for the ticket 15703
|
Changed 7 years ago by
comment:22 Changed 7 years ago by
- Milestone changed from sage-6.2 to sage-6.3
comment:23 Changed 7 years ago by
- Milestone changed from sage-6.3 to sage-6.4
comment:24 Changed 6 years ago by
- Description modified (diff)
comment:25 Changed 6 years ago by
- Description modified (diff)
comment:26 Changed 6 years ago by
- Dependencies changed from #16120, #16126, #16130 to #16120, #16126, #16130, #17798, #18152
- Description modified (diff)
Note: See
TracTickets for help on using
tickets.
I believe I'm taking care of the inner product on the root space in #15384 (which I called
symmetric_form()
). Also for a followup ticket, we should implement/refactor things for symmetrizable and the non-symmetrizable types (for when we get the hyperbolic types done).