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

Reply via email to