Skip to content
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

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

Closed
tscrim opened this issue Feb 27, 2019 · 13 comments

Comments

@tscrim
Copy link
Collaborator

tscrim commented Feb 27, 2019

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

CC: @soehms

Component: combinatorics

Keywords: Coxeter type, root system

Author: Travis Scrimshaw

Branch: b19c498

Reviewer: Frédéric Chapoton

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

@tscrim tscrim added this to the sage-8.7 milestone Feb 27, 2019
@tscrim
Copy link
Collaborator Author

tscrim commented Feb 27, 2019

@tscrim

This comment has been minimized.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Feb 27, 2019

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

b19c498Fixing coxeter_diagram for relabeled types.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Feb 27, 2019

Commit: b19c498

@fchapoton
Copy link
Contributor

comment:3

ok, good

@fchapoton
Copy link
Contributor

Reviewer: Frédéric Chapoton

@vbraun
Copy link
Member

vbraun commented Mar 2, 2019

Changed branch from public/combinat/relabel_coxeter_diagrams-27371 to b19c498

@soehms
Copy link
Member

soehms commented Mar 13, 2019

comment:5

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!

@soehms
Copy link
Member

soehms commented Mar 13, 2019

Changed commit from b19c498 to none

@tscrim
Copy link
Collaborator Author

tscrim commented Mar 13, 2019

comment:6

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.

@soehms
Copy link
Member

soehms commented Mar 13, 2019

comment:7

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

@tscrim
Copy link
Collaborator Author

tscrim commented Mar 13, 2019

comment:8

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

@soehms
Copy link
Member

soehms commented Mar 14, 2019

comment:9

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

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

4 participants