Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#27371 closed defect (fixed)

coxeter_diagram() of relabeled Cartan types should attempt to relabel their base Coxeter diagram

Reported by: tscrim Owned by:
Priority: major Milestone: sage-8.7
Component: combinatorics Keywords: Coxeter type, root system
Cc: soehms Merged in:
Authors: Travis Scrimshaw Reviewers: Frédéric Chapoton
Report Upstream: N/A Work issues:
Branch: b19c498 (Commits, GitHub, GitLab) Commit:
Dependencies: Stopgaps:

Status badges

Description (last modified by tscrim)

sage: ct = CartanType(['H',3]).relabel({1:3, 2:2, 3:1})
sage: ct.coxeter_diagram()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-31-25ab3e311718> in <module>()
----> 1 ct.coxeter_diagram()

TypeError: 'NotImplementedType' object is not callable

It should simply try the base type and relabel the diagram appropriately, cf.:

sage: CartanType(['H',3]).coxeter_diagram()
Graph on 3 vertices

Change History (9)

comment:1 Changed 3 years ago by tscrim

  • Branch set to public/combinat/relabel_coxeter_diagrams-27371
  • Description modified (diff)
  • Status changed from new to needs_review

comment:2 Changed 3 years ago by git

  • Commit set to b19c4984941ca06b81f6e8cd58dd6aca9be609f1

Branch pushed to git repo; I updated commit sha1. New commits:

b19c498Fixing coxeter_diagram for relabeled types.

comment:3 Changed 3 years ago by chapoton

  • Reviewers set to Frédéric Chapoton
  • Status changed from needs_review to positive_review

ok, good

comment:4 Changed 3 years ago by vbraun

  • Branch changed from public/combinat/relabel_coxeter_diagrams-27371 to b19c4984941ca06b81f6e8cd58dd6aca9be609f1
  • Resolution set to fixed
  • Status changed from positive_review to closed

comment:5 follow-up: Changed 3 years ago by soehms

  • Commit b19c4984941ca06b81f6e8cd58dd6aca9be609f1 deleted

Late thanks for solving this so immediately!

BTW: I observed this bug when I tried to generalize a wrapper for the CHEVIE cyclotomic Hecke algebra representations which I implemented more than a year ago. At that time I was working on a class on cubic Hecke algebras and I focused on ST 4, 25 and 32. Now, I have a version which works pretty good for most of the remaining cases (the bug I reported occurred when I checked the results using the braid_relation method of complex reflection groups).

Does it make sense to have such a wrapper available in sage? If so, is that under work, already?

On the road map (https://trac.sagemath.org/wiki/SageCombinatRoadMap) that is not mentioned, explicitly!

comment:6 in reply to: ↑ 5 Changed 3 years ago by tscrim

Replying to soehms:

Does it make sense to have such a wrapper available in sage? If so, is that under work, already?

A ComplexReflectionGroup type (with the corresponding root system) or a wrapper around the corresponding groups? If it is the latter, see ReflectionGroup. For the former, there might be a ticket somewhere about this, but I am not sure there is any work on this. However, it would be good to have this natively in Sage. When talking with Christian Stump about this, an idea was to port the data from GAP3 into Sage, but that was somewhat difficult to automate. Well, I guess we could avoid all of the root data and just have the types by themselves for differentiating the groups.

comment:7 follow-up: Changed 3 years ago by soehms

I meant a wrapper around the Hecke-Algebra representations for complex reflection groups (GAP3 Manual 76.1). Did you get that right?

comment:8 in reply to: ↑ 7 ; follow-up: Changed 3 years ago by tscrim

Replying to soehms:

I meant a wrapper around the Hecke-Algebra representations for complex reflection groups (GAP3 Manual 76.1). Did you get that right?

I don't think there has been any work on that. Big +1 for including that. (The Ariki-Koike algebra, i.e. the Hecke algebra for G(r,1,n), has an implementation on #20469. I need to ping Andrew there to see if he can finish up what he was working on there.)

comment:9 in reply to: ↑ 8 Changed 3 years ago by soehms

Replying to tscrim:

Replying to soehms:

I meant a wrapper around the Hecke-Algebra representations for complex reflection groups (GAP3 Manual 76.1). Did you get that right?

I don't think there has been any work on that. Big +1 for including that. (The Ariki-Koike algebra, i.e. the Hecke algebra for G(r,1,n), has an implementation on #20469. I need to ping Andrew there to see if he can finish up what he was working on there.)

I've seen the ticket about the Ariki-Koike algebra. It seems, that no matrix representation is included, so far. So, the wrapper could by used as an extension. BTW: I am not very close to Ariki-Koike algebras, but if there is a need I can try to help on that ticket.

What I have already done concerning the wrapper is the following function:

def cyclotomic_hecke_representation_from_chevie(ReflectGroup, number=None, generic=True):
    r"""
    This function reads in irreducible representations of cyclotomic Hecke algebras via the gap3
    interface from CHEVIE (see GAP3-manual 76.7).

    It tries to find a most generic base ring. To this aim it first determines a set of indeterminats
    such that an appropriate power of them cover all spectra of non conjugated generators. If they
    don't occur in denominators of the representation matrices entries then a multivariate polynomial
    ring will be chosen. Else, if just monomials occur in the denominators, a multivariate Laurent
    polynomial ring is chosen. Else the field of fraction of the multivariate polynomial ring will
    be taken.

    The base ring of the polynomials is chosen according to the coefficients returned by GAP3. As
    long as they are integral or roots of unity the base ring will be a quotient ring of ZZ[x] by
    an appropriate cyclotomic polynomial or ZZ. In case division by integers != 1,-1 is needed the
    base ring will be QQ or an appropriate cyclotomic field.

    INPUT:

     - ``ReflectGroup`` -- instance of ComplexReflectionGroup to which the cyclotomic Hecke algebra
       is considered
     - ``number``  --  integer (optional, defaults to all)  number of the representation according
       to CHEVIE's enumeration
     - ``generic`` --  boolean (optional, default True) if set to False the base ring is set to the
       field of fractions of a multivariate polynomial ring over the universal cyclotomic field.
       In the default case the function tries to find a more generic base ring allowing positive
       characteristic and specialization of indeterminats.

As you can see my aim is, to have the representation matrices implemented over the most generic ring for example:

Irreducible complex reflection group of rank 2 and type ST4
Base ring: Multivariate Polynomial Ring in x00, x01, x02 over Integer Ring

Irreducible complex reflection group of rank 2 and type ST7
Base ring: Multivariate Laurent Polynomial Ring in x00, x01, x10, x11, x12, x20, x21, x22 over Univariate Quotient Polynomial Ring in e3bar over Integer Ring with modulus e3^2 + e3 + 1

But there are cases where I don't know how to do that faithfully in Sage. You would need to localize a ring at a certain couple of elements (occurring in the denominators of the CHEVIE results), for example the Ariki-Koike algebra for r=3 and n=3:

Irreducible complex reflection group of rank 3 and type G(3,1,3)
Base ring: Fraction Field of Multivariate Polynomial Ring in x00, x01, x02, x10, x11 over Integer Ring

Comparing with ticket #20469 you would have to set x00=u0, x01=u1, x02=u2, x10=-1, x11=q. I took the fraction field, since you have these denominators:

sage: Set([elem.denominator() for elem in m1.list()])
{1}
sage: Set([elem.denominator() for elem in m2.list()])
{1, x00 - x01, x01 - x02, x00 - x02}
sage: Set([elem.denominator() for elem in m3.list()])
{1, x02*x10 + x00*x11, x00 - x01, x01 - x02, x01*x10 + x02*x11, x00 - x02, x02*x10 + x01*x11, x10 - x11, x01*x10 + x00*x11, x00*x10 + x01*x11, x00*x10 + x02*x11}

But unfortunately this cancels the possibility to specialize the indeterminats! Another example:

Irreducible complex reflection group of rank 2 and type ST27
Base ring: Multivariate Laurent Polynomial Ring in x00, x01 over Cyclotomic Field of order 60 and degree 16

Here I took the cyclotomic field, since division by 2 must work.

sage: Set([elem.denominator() for elem in m1.list()])
{1}
sage: Set([elem.denominator() for elem in m2.list()])
{1}
sage: Set([elem.denominator() for elem in m3.list()])
{1, 2}

This cancels characteristic > 2!

How can I obtain a more general base ring in such cases (that is localize at elements)?

Note: See TracTickets for help on using tickets.