Skip to content

Refactor Coxeter groups as matrix groups and non crystallographic root systems #15703

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
nthiery opened this issue Jan 21, 2014 · 32 comments
Open

Comments

@nthiery
Copy link
Contributor

nthiery commented Jan 21, 2014

This is a follow up to #9290.

  • Experiment with the infrastructure scales and benchmark

  • CoxeterGraph, see Introduce a class for generalized Coxeter graphs #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
    • 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
      Axioms and more functorial constructions #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.

Depends on #16120
Depends on #16126
Depends on #16130
Depends on #17798
Depends on #18152

CC: @sagetrac-sage-combinat @tscrim @jplab @sagetrac-vripoll @mathzeta

Component: combinatorics

Keywords: coxeter groups, days57

Author: Jean-Philippe Labbé, Vivien Ripoll

Branch/Commit: u/jipilab/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems @ 09a1ff9

Reviewer: Nicolas M. Thiéry

Issue created by migration from https://trac.sagemath.org/ticket/15703

@nthiery nthiery added this to the sage-6.1 milestone Jan 21, 2014
@sagetrac-vbraun-spam sagetrac-vbraun-spam mannequin modified the milestones: sage-6.1, sage-6.2 Jan 30, 2014
@fchapoton
Copy link
Contributor

Changed keywords from none to coxeter

@fchapoton fchapoton changed the title Refactor Coxeter groups as matrix groups and non crystalographic root systems Refactor Coxeter groups as matrix groups and non crystallographic root systems Mar 21, 2014
@nthiery

This comment has been minimized.

@nthiery
Copy link
Contributor Author

nthiery commented Apr 8, 2014

Changed keywords from coxeter to coxeter groups, days57

@nthiery

This comment has been minimized.

@jplab

This comment has been minimized.

@nthiery

This comment has been minimized.

@nthiery
Copy link
Contributor Author

nthiery commented Apr 9, 2014

Author: Jean-Philippe Labbé, Vivien Ripoll

@nthiery

This comment has been minimized.

@nthiery
Copy link
Contributor Author

nthiery commented Apr 9, 2014

Reviewer: Nicolas M. Thiéry

@tscrim
Copy link
Collaborator

tscrim commented Apr 9, 2014

comment:11

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).

@jplab
Copy link
Contributor

jplab commented Apr 9, 2014

comment:12

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...

@jplab
Copy link
Contributor

jplab commented Apr 10, 2014

Attachment: benchmark.png

@jplab

This comment has been minimized.

@jplab
Copy link
Contributor

jplab commented Apr 10, 2014

Dependencies: 16120

@jplab
Copy link
Contributor

jplab commented Apr 10, 2014

Changed dependencies from 16120 to #16120

@sagetrac-vripoll
Copy link
Mannequin

sagetrac-vripoll mannequin commented Apr 10, 2014

@jplab
Copy link
Contributor

jplab commented Apr 10, 2014

Changed dependencies from #16120 to #16120, #16126

@jplab

This comment has been minimized.

@jplab
Copy link
Contributor

jplab commented Apr 10, 2014

New commits:

a2fdd20First draft with some hacks to make root systems visualization work
d025f0fAdded a `__float__` method to the class Universal Cyclotomic Field
2846f67Merge branch 'ticket16120' into t/15703/refactor_coxeter_groups_as_matrix_groups_and_non_crystallographic_root_systems

@jplab
Copy link
Contributor

jplab commented Apr 10, 2014

Commit: 2846f67

@jplab
Copy link
Contributor

jplab commented Apr 11, 2014

Changed dependencies from #16120, #16126 to #16120, #16126, #16130

@jplab

This comment has been minimized.

@jplab
Copy link
Contributor

jplab commented Apr 13, 2014

Attachment: benchmark2.png

@jplab

This comment has been minimized.

@jplab
Copy link
Contributor

jplab commented Apr 13, 2014

@jplab
Copy link
Contributor

jplab commented Apr 13, 2014

Changed commit from 2846f67 to 09a1ff9

@jplab
Copy link
Contributor

jplab commented Apr 13, 2014

comment:21

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:

09a1ff9First dirty version to get a TODO list for the ticket 15703

@sagetrac-vbraun-spam
Copy link
Mannequin

sagetrac-vbraun-spam mannequin commented May 6, 2014

comment:22

Attachment: test_rootsystems.sage.gz

@sagetrac-vbraun-spam sagetrac-vbraun-spam mannequin modified the milestones: sage-6.2, sage-6.3 May 6, 2014
@sagetrac-vbraun-spam sagetrac-vbraun-spam mannequin modified the milestones: sage-6.3, sage-6.4 Aug 10, 2014
@jplab

This comment has been minimized.

@sagetrac-vripoll

This comment has been minimized.

@jplab

This comment has been minimized.

@jplab
Copy link
Contributor

jplab commented Apr 29, 2015

Changed dependencies from #16120, #16126, #16130 to #16120, #16126, #16130, #17798, #18152

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants