{"id":26535395,"url":"https://github.com/ulthiel/champ","last_synced_at":"2025-03-21T20:35:56.741Z","repository":{"id":143215254,"uuid":"240537721","full_name":"ulthiel/Champ","owner":"ulthiel","description":"Computer algebra package for rational Cherednik algebras and Calogero-Moser spaces.","archived":false,"fork":false,"pushed_at":"2023-10-11T14:28:00.000Z","size":643,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-30T17:50:01.590Z","etag":null,"topics":["algebra","algebraic-geometry","computer-algebra","mathematics","representation-theory"],"latest_commit_sha":null,"homepage":"","language":"MATLAB","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ulthiel.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-02-14T15:21:28.000Z","updated_at":"2022-01-03T09:54:51.000Z","dependencies_parsed_at":"2023-10-11T18:58:17.053Z","dependency_job_id":null,"html_url":"https://github.com/ulthiel/Champ","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulthiel%2FChamp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulthiel%2FChamp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulthiel%2FChamp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ulthiel%2FChamp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ulthiel","download_url":"https://codeload.github.com/ulthiel/Champ/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244866775,"owners_count":20523575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algebra","algebraic-geometry","computer-algebra","mathematics","representation-theory"],"created_at":"2025-03-21T20:35:40.987Z","updated_at":"2025-03-21T20:35:56.715Z","avatar_url":"https://github.com/ulthiel.png","language":"MATLAB","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \tCHAMP\n\nA Cherednik Algebra Magma Package. By [Ulrich Thiel](https://ulthiel.com/math), 2010–2022.\n\n## Scope\n\nWith this package you can:\n* compute in rational Cherednik algebras (as introduced by [Etingof–Ginzburg](https://arxiv.org/abs/math/0011114); the underlying reflection groups can be arbitrary and also the parameters can be arbitrary, including t≠0 and generic parameters valued in polynomial rings or rational function fields);\n* compute generators and a presentation of the center of the rational Cherednik algebra at t=0 (the coordinate algebra of the Calogero-Moser space);\n* compute Poisson brackets on the rational Cherednik algebra at t=0 (and its center);\n* compute decomposition matrices of baby Verma modules and graded characters of simple modules for restricted rational Cherednik algebras (as introduced by [Gordon](https://arxiv.org/abs/math/0202301));\n* compute Calogero–Moser families and hyperplanes (as introduced by [Gordon](https://arxiv.org/abs/math/0202301), [Bonnafé-Rouquier](https://arxiv.org/abs/1708.09764), and [Bellamy-Schedler-Thiel](https://arxiv.org/abs/1505.00486));\n* compute cuspidal Calogero–Moser families (as introduced by [Bellamy](https://arxiv.org/abs/0911.0069));\n* compute Calogero–Moser cellular characters (as introduced by [Bonnafé–Rouquier](https://arxiv.org/abs/1708.09764)).\n\nAn accompanying database contains many computational results. This document gives a complete overview of the functionality with many examples. The theory and algorithms are discussed in the following publications:\n* Thiel, U. (2015). Champ: a Cherednik algebra Magma package. *LMS J. Comput. Math., 18*(1), 266–307. [https://doi.org/10.1112/S1461157015000054](https://doi.org/10.1112/S1461157015000054), https://arxiv.org/abs/1403.6686\n* Bonnafé, C. \u0026 Thiel, U. (2022). Computational aspects of Calogero–Moser spaces. https://arxiv.org/abs/2112.15495\n\nMore information about the theoretical background can be found in the following papers (and in the references therein):\n\n* Thiel, U. (2014). A counter-example to Martino's conjecture about generic Calogero–Moser families. *Algebr. Represent. Theory, 17*(5), 1323–1348. [https://doi.org/10.1007/s10468-013-9449-4](https://doi.org/10.1007/s10468-013-9449-4), https://arxiv.org/abs/1301.4975\n* Bellamy, G. \u0026 Thiel, U. (2016). Cuspidal Calogero-Moser and Lusztig families for Coxeter groups. *J. Algebra, 462*, 197--252. [https://doi.org/10.1016/j.jalgebra.2016.06.003](https://doi.org/10.1016/j.jalgebra.2016.06.003), https://arxiv.org/abs/1505.00486\n* Thiel, U. (2017). Restricted rational Cherednik algebras. In: *Representation theory—current trends and perspectives* (pp. 681–745). Eur. Math. Soc., Zürich. https://arxiv.org/abs/1603.05230\n* Bellamy, G., Schedler, T., \u0026 Thiel, U. (2018). Hyperplane arrangements associated to symplectic quotient singularities. In: *Phenomenological approach to algebraic geometry* (pp. 25–45). Polish Acad. Sci. Inst. Math., Warsaw. https://arxiv.org/abs/1702.04881\n\nI have written the first few lines of code back in 2010 as a beginning PhD student. I didn't expect this to become such a large project and it was going through many iterations. I used the name CHAMP for this project from 2013 on.\n\n### Acknowledgements\n\nI would like to thank Cédric Bonnafé for his contributions and endurance. Furthermore, I would like to thank Dario Mathiä for testing and feedback. This work is a contribution to the SFB-TRR 195 'Symbolic Tools in Mathematics and their Application' of the German Research Foundation (DFG).\n\n## Contents\n\n[1. Downloading an running](#downloading)  \n[2. Complex reflection groups](#reflgroups)  \n[3. Rational Cherednik algebras](#che)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[3.1 Parameters](#params)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[3.2 Rational Cherednik algebras at t=0 and Calogero–Moser spaces](#cmspaces)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[3.3 Poisson brackets](#poisson-brackets)  \n[4. Restricted rational Cherednik algebras](#rrca)  \n[5 Representation theory of restricted rational Cherednik algebras](#rrca-rep)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[4.1 Conventions](#rrca-conv)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[4.2 Working with modules](#rrca-verma)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[4.3 Computing multiplicities](#rrca-mults)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[4.4 Calogero–Moser hyperplanes and families](#rrca-cmhyperplanes)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[4.5 Database](#rrca-db)  \n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;\u0026nbsp;[4.6 Rouquier families](#rrca-rouquier)  \n[5. Calogero–Moser cellular characters](#rrca-cellular)  \n\n\u003ca name=\"downloading\"\u003e\u003c/a\u003e\n\n## Downloading and running\n\nYou need a [Magma](http://magma.maths.usyd.edu.au/magma/) version of at least 2.19 (current version is 2.26 and CHAMP is tested with 2.25) and the Magma executable needs to be in your system PATH so that you can start Magma by calling ``magma`` in the terminal. CHAMP has an accompanying database containing data about complex reflection groups and rational Cherednik algebras that is necessary for full functionality and that moreover contains many computational results. This database is stored as a [separate repository](https://gitlab.rhrk.uni-kl.de/ulthiel/champ-db) with [Git Large File Storage](https://git-lfs.github.com) on my university's Git server to prevent Github's bandwidth limit on LFS storage.\n\nSo, to get CHAMP and the database you can do *one* of the following:\n\n1. Easiest and most stable: Download the [latest release](https://github.com/ulthiel/champ/releases/latest) of CHAMP together with the database from the release assets.\n2. More up to date: Download the [latest source of CHAMP](https://github.com/ulthiel/Champ/archive/refs/heads/master.zip) and the [latest source of the database](https://gitlab.rhrk.uni-kl.de/ulthiel/champ-db/-/archive/master/champ-db-master.zip) and place the database as the folder \"Champ-DB\" inside the CHAMP directory.\n3. Best for developers: Clone the CHAMP repository via ``git clone https://github.com/ulthiel/champ`` and then inside the CHAMP directory clone the Git LFS database via ``git clone https://gitlab.rhrk.uni-kl.de/ulthiel/champ-db Champ-DB``. To this end, you need to install the Git LFS extension first as described [here](https://git-lfs.github.com).\n\nYou can then run CHAMP via ```./champ```:\n\n```c++\n#########################################################\n#  CHAMP (CHerednik Algebra Magma Package)              #\n#  Version v1.6.0                                       #\n#  Copyright (C) 2010-2022 Ulrich Thiel                 #\n#  Licensed under GNU GPLv3                             #\n#  Please cite                                          #\n#    * LMS J. Comput. Math. 18 (2015), no. 1, 266-307   #\n#  Contributions by:                                    #\n#    * Cedric Bonnafe (Montpellier)                     #\n#    * Monika Truong (Stuttgart)                        #\n#  thiel@mathematik.uni-kl.de                           #\n#  https://ulthiel.com/math                             #\n#########################################################\n\u003e \n```\n\n\u003ca name=\"reflgroups\"\u003e\u003c/a\u003e\n\n## Complex reflection groups\n\nModels for several complex reflection groups, their character tables, character names, models for irreducible representations, etc. is stored in the ReflectionGroups database. The data is taken from (and compatible with) J. Michel's [CHEVIE](https://webusers.imj-prg.fr/~jean.michel/chevie/chevie.html) package from 2014 (there were some character label changes afterwards but everything in CHAMP is consistent). The reason for using a database is that we need consistent labelings (of e.g. characters) that allow us to compare results with the literature. A general philosophy in CHAMP is that most objects (like groups) will have attributes (like CharacterTable) which are set by a similarly named procedure operating on the object (using the ~ operator). Usually, it is first checked whether the data exists in the database; if not, it will be computed in a consistent way.\n\nThe following examples demonstrate how to use all functions around complex reflection groups:\n\n```C++\n//Load the Weyl group B2 in a reflection representation\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e W;\nMatrixGroup(2, Rational Field)\nGenerators:\n    [-1  2]\n    [ 0  1]\n\n    [ 1  0]\n    [ 1 -1]\n\n//The database location for this group is stored in the DBDir attribute\n\u003e W`DBDir;\nReflectionGroups/G2_1_2_CHEVIE/\n\n//Character tables and standard character names are stored in the database.\n\u003e CharacterTable(~W);\n\u003e W`CharacterTable;\n[\n    ( 1, 1, 1, -1, -1 ),\n    ( 2, -2, 0, 0, 0 ),\n    ( 1, 1, -1, -1, 1 ),\n    ( 1, 1, 1, 1, 1 ),\n    ( 1, 1, -1, 1, -1 )\n]\n\u003e W`CharacterNames;\n[ 11., 1.1, .11, 2., .2 ] //notation for bi-partitions\n\n//IMPORTANT: CharacterTable(W) without the ~ will use Magma's algorithm to\n//compute the character table; we won't get a labeling! Hence, always use the\n//procedure with the ~ operator.\n\n//Load models for the irreducible representations. Their numbering will match\n//the one from the database.\n\u003e Representations(~W);\n\u003e W`Representations[0]; //I wanted to use positive characteristic\n                        //representations one day, hence the 0.\n\n//Fake degrees (graded W-character of the coinvariant algebra)\n\u003e FakeDegrees(~W);\n\u003e W`FakeDegrees;\n[\n  q^2,\n  q^3 + q,\n  q^4,\n  1,\n  q^2\n]\n\n//Other types of reflection groups (with connection to data from the database\n//and/or natural choices) can be created with the functions listed below.\n//You can also load some special models directly from the database as in the\n//following example which loads a particular model of B2 used by Bonnafé-\n//Rouquier in some computation\n\u003e W := CHAMP_GetFromDB(\"ReflectionGroups/B2_BR\", \"GrpMat\");\n\u003e W;\nMatrixGroup(2, Rational Field)\nGenerators:\n    [0 1]\n    [1 0]\n\n    [-1  0]\n    [ 0  1]\n```\n\n**Remark.** I have not imported *all* the data for *all* possible groups of course. My main focus were the exceptional groups but I have also added small cases of types ABD and dihedral groups. More data can always be added to the database with the export/import programs in the directory ```Champ-DB/Tools```. \n\n\u003ca name=\"che\"\u003e\u003c/a\u003e\n\n## Rational Cherednik algebras\n\nThe definitition of rational Cherednik algebras used in CHAMP is exactly the one by [Etingof–Ginzburg](https://arxiv.org/abs/math/0011114). It's best to begin with an example straightaway.\n\n```C++\n//Create the rational Cherednik algebra for t and c generic (valued in a\n//polynomial ring)\n\u003e W := ComplexReflectionGroup(2,1,2); //Weyl group of type B2 as above\n\u003e H := RationalCherednikAlgebra(W : Type:=\"EG\"); //I will explain the EG below\n\u003e H;\nRational Cherednik algebra\nGenerators:\n    w1, w2, y1, y2, x1, x2\nGenerator degrees:\n    0, 0, -1, -1, 1, 1\nBase ring:\n    Polynomial ring of rank 3 over Rational Field\n    Order: Lexicographical\n    Variables: t, c1, c2\nGroup:\n    MatrixGroup(2, Rational Field) of order 2^3\n    Generators:\n    [-1  2]\n    [ 0  1]\n\n    [ 1  0]\n    [ 1 -1]\nt-parameter:\n    t\nc-parameter:\n    Mapping from: { 1 .. 2 } to Polynomial ring of rank 3 over Rational Field\n    \u003c1, c1\u003e\n    \u003c2, c2\u003e\n\n//There is quite a bit to discuss now but let's start playing directly.\n//As you can see in the output, there are generators w1, w2, y1, y2, x1, x2.\n//These refer to the generators of the group (the w's), the basis of the space\n//W is acting on (the y's) and its dual space (the x's). You can access the i-th\n//generator in this numbering with H.i.\n\u003e H.3;\n[1 0]\n[0 1]*(y1)\n\n//As a module, the Cherednik algebra is the group ring of W with coefficients\n//in R[V \\oplus V^*], where R is the base ring of the parameters. This is how\n//algebra elements are represented also in CHAMP. Let's do some arithmetic.\n\u003e H.5*H.2;\n[ 1  0]\n[ 1 -1]*(x1 + x2)\n\u003e H.5*H.3;\n[-1  0]\n[-1  1]*(c2)\n+\n[-1  2]\n[ 0  1]*(c1)\n+\n[1 0]\n[0 1]*(y1*x1 + t)\n```\n\n**Remark.** In Magma, matrices are acting from the *right* on vectors. Hence, to keep everything consistent, I have implemented the *opposite* of the rational Cherednik alebra as usually written on paper. This may be a bit confusing at first, but in the end it's less confusing than trying to artificially make Magma act on the left.\n\nThe database contains (some) generators of the center of the rational Cherednik algebra at t=0 (see below). These elements are huge and the computation takes a lot of time, so one really wants to store them. I have implemented a function ```Rprint``` (for \"reversible print\") that returns program code for an element of an arbitrary Cherednik algebra allowing to reconstruct this element. Here's an example:\n\n```\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e H := RationalCherednikAlgebra(W : Type:=\"EG\");\n\u003e Rprint(H.1);\n/*\n\tCode for a Cherednik algebra element\n\tVersion: v1.6.0-alpha-66-g295f039\n\tDate: Fri Jun 11 08:28:16 CEST 2021\n*/\n//base ring of the group\nK := RationalField();\n//the group\nW := MatrixGroup\u003c2, RationalField() | [ -1, 2, 0, 1 ] , [ 1, 0, 1, -1 ]\u003e;\n//the parameters of the Cherednik algebra\nR := PolynomialRing(RationalField(), 3);\nt := R.1;\nc1 := R.2;\nc2 := R.3;\nt := t;\nc := map\u003c{ 1 .. 2 }-\u003e R |[\u003c1,c1\u003e,\u003c2,c2\u003e]\u003e;\n//the Cherednik algebra\nH := RationalCherednikAlgebra(W,\u003ct,c\u003e);\nA := H`GroupAlgebra;\ny1 := H`yxAlgebra.1;\ny2 := H`yxAlgebra.2;\nx1 := H`yxAlgebra.3;\nx2 := H`yxAlgebra.4;\n//the support of the Cherednik algebra element (as words in the generators)\nsupp := [[ 1 ]];\n//the coefficients of the Cherednik algebra element (these are elements of S)\ncoeff1 := 1;\nhA := Zero(A);\nhA +:= coeff1*(A!WordToElement(W,supp[1]));\nh := Zero(H); h`Element := hA;\nreturn h\n```\n\n\u003ca name=\"params\"\u003e\u003c/a\u003e\n\n### Parameters\n\nThis topic is a bit technical but important. There are two kinds of parameters involved in the relations for the rational Cherednik algebra: a *t-parameter* and a *c-parameter*. Let's take a commutative ring R as base ring. The t-parameter is some fixed element of R; the c-parameter is a function c:Refl(W)/W → R from the conjugacy classes of reflections of W to R. For example, we can let R be a polynomial ring K[t,c\u003csub\u003e1\u003c/sub\u003e,...,c\u003csub\u003er\u003c/sub\u003e] and define the parameters t and c in the obvious way. In this case we say the parameters are *generic*. If I is an ideal of R, we can also consider R/I as new base ring and get parameters with are *generic for the subscheme* defined by I. For example, we could take a polynomial ring R=K[t,c] and set c(s)=c for all c. This would be the generic *equal* parameter case.\n\nFor the construction of the rational Cherednik algebra in CHAMP you can take as base ring R any K-algebra that can be defined in Magma, where K is the base field of the reflection group W, and as parameters you can take any t and maps c with values in R. In particular, you can work with generic parameters, generic parameters on a, say, hyperplane, or special parameters taking values in your base field K. You have complete freedom.\n\n[Ginzburg-Guay-Opdam-Rouquier](https://arxiv.org/abs/math/0212036) considered a Fourier transform on the c-parameter space which makes some expressions in the parameters much simpler (such as equations for the Calogero–Moser hyperplanes). I will refer to these as *k-parameters*. While the c-parameters by Etingof-Ginzburg are indexed by conjugacy classes of reflections, the k-parameters have a double index: the first indexes an orbit [H] of reflection hyperplanes, the second is an index between 0 and |W\u003csub\u003eH\u003c/sub\u003e|-1, where W\u003csub\u003eH\u003c/sub\u003e is the stabilizer of a representative of [H]. Of course, in the end the number of parameters is the same. By default, CHAMP uses k-parameters.\n\n[Bonnafé-Rouquier](https://arxiv.org/abs/1708.09764) use another variant of the GGOR parameters. Finally, there is a notion of *spetsial* parameters (due to Broué-Malle-Michel) generalizing the equal parameter case from Weyl groups to complex reflection groups.\n\nThe following examples should make all of the above discussion clear.\n\n```C++\n//First, some shortcuts for creating generic rational Cherednik algebras:\n\u003e W:=ComplexReflectionGroup(2,1,2);\n\u003e H:=RationalCherednikAlgebra(W); //generic t and generic k\n\u003e H:=RationalCherednikAlgebra(W : Type:=\"EG\"); //generic t and generic c\n\u003e H:=RationalCherednikAlgebra(W,0); //t=0 and generic k\n\u003e H:=RationalCherednikAlgebra(W,0 : Type:=\"EG\"); //t=0 and generic c\n\u003e H:=RationalCherednikAlgebra(W,0 : Type:=\"BR\"); //t=0 and generic Bonnafe-Rouquier parameter\n\n//Now, let's have a closer look at parameters. Let's create a generic\n//c-parameter.\n\u003e CherednikParameter(W : Type:=\"EG\");\nMapping from: { 1 .. 2 } to Polynomial ring of rank 2 over Rational Field\n    \u003c1, c1\u003e\n    \u003c2, c2\u003e\n\n//This is a map from (labels of) conjugacy classes of reflections of W to the\n//polynomial ring in that many variables. Representatives of the conjugacy\n//classes of reflections can be obtained as follows:\n\u003e W`ReflectionClasses;\n[\n    [-1  2]\n    [ 0  1],\n\n    [ 1  0]\n    [ 1 -1]\n]\n\n//Let's construct the rational Cherednik algebra of W over the rational numbers\n//with t=0 and a c-parameter with values c(1) = -1 and c(2) = 1:\n\u003e c := map\u003c{1,2} -\u003e Rationals() | [\u003c1,-1\u003e, \u003c2,1\u003e] \u003e;\n\u003e H:=RationalCherednikAlgebra(W,0,c);\n\n//Let's create a c-parameter which is generic for the hyperplane c_1 - c_2\n//(this is the generic equal parameter case):\n\u003e c := CherednikParameter(W : Type:=\"EG\");\n\u003e R:=Codomain(c);\n\u003e cH:= SpecializeCherednikParameterInHyperplane(c, R.1-R.2);\n\u003e cH;\nMapping from: { 1 .. 2 } to Multivariate rational function field of rank 1 over\nRational Field\n    \u003c1, c2\u003e\n    \u003c2, c2\u003e\n\u003e H := RationalCherednikAlgebra(W,0,cH);\n\n//You can create a generic *rational* c-parameter as follows:\n\u003e CherednikParameter(W : Type:=\"EG\", Rational:=true);\nMapping from: { 1 .. 2 } to Multivariate rational function field of rank 2 over\nRational Field\n    \u003c1, c1\u003e\n    \u003c2, c2\u003e\n\n//Now, let's look at k-parameters (the default):\n\u003e k := CherednikParameter(W);\n\u003e k;\nMapping from: { 1 .. 2 } to Polynomial ring of rank 2 over Rational Field\n    \u003c1, 2*k1_1\u003e\n    \u003c2, 2*k2_1\u003e\n\n//The labeling of orbits of reflection hyperplanes is consistent with what is\n//stored in\n\u003e W`ReflectionLibrary;\n//This is an array indexed by orbits of reflection hyperplanes. Each entry is\n//again an array indexed by reflection hyperplanes in this orbit. The entries\n//of this array are the reflections for the corresponding hyperplane.\n//You can work with k-parameters exactly as with the c-parameters above.\n\n//We can also create spetsial parameters:\n\u003e c := CherednikParameter(W : Type:=\"Spetsial\");\n\u003e c;\nMapping from: { 1 .. 2 } to Rational Field\n\u003c1, 2\u003e\n\u003c2, 2\u003e \n```\n\n\u003ca name=\"cmspaces\"\u003e\u003c/a\u003e\n\n## Rational Cherednik algebras at t=0 and Calogero–Moser spaces\n\nThe rational Cherednik algebra H\u003csub\u003et=0,c\u003c/sub\u003e has a big center Z\u003csub\u003ec\u003c/sub\u003e. The center is a Poisson deformation of the symplectic singularity (V ⊕ V\u003csup\u003e\u0026ast;\u003c/sup\u003e)/W, where W acts on V. The associated variety is called the *Calogero–Moser space* of W at parameter c. CHAMP can compute algebra generators of Z\u003csub\u003ec\u003c/sub\u003e and also a presentation of this algebra (the former works even for large groups like F\u003csub\u003e4\u003c/sub\u003e, the latter involves rather complicated invariant theory computations which are even for small dihedral groups too much; but you can still get some ideas).\n\nThe database contains generators of Z\u003csub\u003e0\u003c/sub\u003e (undeformed case) and Z\u003csub\u003ek\u003c/sub\u003e (k generic) for several cases. Some of the elements are extremely large (for G\u003csub\u003e11\u003c/sub\u003e there is one taking up \u003e100MB compressed and \u003e500MB uncompressed)! By default, all functions check the database first and load the data from there if available.\n\n\n```C++\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e H := RationalCherednikAlgebra(W,0);\n\u003e CenterGenerators(H); //this needs generic parameters!\n[*\n    [1 0]\n    [0 1]*(y1^2 - 2*y1*y2 + 2*y2^2),\n    [-1  0]\n    [-1  1]*(k2_1)\n    +\n    [-1  2]\n    [ 0  1]*(k1_1)\n    +\n    [ 1  0]\n    [ 1 -1]*(k2_1)\n    +\n    [1 0]\n    [0 1]*(y1*x1 + y2*x2)\n    +\n    [ 1 -2]\n    [ 0 -1]*(k1_1),\n    [1 0]\n    [0 1]*(x1^2 + x1*x2 + 1/2*x2^2),\n    [1 0]\n    [0 1]*(y1^4 - 4*y1^3*y2 + 6*y1^2*y2^2 - 4*y1*y2^3 + 2*y2^4),\n    [-1  0]\n    [-1  1]*(k2_1*y1^2 - 4*k2_1*y1*y2 + 4*k2_1*y2^2)\n    +\n    [-1  2]\n    [ 0  1]*(k1_1*y1^2 - 2*k1_1*y1*y2)\n    +\n    [ 1  0]\n    [ 1 -1]*(k2_1*y1^2)\n    +\n    [1 0]\n    [0 1]*(y1^3*x1 - 4*y1^2*y2*x1 - y1^2*y2*x2 + 4*y1*y2^2*x1 + 2*y1*y2^2*x2)\n    +\n    [ 1 -2]\n    [ 0 -1]*(-k1_1*y1^2 + 2*k1_1*y1*y2),\n    [-1  2]\n    [ 0  1]*(-2*k1_1*y2*x1 - 2*k1_1*y2*x2)\n    +\n    [ 1 -2]\n    [ 1 -1]*(-2*k1_1*k2_1)\n    +\n    [1 0]\n    [0 1]*(y1^2*x1^2 + y1^2*x1*x2 + 1/2*y1^2*x2^2 - 4*y1*y2*x1^2 - 4*y1*y2*x1*x2\n    - y1*y2*x2^2 + 4*y2^2*x1^2 + 4*y2^2*x1*x2 + y2^2*x2^2)\n    +\n    [-1  0]\n    [ 0 -1]*(-2*k1_1^2)\n    +\n    [ 1 -2]\n    [ 0 -1]*(-2*k1_1*y1*x1 + 2*k1_1*y2*x1)\n    +\n    [-1  2]\n    [-1  1]*(-2*k1_1*k2_1),\n    [-1  0]\n    [-1  1]*(k2_1*x1^2 + k2_1*x1*x2 + 1/4*k2_1*x2^2)\n    +\n    [-1  2]\n    [ 0  1]*(k1_1*x1^2 + 3/2*k1_1*x1*x2 + 3/4*k1_1*x2^2)\n    +\n    [ 1  0]\n    [ 1 -1]*(1/4*k2_1*x2^2)\n    +\n    [1 0]\n    [0 1]*(y1*x1^3 + 3/2*y1*x1^2*x2 + 3/4*y1*x1*x2^2 + 1/4*y2*x2^3)\n    +\n    [ 1 -2]\n    [ 0 -1]*(k1_1*x1^2 + 1/2*k1_1*x1*x2 + 1/4*k1_1*x2^2),\n    [1 0]\n    [0 1]*(x1^4 + 2*x1^3*x2 + 3/2*x1^2*x2^2 + 1/2*x1*x2^3 + 1/8*x2^4)\n*]\n\u003e #CenterGenerators(H);\n8\n//The computation of the center generators inductively deforms fundamental\n//invariants of Z_0 = K[V \\oplus V^*]^W. You can compute and acccess these\n//fundamental invariants as follows:\n\u003e SymplecticDoublingFundamentalInvariants(W);\n[\n    y1^2 - 2*y1*y2 + 2*y2^2,\n    y1*x1 + y2*x2,\n    x1^2 + x1*x2 + 1/2*x2^2,\n    y1^4 - 4*y1^3*y2 + 6*y1^2*y2^2 - 4*y1*y2^3 + 2*y2^4,\n    y1^3*x1 - 4*y1^2*y2*x1 - y1^2*y2*x2 + 4*y1*y2^2*x1 + 2*y1*y2^2*x2,\n    y1^2*x1^2 + y1^2*x1*x2 + 1/2*y1^2*x2^2 - 4*y1*y2*x1^2 - 4*y1*y2*x1*x2 -\n        y1*y2*x2^2 + 4*y2^2*x1^2 + 4*y2^2*x1*x2 + y2^2*x2^2,\n    y1*x1^3 + 3/2*y1*x1^2*x2 + 3/4*y1*x1*x2^2 + 1/4*y2*x2^3,\n    x1^4 + 2*x1^3*x2 + 3/2*x1^2*x2^2 + 1/2*x1*x2^3 + 1/8*x2^4\n]\n//The deformation of an element of Z_0 to an element of Z_c is done with the\n//function TruncationInverse which you can also call directly if you are only\n//interested in special elements:\n\u003e TruncationInverse(H, W`SymplecticDoublingFundamentalInvariants[1]);\n[1 0]\n[0 1]*(y1^2 - 2*y1*y2 + 2*y2^2)\n//On V \\oplus V^* we have a natural N^2-grading. We are especially interested in\n//algebra generators of N^2-degree (d,d), i.e. of Z-degree 0.\n\u003e [ Bidegree(f) : f in W`SymplecticDoublingFundamentalInvariants ];\n[ \u003c0, 2\u003e, \u003c1, 1\u003e, \u003c2, 0\u003e, \u003c0, 4\u003e, \u003c1, 3\u003e, \u003c2, 2\u003e, \u003c3, 1\u003e, \u003c4, 0\u003e ]\n//We see there are only 2 generators of Z-degree 0.\n//You can also directly compute only the degree-0 generators of Z_c as follows\n\u003e CenterGeneratorsOfDegreeZero(H);\n[*\n    [-1  0]\n    [-1  1]*(k2_1)\n    +\n    [-1  2]\n    [ 0  1]*(k1_1)\n    +\n    [ 1  0]\n    [ 1 -1]*(k2_1)\n    +\n    [1 0]\n    [0 1]*(y1*x1 + y2*x2)\n    +\n    [ 1 -2]\n    [ 0 -1]*(k1_1),\n    [-1  2]\n    [ 0  1]*(-2*k1_1*y2*x1 - 2*k1_1*y2*x2)\n    +\n    [ 1 -2]\n    [ 1 -1]*(-2*k1_1*k2_1)\n    +\n    [1 0]\n    [0 1]*(y1^2*x1^2 + y1^2*x1*x2 + 1/2*y1^2*x2^2 - 4*y1*y2*x1^2 - 4*y1*y2*x1*x2\n    - y1*y2*x2^2 + 4*y2^2*x1^2 + 4*y2^2*x1*x2 + y2^2*x2^2)\n    +\n    [-1  0]\n    [ 0 -1]*(-2*k1_1^2)\n    +\n    [ 1 -2]\n    [ 0 -1]*(-2*k1_1*y1*x1 + 2*k1_1*y2*x1)\n    +\n    [-1  2]\n    [-1  1]*(-2*k1_1*k2_1)\n*]\n//We can even compute a presentation of the center of H\n\u003e CenterPresentation(H);\n[\n    3*z1^2*z3 - z1*z2^2 - z1*z6 + 2*k1_1^2*z1 + z2*z5 - 2*z3*z4,\n    -4*z1*z2*z3 + 2*z1*z7 + z2^3 + 2*z2*z6 - 4*k2_1^2*z2 - z3*z5,\n    2*z1*z8 + z2^2*z3 - 2*z2*z7 - z3*z6 + 2*k1_1^2*z3,\n    8*z1^3*z3 - 3*z1^2*z2^2 - 4*z1^2*z6 + (4*k1_1^2 + 8*k2_1^2)*z1^2 +\n        2*z1*z2*z5 - 8*z1*z3*z4 + 4*z1*z3*z8 + 2*z2^2*z3^2 + 2*z2^2*z4 -\n        4*z2*z3*z7 - 2*z3^2*z6 + 4*k1_1^2*z3^2 + 4*z4*z6 - 8*k2_1^2*z4 - z5^2,\n    -7*z1^2*z2*z3 + 6*z1^2*z7 + z1*z2^3 + 3*z1*z2*z6 + (2*k1_1^2 -\n        4*k2_1^2)*z1*z2 + 2*z2*z3*z4 - 4*z4*z7 - z5*z6 + 2*k1_1^2*z5,\n    8*z1^2*z3^2 - 8*z1^2*z8 - 10*z1*z2^2*z3 + 6*z1*z2*z7 + (8*k1_1^2 -\n        4*k2_1^2)*z1*z3 + 2*z2^4 + 3*z2^2*z6 + (-6*k1_1^2 - 8*k2_1^2)*z2^2 +\n        z2*z3*z5 - 8*z3^2*z4 + 8*z4*z8 - 2*z5*z7 + (-4*k1_1^2 + 4*k2_1^2)*z6 +\n        8*k1_1^4 - 8*k1_1^2*k2_1^2,\n    -6*z1^2*z3^2 + 10*z1^2*z8 + 8*z1*z2^2*z3 - 8*z1*z2*z7 - z2^4 - 2*z2^2*z6 +\n        (4*k1_1^2 + 4*k2_1^2)*z2^2 + 4*z3^2*z4 - 4*z4*z8 - z6^2 + 4*k1_1^2*z6 -\n        4*k1_1^4,\n    -4*z1*z2*z3^2 + 2*z1*z2*z8 + 4*z1*z3*z7 + 3*z2^3*z3 - 4*z2^2*z7 + z2*z3*z6 +\n        (-2*k1_1^2 - 4*k2_1^2)*z2*z3 - 2*z3^2*z5 + 2*z5*z8 - 2*z6*z7 +\n        4*k1_1^2*z7,\n    -4*z1*z3^3 + 4*z1*z3*z8 - 2*z2^2*z3^2 - 2*z2^2*z8 + 8*z2*z3*z7 + 4*z3^2*z6 -\n        4*k2_1^2*z3^2 - 4*z6*z8 - 4*z7^2 + 8*k2_1^2*z8\n]\n```\n\n\u003ca name=\"poisson-brackets\"\u003e\u003c/a\u003e \n\nThe degree-0 center generators for several exceptional complex reflection groups are stored in the database and are loaded automatically when requested. Here's an example:\n\n```\n\u003e W:=ComplexReflectionGroup(28);\n\u003e H := RationalCherednikAlgebra(W,0);\n\u003e CenterGeneratorsOfDegreeZero(~H);\nFetched from DB\nDeforming center generator 1 of 6\nFound center generator in DB.\nDeforming center generator 2 of 6\nFound center generator in DB.\nDeforming center generator 3 of 6\nFound center generator in DB.\nDeforming center generator 4 of 6\nFound center generator in DB.\nDeforming center generator 5 of 6\nFound center generator in DB.\nDeforming center generator 6 of 6\nFound center generator in DB.\n```\n\n### Poisson brackets\n\nYou can compute Poisson brackets between elements in the Cherednik algebra.\n\n```\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e H := RationalCherednikAlgebra(W,0);\n\u003e PoissonBracket(H.5,H.3);\n[-1  0]\n[-1  1]*(2*k2_1)\n+\n[-1  2]\n[ 0  1]*(2*k1_1)\n+\n[1 0]\n[0 1]*(1)\n```\n\nAlways keep in mind that we use the opposite convention and this also effects the Poisson brackets. If (z\u003csub\u003ei\u003c/sub\u003e)\u003csub\u003ei ∈ I\u003c/sub\u003e is a system of generators of the center, one can express the Poisson bracket [z\u003csub\u003ei\u003c/sub\u003e,z\u003csub\u003ej\u003c/sub\u003e] in terms of the z\u003csub\u003ek\u003c/sub\u003e. This yields a matrix we call *Poisson matrix*. It can be computed as follows:\n\n```\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e H := RationalCherednikAlgebra(W,0);\n\u003e P:= PoissonMatrix(H);\n```\n\n\u003ca name=\"rrca\"\u003e\u003c/a\u003e\n\n## Restricted rational Cherednik algebras\n\nThe *restricted* rational Cherednik algebra is an important finite-dimensional quotient of the rational Cherednik algebra at t=0. See the paper by [Gordon](https://arxiv.org/abs/math/0202301), [my survey paper](https://arxiv.org/abs/1603.05230), and [Bonnafé-Rouquier](https://arxiv.org/abs/1708.09764). Its representation theory detects smoothness of the Calogero-Moser space (see [Bellamy-Schedler-Thiel](https://arxiv.org/abs/1505.00486)). Computation in the restricted algebra can be done in CHAMP in the same way as with the uncrestricted algebra.\n\n```C++\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e H := RestrictedRationalCherednikAlgebra(W); //generic k-parameter\n\u003e H;\nRestricted rational Cherednik algebra\nGenerators:\n    w1, w2, y1, y2, x1, x2\nGenerator degrees:\n    0, 0, -1, -1, 1, 1\nBase ring:\n    Multivariate rational function field of rank 2 over Rational Field\n    Variables: k1_1, k2_1\nGroup:\n    MatrixGroup(2, Rational Field) of order 2^3\n    Generators:\n    [-1  2]\n    [ 0  1]\n\n    [ 1  0]\n    [ 1 -1]\nc-parameter:\n    Mapping from: { 1 .. 2 } to Multivariate rational function field of rank 2\n    over Rational Field\n    \u003c1, 2*k1_1\u003e\n    \u003c2, 2*k2_1\u003e\n//Here's one caveat: before you can do actual computations in the RRCA, you need to initialize it, which means here that the coinvariant algebra etc. is computed. This can be quite complex and not all of this is necessary when you are just interested in the representation theory, that's why I added an initialize function.\n\u003e Initialize(~H);\n//Now, we're ready to do computations\n\u003e H.5*H.2;\n[ 1  0]\n[ 1 -1]*(x1 + x2)\n\n//You can convert H into a matrix algebra\n\u003e A:=MatrixAlgebra(H);\n\u003e A;\nMatrix Algebra of degree 512 with 6 generators over Multivariate rational\nfunction field of rank 2 over Rational Field\n\n//We compute the Jacobson radical for the equal parameter case k=[1,1]:\n\u003e k := CherednikParameter(W,[1,1]);\n\u003e H := RestrictedRationalCherednikAlgebra(W,k);\n\u003e Initialize(~H);\n\u003e A := MatrixAlgebra(H);\n\u003e time J := JacobsonRadical(A); J;\nTime: 182.370\nMatrix Algebra [ideal of A] of degree 512 and dimension 346 over Rational Field\n```\n\n\u003ca name=\"rrca-rep\"\u003e\u003c/a\u003e\n\n## Representation theory of restricted rational Cherednik algebras\n\nIn CHAMP you can compute baby Verma modules (also called standard modules) for restricted rational Cherednik algebras (as defined by [Gordon](https://arxiv.org/abs/math/0202301), see also [Bellamy-Thiel](https://arxiv.org/abs/1705.08024) for general theoretical background). Using modular lifting techniques I introduced in [my paper](https://arxiv.org/abs/1403.6686) you can compute the heads (i.e. the quotient by the unique maximal submodule) of standard modules (which then give all the simples of the restricted rational Cherednik algebra) as graded modules (also giving the graded W-character) and the (graded) decomposition matrix of standard modules into simples. It works surprisingly well even in huge and complicated examples, and for generic parameters as well.\n\n\u003ca name=\"rrca-conv\"\u003e\u003c/a\u003e\n\n### Conventions\n\nLet W be a complex reflection group acting on a vector space V over a field K. Let K[V] be the symmetric algebra of V\u003csup\u003e\u0026ast;\u003c/sup\u003e. In the (restricted) rational Cherednik algebra I am putting V\u003csup\u003e*\u003c/sup\u003e in degree +1, V in degree -1, and W in degree 0. This yields a triangular decomposition H = H\u003csup\u003e-\u003c/sup\u003e ⊗ KW ⊗ H\u003csup\u003e+\u003c/sup\u003e. The standard module Δ(λ) of an irreducible W-module λ is obtained by inflating λ to a (H\u003csup\u003e-\u003c/sup\u003e ⊗ KW)-module (i.e. V acting trivial) and then inducing it to an H-module. So, as a vector space, Δ(λ) = K[V]\u003csub\u003eW\u003c/sub\u003e ⊗ λ, where K[V]\u003csub\u003eW\u003c/sub\u003e is the coinvariant algebra. With my grading convention, Δ(λ) lives in *positive* degree.\n\nNote that there are two choices: 1) to put V\u003csup\u003e\u0026ast;\u003c/sup\u003e in degree +1; 2) to inflate λ to a (H^\u003csup\u003e-\u003c/sup\u003e ⊗ KW)-module. You could also put V\u003csup\u003e\u0026ast;\u003c/sup\u003e in degree -1 and/or inflate λ to an (H\u003csup\u003e+\u003c/sup\u003e ⊗ KW)-module. Here is an overview of what is used in the literature:\n\n| Paper | deg V\u003csup\u003e\u0026ast;\u003c/sup\u003e | Δ(λ) |\n| ----- | ----------------- | ---- |\n| [CHAMP](https://arxiv.org/abs/1403.6686) | +1 | H ⊗\u003csub\u003eH\u003csup\u003e-\u003c/sup\u003e\u003c/sub\u003e λ = K[V]\u003csub\u003eW\u003c/sub\u003e ⊗ λ |\n| [Bonnafé-Roquier](https://arxiv.org/pdf/1708.09764.pdf) | +1 | H ⊗\u003csub\u003eH\u003csup\u003e-\u003c/sup\u003e\u003c/sub\u003e λ = K[V]\u003csub\u003eW\u003c/sub\u003e ⊗ λ|\n| [Bellamy-Thiel](https://arxiv.org/abs/1705.08024) | -1 | H ⊗\u003csub\u003eH\u003csup\u003e+\u003c/sup\u003e\u003c/sub\u003e λ = K[V]\u003csub\u003eW\u003c/sub\u003e ⊗ λ|\n| [Gordon](https://arxiv.org/abs/math/0202301) | -1 | H ⊗\u003csub\u003eH\u003csup\u003e-\u003c/sup\u003e\u003c/sub\u003e λ = K[V\u003csup\u003e\u0026ast;\u003c/sup\u003e]\u003csub\u003eW\u003c/sub\u003e ⊗ λ |\n\nSo, CHAMP and Bonnafé-Rouquier use the *same* conventions. The difference between Bonnafé-Roquier and Bellamy-Thiel is only an *opposite grading* on the Δ(λ) (up to the grading the modules are the same!). To make this more precise, consider a ℤ-graded algebra A with *triangular decomposition*, i.e. a triple (A\u003csup\u003el\u003c/sup\u003e, A\u003csup\u003e0\u003c/sup\u003e, A\u003csup\u003er\u003c/sup\u003e) of graded subalgebras such that the multiplication map A\u003csup\u003el\u003c/sup\u003e ⊗ A\u003csup\u003e0\u003c/sup\u003e ⊗ A\u003csup\u003er\u003c/sup\u003e → A is an isomorphism of vector spaces, and moreover the following holds: A\u003csup\u003e0\u003c/sup\u003e is in degree 0, and A\u003csup\u003el\u003c/sup\u003e is either in positive or in negative degree, and A\u003csup\u003er\u003c/sup\u003e is in the opposite degree of A\u003csup\u003el\u003c/sup\u003e. In any case one can define the standard module Δ(λ) = A ⊗\u003csub\u003eA\u003csup\u003er\u003c/sup\u003e\u003c/sub\u003e λ. The inflation is always through the *right* part of the decomposition, so it is up to the grading independent of the aforementioned choice. In Bellamy-Thiel we assumed that A\u003csup\u003el\u003c/sup\u003e is in negative degree, Bonnafé-Rouquier assume that it is in positive degree. But we both assume that A\u003csup\u003el\u003c/sup\u003e = K[V]\u003csub\u003eW\u003c/sub\u003e. The Bonnafé-Rouquier assumption is nicer in the sense that the standard modules live in positive degree, which seems more natural (but it doesn't make much of a difference as explained). Only in Gordon the parts of the triangular decomposition are opposite, i.e. A\u003csup\u003el\u003c/sup\u003e = K[V\u003csup\u003e\u0026ast;\u003c/sup\u003e]\u003csub\u003eW\u003c/sub\u003e.\n\n\n\u003ca name=\"rrca-verma\"\u003e\u003c/a\u003e\n\n### Working with modules\n\n```C++\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e Representations(~W);\n\u003e W`CharacterNames;\n[ 11., 1.1, .11, 2., .2 ]\n\n//Construct rational Cherednik algebra for W and generic GGOR parameter\n\u003e H:=RestrictedRationalCherednikAlgebra(W);\n\n//We compute the baby Verma module for the W-representation the 2-dimensional\n//representation 1.1:\n\u003e rho := W`Representations[0][2];\n\u003e M:=StandardModules(H, rho);\n\u003e M;\nGraded module of dimension 16 over an algebra with generator degrees [ 0, 0, -1,\n-1, 1, 1 ] over Multivariate rational function field of rank 2 over Rational\nField.\n\n//I have implemented an own structure for garded modules that is used. \n//It's called ModGrOld (I started implementing a new type but this isn't fully \n//integrated right now.)\n//Recall that as a vector space, M is isomorphic to K[V]_W \\otimes \\lambda.\n//For each algebra generator of H (in this case w1, w2, y1, y2, x1, x2)\n//the action is encoded by a matrix. The chosen basis for the coinvariant\n//algebra can be viewed with\n\u003e W`CoinvariantAlgebra`Basis;\n{@\n    1,\n    x2,\n    x1,\n    x2^2,\n    x1*x2,\n    x2^3,\n    x1*x2^2,\n    x1*x2^3\n@}\n//and the matrices of the generator actions can be viewed with\n\u003e M`Matrices;\n[\n    Sparse matrix with 16 rows and 16 columns over Multivariate rational\n    function field of rank 2 over Rational Field,\n    Sparse matrix with 16 rows and 16 columns over Multivariate rational\n    function field of rank 2 over Rational Field,\n    Sparse matrix with 16 rows and 16 columns over Multivariate rational\n    function field of rank 2 over Rational Field,\n    Sparse matrix with 16 rows and 16 columns over Multivariate rational\n    function field of rank 2 over Rational Field,\n    Sparse matrix with 16 rows and 16 columns over Multivariate rational\n    function field of rank 2 over Rational Field,\n    Sparse matrix with 16 rows and 16 columns over Multivariate rational\n    function field of rank 2 over Rational Field\n]\n//So, the action of y1 is:\n\u003e Matrix(M`Matrices[3]);\n[0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0]\n[0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0]\n[-4*k1_1   4*k1_1   0   0   0   0   0   0   0   0   0   0   0   0   0   0]\n[0   4*k1_1   0   0   0   0   0   0   0   0   0   0   0   0   0   0]\n[2*k1_1 - 2*k2_1   -2*k1_1   0   0   0   0   0   0   0   0   0   0   0   0   0\n    0]\n[-4*k2_1   -2*k1_1 + 2*k2_1   0   0   0   0   0   0   0   0   0   0   0   0   0\n    0]\n[0   0   -4*k1_1   4*k1_1   0   0   0   0   0   0   0   0   0   0   0   0]\n[0   0   0   4*k1_1   0   0   0   0   0   0   0   0   0   0   0   0]\n[0   0   2*k1_1 - 2*k2_1   -2*k1_1   0   0   0   0   0   0   0   0   0   0   0\n    0]\n[0   0   -4*k2_1   -2*k1_1 + 2*k2_1   0   0   0   0   0   0   0   0   0   0   0\n    0]\n[0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0]\n[0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0]\n[0   0   0   0   0   0   -2*k1_1 - 2*k2_1   2*k1_1   -4*k1_1   4*k1_1   0   0\n    0   0   0   0]\n[0   0   0   0   0   0   -4*k2_1   2*k1_1 + 2*k2_1   0   4*k1_1   0   0   0   0\n    0   0]\n[0   0   0   0   0   0   0   0   0   0   -2*k1_1 - 2*k2_1   2*k1_1   -4*k1_1\n    4*k1_1   0   0]\n[0   0   0   0   0   0   0   0   0   0   -4*k2_1   2*k1_1 + 2*k2_1   0   4*k1_1\n    0   0]\n//The degrees of the basis vectors of M are:\n\u003e M`RowDegrees;\n[ 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4 ]\n\n//Let's check if M is really a module for H (check all defining relations):\n\u003e IsModule(H,M);\ntrue\n\n//Let's compute a basis of the submodule of M spanned by the 16-th basis\n//vector of M (which is x1*x2^3 \\otimes e2), where e2 is the second basis\n//vector of the W-representation rho):\n\u003e Spin(M, M.16);\n[*\n    (0   0   0   0   0   0   1   0   (2*k1_1^2 + 2*k1_1*k2_1)/(k1_1^2 + k2_1^2)\n    -2*k1_1*k2_1/(k1_1^2 + k2_1^2)   0   0   0   0   0   0),\n    (0   0   0   0   0   0   0   1   4*k1_1*k2_1/(k1_1^2 + k2_1^2)   (2*k1_1^2 -\n    2*k1_1*k2_1)/(k1_1^2 + k2_1^2)   0   0   0   0   0   0),\n    (0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0),\n    (0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0),\n    (0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0),\n    (0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0),\n    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0),\n    (0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1)\n*]\n//Hence, M.16 spans a non-trivial submodule.\n\n//Let's try to compute the head of M. This will use my modular technique\n//described in the CHAMP paper: specialize parameters, reduce to a finite field,\n//use the MeatAxe, and lift everything back. This methods does not have to work,\n//but it works surprisingly often. It's impossible to predict, however.K;\n\u003e res,L,J,P:=HeadOfLocalModule(M);\n//The computation was successful. L is the head and J the radical of M.\n//P describes the finite field specialization that was used.\n//The function HeadOfLocalModule has many parameters to fine-tune the\n//computation.\n\u003e L;\nGraded module of dimension 8 over an algebra with generator degrees [ 0, 0, -1,\n-1, 1, 1 ] over Multivariate rational function field of rank 2 over Rational\nField.\n\u003e L`Matrices[3];\n[0   0   0   0   0   0   0   0]\n[0   0   0   0   0   0   0   0]\n[-4*k1_1   4*k1_1   0   0   0   0   0   0]\n[0   4*k1_1   0   0   0   0   0   0]\n[2*k1_1 - 2*k2_1   -2*k1_1   0   0   0   0   0   0]\n[-4*k2_1   -2*k1_1 + 2*k2_1   0   0   0   0   0   0]\n[0   0   2*k1_1 - 2*k2_1   -2*k1_1   0   0   0   0]\n[0   0   -4*k2_1   -2*k1_1 + 2*k2_1   0   0   0   0]\n\u003e IsModule(H,L);\ntrue\n\n//Let's compute the Poincaré series and the graded W-character of L:\n\u003e PoincareSeries(L);\n2 + 4*t + 2*t^2\n// Every H-module is also a W-module. We can compute the corresponding (graded)\n// decomposition as follows:\n\u003e InGroupSimples(H,M);\n(      t t^2 + 1       t       t       t)\n//Hence, L = t*(11.) + (t^2+1)*(1.1) + t*(.11) + t*(2.) + t*(.2)\n//Note that in degree 0 of L there's a unique W-module, namely the 1.1=rho that\n//we started with. This is a general fact and can be used to identify simple\n//modules.\n\u003e IdentifyModule(H,L);\n2   //the second irreducible W-module, i.e. 1.1=rho\n```\n\u003ca name=\"rrca-mults\"\u003e\u003c/a\u003e\n\n### Computing multiplicities\n\nThe standard module theory of the restricted rational Cherednik algebra leads to the following multiplicity invariants:\n\n* [P(λ) : Δ(μ)], functions ProjectivesInSimples and ProjectivesInSimplesQuantum;\n* [Δ(λ) : L(μ)], functions StandardsInSimples and StandardsInSimplesQuantum;\n* [L(λ) : μ], functions SimplesInGroupSimples and SimplesInGroupSimplesQuantum;\n* [Δ(λ) : μ], functions StandardsInGroupSimples and StandardsInGroupSimplesQuantum.\n\nIn all cases, you can ask for both *graded* and *ungraded* multiplicities. I'm primarily targeting the *graded* multiplicities—from which you can of course immediately obtain the ungraded ones—and this what the above mentioned functions are doing. To represent the graded multiplicities, we can fix a system of representatives of the simples *up to grading shift* and then there are *two* ways to represent the graded multiplicities:\n\n1. You collect for each simple of your system of representatives with which degree shift this occurs. We encode this information as a vector of size the number of simples in the system, and the entries are are (Laurent) polynomials in q. This is what the first named functions above are returning.\n2. You fix a grading shift [n] and collect all simples of your system of representatives occuring with this grading shift. We encode this as a (Laurent) polynomial in q with coefficients a polynomial (actually just a linear expression) in the numner of simples in the system. This is what the \"Quantum\" functions are returning.  \n\nSo, these two ways of representing multiplicities is just about what to put first: simple module or grading shift. All this becomes clear in the examples below.\n\nBefore going to examples, I want to note that there are some relations between the multiplicities. Brauer reciprocity (combined with the [Δ(λ)] = [∇(λ)] result by [Bellamy-Thiel](https://arxiv.org/abs/1705.08024), Prop. 4.22) says that [P(λ) : Δ(μ)] = [Δ(λ) : L(μ)]. The multiplicities [Δ(λ) : μ] can be computed directly with a fake degree formula by Gordon. If you compute all the [Δ(λ) : μ] and manage to compute *all* the graded modules L(λ), then you know the [L(λ) : μ] and (by a result by [Bellamy-Thiel](https://arxiv.org/abs/1705.08024) you can directly compute the [Δ(λ) : L(μ)] from the *matrix* formula ([Δ(λ) : μ]) = ([Δ(λ) : L(μ)])([L(λ) : μ]). I've built in many convenience functions that allow all these computations automatically. As I will explain allow, it's not always possible to get everything automatically because it's very complicated. For this reason, I'm not using matrices to store the multiplicities but associative arrays which are allowed to have undefined entries. If a method fails, you could still try to build the (irreducible) module in another way and if you succeed you can attach it to the corresponding array and keep computing. \n\nThe ideal and simplest use case is illustrated in the following example:\n\n```c++\n\u003e W := ComplexReflectionGroup(2,1,2);\n\u003e H:=RestrictedRationalCherednikAlgebra(W);\n\u003e StandardModules(~H); //computes all the standard modules\n\u003e H`StandardModules; //carries all the standard modules; numbering as in W`Representations[0]\nAssociative Array with index universe { 1 .. 5 }\n\u003e SimpleModules(~H); //(tries!) to compute all the simple modules by the method\n//as described above\n\u003e H`SimpleModules;\nAssociative Array with index universe { 1 .. 5 }\n\u003e SimplesInGroupSimplesQuantum(~H);\n\u003e H`SimplesInGroupSimplesQuantum; \nAssociative Array with index universe { 1 .. 5 }\n// Let's look how these multiplicities are encoded\n\u003e f := H`SimplesInGroupSimplesQuantum[5]; f;\n11.*q^4 + 1.1*q^3 + (.11 + 2.)*q^2 + 1.1*q + .2\n//This means in L(5) we have the W-module 11. in with grading shift 4, the \n//W-module .11 + 2. with grading shift 2 etc.\n\u003e Parent(f);\nMultivariate rational function field of rank 1 over Polynomial ring of rank 5 over Integer Ring\nVariables: q\n// Let's look at the other way to represent multiplicities.\n\u003e SimplesInGroupSimples(~H);\n\u003e H`SimplesInGroupSimples;\nAssociative Array with index universe { 1 .. 5 }\n\u003e H`SimplesInGroupSimples[5];\n(    q^4 q^3 + q     q^2     q^2       1)\n//The 2nd simple W-module occurs with multiplicity 1 in degrees 3 and 1 in L(5). \n//When we have all the information, we can also determine which standard module occurs \n//at the bottom of a projective (this gives the tilting permutation introduced by Bellamy\n//and myself)\n\u003e StandardsAtBottomOfProjectives(~H);\n\u003e H`StandardsAtBottomOfProjectives;\nAssociative Array with index universe { 1 .. 5 }\n\u003e H`StandardsAtBottomOfProjectives[5];\n\u003c5,0\u003e\n//This means that Delta(5)[0] is at the bottom of P(5)\n```\n\nYou can also can all of the above multiplicity functions with an additional integer argument (standing for a simple W-module λ in the fixed ordering) so that you just compute/get the information for the module corresponding to λ. \n\nI have implemented a function that produces MediaWiki code of all the representation-theoretic information.\n\n```C++\nMediaWiki(H);\n```\n\n\u003ca name=\"things-wrong\"\u003e\u003c/a\u003e\n#### Things that can go wrong\n\nThe multiplicity computations are extremely complicated. There are some things that can go wrong generically and that will require manual fiddling. But please note: by \"can go wrong\" I mean that the computation will produce an error; whenever it runs through, the result is mathematically correct.\n\n1. The function HeadOfLocalModule computes the unique irreducible quotient of a standard (which, just to remind you, is a huge module over a multivariate rational function field in characteristic zero). This uses a Las Vegas algorithm that I've presented in my original Champ paper. For some reason, it performs exceptionally well. But sometimes, you're just not lucky (like playing in Las Vegas). In this case, you could try to run the function manually a few more times or tweak its (complicated and unpredictable) parameters or you could try other things. \n\n2. The base field of the simple W-modules is not always the same as the base field of the group. I've simply taken the models from CHEVIE and took the minimal cyclotomic field containing all the entries of the matrices. Now, when you mix several representations—e.g. when you compute decompositon matrices with the above automatic methods—these varying base fields will cause problems (mathematically this is all trivial but the computer complains). So, *before* you do any kind of mixing computations, I advise changing all base rings to a common base ring. Here's an example:\n\n   ~~~c++\n   \u003e W1:=ExceptionalComplexReflectionGroup(5); \n   //This model is defined over CyclotomicField(3). \n   //But there are representations defined over CyclotomicField(12). \n   //So, we'll change base rings to CyclotomicField(12) everywhere.\n   \u003e W := ChangeRing(W1, CyclotomicField(12));\n   \u003e W`DBDir := W1`DBDir; //Needed for loading reps (and everything else) from the database.\n   \u003e Representations(~W,0);\n   \u003e LiftRepresentationsToCommonBaseField(~W);\n   ~~~\n\n\u003ca name=\"rrca-cmhyperplanes\"\u003e\u003c/a\u003e\n\n### Calogero–Moser hyperplanes and families\n\nThe locus of parameters where the number of blocks of the restricted rational Cherednik algebra is less than the number of blocks for the generic algebra is known to be a union of hyperplanes. This locus is moreover known to be contained in the *Euler locus*, which is given by the pairwise differences of the values of the central characters of the simple modules for the generic algebra at the Euler element. To compute the Calogero–Moser hyperplanes, one can either compute the decomposition matrix on each Euler hyperplane and check whether the blocks are generic or not; or one can evaluate the central characters at the degree zero generators of the generic (non-restricted) rational Cherednik algebra. The database contains the Calogero–Moser hyperplanes for exceptional complex reflection groups whenever known:\n\n```c++\n\u003e W:=ComplexReflectionGroup(2,1,2);\n//We will compute the CM hyperplanes and families via central characters\n\u003e H := RationalCherednikAlgebra(W,0);\n\u003e CalogeroMoserFamilies(~H);\n//The attribute H`CalogeroMoserFamilies is then an associative array with keys being the CM\n//hyperplanes and entries being the CM families. The entry 1 stands for generic parameters (not a hyperplane technically).\n\u003e H`CalogeroMoserFamilies;\nAssociative Array with index universe Polynomial ring of rank 2 over Rational Field\n\u003e Keys(H`CalogeroMoserFamilies);\n{\nk2_1,\nk1_1,\n1,\nk1_1 + k2_1,\nk1_1 - k2_1\n}\n//Here's a shortcut:\n\u003e CalogeroMoserHyperplanes(H);\n{\nk2_1,\nk1_1,\nk1_1 + k2_1,\nk1_1 - k2_1\n}\n//Get the base ring\n\u003e R := Universe(Keys( H`CalogeroMoserFamilies));\n\u003e R;\nPolynomial ring of rank 2 over Rational Field\nOrder: Lexicographical\nVariables: k1_1, k2_1\n//Let's look at the CM families at k1_1-k2_1\n\u003e H`CalogeroMoserFamilies[R.1-R.2];\n{\n{ 1, 2, 5 },\n{ 3 },\n{ 4 }\n}\n```\n\nFor many complex reflection groups, the Calogero–Moser hyperplanes are stored in the database:\n\n```\n\u003e W := ComplexReflectionGroup(28);\n\u003e CalogeroMoserHyperplanes(W);\n[\nk2_1,\nk1_1,\nk1_1 - 2*k2_1,\nk1_1 - k2_1,\nk1_1 + k2_1,\nk1_1 + 2*k2_1,\n2*k1_1 - k2_1,\n2*k1_1 + k2_1\n]\n```\n\nIn some exceptional cases, one can determine the CM families by using the *Euler families* (families one gets by evaluating the central characters only at the Euler element) combined with *supersingularity* and *rigidity* (see my papers \"A Counter-Example to Martino’s Conjecture About Generic Calogero–Moser Families\" and \"Restricted Rational Cherednik Algebras\"). Here's an example:\n\n```c++\n\u003e W:=ComplexReflectionGroup(23); //H3\n\u003e c:=CherednikParameter(W);\n//The following gives the Euler families together with the value of the central character\n\u003e EulerFamilies(W,c);\n{@\n\u003c{@ 9, 10 @}, 0\u003e,\n\u003c{@ 7, 8 @}, 5*k1_1\u003e,\n\u003c{@ 2 @}, 15*k1_1\u003e,\n\u003c{@ 3 @}, -3*k1_1\u003e,\n\u003c{@ 1 @}, -15*k1_1\u003e,\n\u003c{@ 4 @}, 3*k1_1\u003e,\n\u003c{@ 5, 6 @}, -5*k1_1\u003e\n@}\n//Rigid representations\n\u003e RigidRepresentations(W,c);\n{}\n//Supersingular representations\n\u003e SupersingularRepresentations(W);\n[ 5, 7, 9, 10 ]\n//Try to determine the CM families by using Euler families and supersingularity.\n//In this case we're lucky!\n\u003e CalogeroMoserFamiliesTry(W,c);\nThe Euler families are:\n{@ 1 @}, {@ 2 @}, {@ 3 @}, {@ 4 @}, {@ 5, 6 @}, {@ 7, 8 @}, {@ 9, 10 @}\n\nSingleton Euler families are CM families, so the following are already CM families:\n{@ 1 @}, {@ 2 @}, {@ 3 @}, {@ 4 @}\n\nThe supersingular characters are:\n5, 7, 9, 10\n\nThe following Euler families are CM families due to supersingularity:\n{@ 5, 6 @}, {@ 7, 8 @}, {@ 9, 10 @}\n\nSucessfully determined the CM families. They are:\n{@ 1 @}, {@ 2 @}, {@ 3 @}, {@ 4 @}, {@ 5, 6 @}, {@ 7, 8 @}, {@ 9, 10 @}\n{@\n{@ 1 @},\n{@ 2 @},\n{@ 3 @},\n{@ 4 @},\n{@ 5, 6 @},\n{@ 7, 8 @},\n{@ 9, 10 @}\n@}\n//For H4 we can determine many CM families but there's something left open:\n\u003e W:=ExceptionalComplexReflectionGroup(30);\n\u003e c:=CherednikParameter(W);\n\u003e c;\nMapping from: { 1 } to Polynomial ring of rank 1 over Cyclotomic Field of order 5 and degree 4\n\u003c1, 2*k1_1\u003e\n\u003e CalogeroMoserFamiliesTry(W,c);\nThe Euler families are:\n{@ 1 @}, {@ 2 @}, {@ 3, 5 @}, {@ 4, 6 @}, {@ 7, 8, 9, 10, 15, 16, 17, 22, 23, 24, 25, 26, 29, 30, 33, 34 @}, {@ 11, 13 @}, {@ 12, 14 @}, {@ 18, 20 @}, {@ 19, 21 @}, {@ 27 @}, {@ 28 @}, {@ 31 @}, {@ 32 @}\n\nSingleton Euler families are CM families, so the following are already CM families:\n{@ 1 @}, {@ 2 @}, {@ 27 @}, {@ 28 @}, {@ 31 @}, {@ 32 @}\n\nThe supersingular characters are:\n3, 4, 7, 8, 9, 10, 11, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 29, 30, 33, 34\n\nThe following Euler families are CM families due to supersingularity:\n{@ 3, 5 @}, {@ 4, 6 @}, {@ 11, 13 @}, {@ 12, 14 @}, {@ 18, 20 @}, {@ 19, 21 @}\n{@\n{@ 1 @},\n{@ 2 @},\n{@ 27 @},\n{@ 28 @},\n{@ 31 @},\n{@ 32 @},\n{@ 3, 5 @},\n{@ 4, 6 @},\n{@ 11, 13 @},\n{@ 12, 14 @},\n{@ 18, 20 @},\n{@ 19, 21 @}\n@}\n//Only the big Euler family {@ 7, 8, 9, 10, 15, 16, 17, 22, 23, 24, 25, 26, 29, 30, 33, 34 @} remains.\n//I believe it's a CM family as well but I'm not sure.\n```\n\n\u003ca name=\"rrca-db\"\u003e\u003c/a\u003e\n\n### Database\n\nIn the database I have stored a lot of data (but certainly not all!) about the representation theory of restricted rational Cherednik algebras for exceptional complex reflection groups, especially multiplicities and Calogero–Moser hyperplanes and families. There could be even more data in the database and one could deduce more data from combining data but things were getting too complex and I didn't pursue this—you're free to expand this. Here's an example:\n\n```c++\n\u003e W := ComplexReflectionGroup(4);\n\u003e rec := RestrictedRationalCherednikAlgebraRepresentationTheory(W); \n\u003e rec;\nrec\u003crecformat\u003cParameterRing, BlGen, DecGenStratification, Data\u003e |\nParameterRing := Polynomial ring of rank 2 over Rational Field\nOrder: Lexicographical\nVariables: k1_1, k1_2,\nBlGen := [\nk1_2,\nk1_1,\nk1_1 - 2*k1_2,\nk1_1 - k1_2,\nk1_1 + k1_2,\n2*k1_1 - k1_2\n],\nData := Associative Array with index universe Set of subsets of Polynomial ring of rank 2 over Rational Field\u003e\n//The entry BlGen gives the CM hyperplanes.\n//The entry Data is an associative array indexed by (subsets of) the CM hyperplanes and giving\n//information about the representation theory on the (intersection of) the hyperplanes.\n\u003e Keys(rec`Data);\n{\n{\nk1_2\n},\n{\nk1_1 - k1_2\n},\n{\nk1_1 + k1_2\n},\n{\nk1_1\n},\n{\n2*k1_1 - k1_2\n},\n{\nk1_1 - 2*k1_2\n},\n{\n1\n}\n}\n//Let's look at the data on the hyperplane 2*k1_1 - k2_1\n\u003e R := rec`ParameterRing;\n\u003e R;\nPolynomial ring of rank 2 over Rational Field\nOrder: Lexicographical\nVariables: k1_1, k2_1\n\u003e rec`Data[{2*R.1 - R.2}];\nrec\u003crecformat\u003cSimpleDims, SimplePSeries, SimpleGModStruct, SimpleGradedGModStruct, VermaDecomposition, CMFamilies, CuspidalCMFamilies, VermaGradedDecomposition\u003e |\nSimpleDims := [ 24, 24, 3, 24, 24, 3, 18 ],\nSimplePSeries := [\nq^8 + 2*q^7 + 3*q^6 + 4*q^5 + 4*q^4 + 4*q^3 + 3*q^2 + 2*q + 1,\nq^8 + 2*q^7 + 3*q^6 + 4*q^5 + 4*q^4 + 4*q^3 + 3*q^2 + 2*q + 1,\n2*q + 1,\n2*q^6 + 4*q^5 + 4*q^4 + 4*q^3 + 4*q^2 + 4*q + 2,\n2*q^6 + 4*q^5 + 4*q^4 + 4*q^3 + 4*q^2 + 4*q + 2,\nq + 2,\n3*q^4 + 4*q^3 + 4*q^2 + 4*q + 3\n],\nSimpleGModStruct := [\n(1 1 1 2 2 2 3),\n(1 1 1 2 2 2 3),\n(0 0 1 1 0 0 0),\n(1 1 1 2 2 2 3),\n(1 1 1 2 2 2 3),\n(1 0 0 0 0 1 0),\n(0 1 0 1 2 1 3)\n],\nSimpleGradedGModStruct := [\n(1   q^8   q^4   q^7 + q^5   q^3 + q   q^5 + q^3   q^6 + q^4 + q^2),\n(q^4   1   q^8   q^5 + q^3   q^7 + q^5   q^3 + q   q^6 + q^4 + q^2),\n(0 0 1 q 0 0 0),\n(          q^5             q           q^3       q^4 + 1     q^6 + q^2     q^4 + q^2 q^5 + q^3 + q),\n(          q^3           q^5             q     q^4 + q^2       q^4 + 1     q^6 + q^2 q^5 + q^3 + q),\n(q 0 0 0 0 1 0),\n(            0           q^2             0             q       q^3 + q           q^3 q^4 + q^2 + 1)\n],\nVermaDecomposition := [\n(1 0 0 0 0 0 0),\n(0 1 0 0 0 0 0),\n(0 0 1 0 0 1 1),\n(0 0 0 2 0 0 0),\n(0 0 0 0 2 0 0),\n(0 0 2 0 0 2 2),\n(0 0 3 0 0 3 3)\n],\nCMFamilies := {\n{ 1 },\n{ 3, 6, 7 },\n{ 2 },\n{ 4 },\n{ 5 }\n},\nVermaGradedDecomposition := [\n(1 0 0 0 0 0 0),\n(0 1 0 0 0 0 0),\n(  0   0   1   0   0 q^7 q^2),\n(      0       0       0 q^2 + 1       0       0       0),\n(      0       0       0       0 q^2 + 1       0       0),\n(        0         0 q^7 + q^5         0         0   q^2 + 1   q^3 + q),\n(0   0   q^6 + q^4 + q^2   0   0   q^5 + q^3 + q   q^4 + q^2 + 1)\n]\u003e\n\n```\n\n\u003ca name=\"rrca-rouquier\"\u003e\u003c/a\u003e\n\n### Rouquier families\n\nThe parameter space for the restricted rational Cherednik algebras is the same as for the cyclotomic Hecke algebras. There is a conjecture due to Martino stating that the Calogero–Moser families coincide with the Rouquier families for generic parameters, and in general the Rouquier families are unions of Calogero–Moser families. For the exceptional complex reflection groups the Rouquier families were computed by Chlouveraki and these are stored in the database. Here's to access them:\n\n```\n\u003e W:=ComplexReflectionGroup(4);\n\u003e rou := RouquierFamilies(W);\n\u003e rou;\nAssociative Array with index universe Polynomial ring of rank 2 over Cyclotomic Field of order 3 and degree 2\n\u003e Keys(rou);\n{\nk_{1,2},\nk_{1,1} - 2*k_{1,2},\nk_{1,1},\n2*k_{1,1} - k_{1,2},\n1,\nk_{1,1} + k_{1,2},\nk_{1,1} - k_{1,2}\n}\n//The keys of this associative array are precisely the \"essential hyperplanes\"\n//defined by Chlouveraki. The parameters are exactly the GGOR parameters of W.\n//Let's look the the Rouquier families at k_{1,1} - k_{1,2}.\n\u003e R := Universe(Keys(rou));\n\u003e rou[R.1-R.2];\n{\n{ 1 },\n{ 2, 3, 4 },\n{ 7 },\n{ 5, 6 }\n}\n```\n\n\n\n\u003ca name=\"rrca-cellular\"\u003e\u003c/a\u003e\n\n## Calogero–Moser cellular characters\n\n```C++\n//We compute the cellular characters for G4 at equal parameters\n\u003e W:=ComplexReflectionGroup(4);\n\u003e c:=CherednikParameter(W,[1,1]);\n//It's more efficient to compute the cellular characters per CM family or,\n//more generally, for a union of CM families, like an Euler family.\n//So, let's determine the Euler families.\n\u003e EulerFamilies(W,c);\n{@\n\u003c{@ 7 @}, 0\u003e,\n\u003c{@ 5, 6 @}, 2\u003e,\n\u003c{@ 2, 3, 4 @}, -4\u003e,\n\u003c{@ 1 @}, 8\u003e\n@}\n//Now, let's compute the cellular characters for the Euler family {2,3,4}:\n\u003e cellchar := CalogeroMoserCellularCharacters(W,c,{@ 2,3,4 @});\n\u003e cellchar;\n[1 1 2]\n//This means there is one cellular character, and it decomposes as \n//1*chi_2 + 1*chi_3 + 2*chi_4, where chi_i is the character numbered by i\n//in W`CharacterTable. In particular, the Euler family {2,3,4} is indeed \n//a CM family.\n//We can also compute all cellular characters at once (but it is more efficient\n//to do this per family):\n\u003e cellchar := CalogeroMoserCellularCharacters(W,c,{@ 1,2,3,4,5,6,7 @});\n\u003e cellchar;\n[0 0 0 0 0 0 1]\n[1 0 0 0 0 0 0]\n[0 1 1 2 0 0 0]\n[0 0 0 0 1 1 0]\n//We can also automatically compute the cellular characters for all the Euler\n//families. The result is a list of pairs consisting of an Euler family and the \n//decomposition matrix.\n\u003e cellchar := CalogeroMoserCellularCharacters(W,c);\n\u003e cellchar;\n[*\n\u003c\n{@ 7 @},\n\n[1]\n\u003e,\n\n\u003c\n{@ 5, 6 @},\n\n[1 1]\n\u003e,\n\n\u003c\n{@ 2, 3, 4 @},\n\n[1 1 2]\n\u003e,\n\n\u003c\n{@ 1 @},\n\n[1]\n\u003e\n*]\n//The computation of cellular characters uses the Gaudin operators. \n//Here are the functions for Gaudin operators:\n\u003e GaudinOperator(W,c); //the full Gaudin operator\n\u003e GaudinOperator(W,c, W`Representations[0][7]); //Gaudin operator for representation #7\n\u003e V:=VectorSpace(W);\n\u003e GaudinOperator(W,c, V![1,1] ); //Gaudin operator specialized at y=(1,1)\n\u003e GaudinOperator(W,c, V![1,1], W`Representations[0][7] ); //Gaudin operator specialized at y=(1,1) and for representation #7\n```\n\n**Remark.** Like in the computation of decomposition matrices of standard modules it may happen that distinct coefficient rings of the group and representations may lead to errors. You can resolve them by lifting everything to a common coefficient ring as described [above](#things-wrong).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulthiel%2Fchamp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fulthiel%2Fchamp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fulthiel%2Fchamp/lists"}