# Reflection Groups

- [Introduction](introduction.md)

- [Construction of Pseudo-reflections](reflections.md)

  - [`PseudoReflection(a, b): ModTupRngElt, ModTupRngElt → AlgMatElt`](reflections.md#function-pseudoreflection-modtuprngelt-modtuprngelt)

  - [`Transvection(a, b): ModTupRngElt, ModTupRngElt → AlgMatElt`](reflections.md#function-transvection-modtuprngelt-modtuprngelt)

  - [`Reflection(a, b): ModTupRngElt, ModTupRngElt → AlgMatElt`](reflections.md#function-reflection-modtuprngelt-modtuprngelt)

  - [`IsPseudoReflection(r): Mtrx → BoolElt, ModTupRngElt, ModTupRngElt`](reflections.md#function-ispseudoreflection-mtrx)

  - [`IsTransvection(r): Mtrx → BoolElt, ModTupRngElt, ModTupRngElt`](reflections.md#function-istransvection-mtrx)

  - [`IsReflection(r): Mtrx → BoolElt, ModTupRngElt, ModTupRngElt`](reflections.md#function-isreflection-mtrx)

  - [`IsReflectionGroup(G): GrpMat → BoolElt`](reflections.md#function-isreflectiongroup-grpmat)

  - [`Example: pseudoreflection`](reflections.md#example-ex-0f9614)

  - [`Example: Ref Group`](reflections.md#example-ex-077df3)

  - [`Example: transvections`](reflections.md#example-ex-d1b70e)

  - [Pseudo-reflections Preserving Reflexive Forms](reflections.md#pseudo-reflections-preserving-reflexive-forms)

    - [`SymplecticTransvection(a, alpha): ModTupRngElt, FldElt → AlgMatElt`](reflections.md#function-symplectictransvection-modtuprngelt-fldelt)

    - [`UnitaryTransvection(a, alpha): ModTupRngElt, FldElt → AlgMatElt`](reflections.md#function-unitarytransvection-modtuprngelt-fldelt)

    - [`UnitaryReflection(a, zeta): ModTupRngElt, FldElt → AlgMatElt`](reflections.md#function-unitaryreflection-modtuprngelt-fldelt)

    - [`OrthogonalReflection(a): ModTupFldElt → AlgMatElt`](reflections.md#function-orthogonalreflection-modtupfldelt)

    - [`Example: Unitary Transvection`](reflections.md#example-ex-0b2ca4)

- [Construction of Reflection Groups](create-group-refl.md)

  - [`PseudoReflectionGroup(A, B): Mtrx, Mtrx → GrpMat, Map`](create-group-refl.md#function-pseudoreflectiongroup-mtrx-mtrx)

  - [`Example: Reflection Groups`](create-group-refl.md#example-ex-a4b952)

- [Construction of Real Reflection Groups](create-group-refl-real.md)

  - [`ReflectionGroup(M): AlgMatElt → GrpMat`](create-group-refl-real.md#function-reflectiongroup-algmatelt)

  - [`ReflectionGroup(G): GrphUnd → GrpMat`](create-group-refl-real.md#function-reflectiongroup-grphund)

  - [`ReflectionGroup(C): AlgMatElt → GrpMat`](create-group-refl-real.md#function-reflectiongroup-algmatelt-2)

  - [`ReflectionGroup(D): GrphDir → GrpMat`](create-group-refl-real.md#function-reflectiongroup-grphdir)

  - [`ReflectionGroup(N): MonStgElt → GrpMat`](create-group-refl-real.md#function-reflectiongroup-monstgelt)

  - [`IrreducibleReflectionGroup(X, n): MonStgElt, RngIntElt → GrpMat`](create-group-refl-real.md#function-irreduciblereflectiongroup-monstgelt-rngintelt)

  - [`Example: Real Reflection Group By Cartan`](create-group-refl-real.md#example-ex-5faa0c)

  - [`ReflectionGroup(R): RootSys → GrpMat`](create-group-refl-real.md#function-reflectiongroup-rootsys)

  - [`ReflectionGroup(R): RootDtm → GrpMat`](create-group-refl-real.md#function-reflectiongroup-rootdtm)

  - [`Example: Real Reflection Group By Root Datum`](create-group-refl-real.md#example-ex-36ff3b)

  - [`ReflectionGroup(W): GrpFPCox → GrpMat, Map`](create-group-refl-real.md#function-reflectiongroup-grpfpcox)

  - [`ReflectionGroup(W): GrpPermCox → GrpMat, Map`](create-group-refl-real.md#function-reflectiongroup-grppermcox)

  - [`Example: Reflection Group Conversion`](create-group-refl-real.md#example-ex-3ea794)

- [Construction of Finite Complex Reflection Groups](create-group-refl-complex.md)

  - [`ShephardTodd(n): RngIntElt → GrpMat, Fld`](create-group-refl-complex.md#function-shephardtodd-rngintelt)

  - [`Example: Complex Reflection Groups`](create-group-refl-complex.md#example-ex-93aefa)

  - [`ComplexReflectionGroup(C): Mtrx → GrpMat, Map`](create-group-refl-complex.md#function-complexreflectiongroup-mtrx)

  - [`ComplexReflectionGroup(X, n): MonStgElt, RngIntElt → GrpMat, Map`](create-group-refl-complex.md#function-complexreflectiongroup-monstgelt-rngintelt)

  - [`Example: Reflection Subgroups`](create-group-refl-complex.md#example-ex-ccc605)

  - [`ShephardTodd(m, p, n): RngIntElt, RngIntElt, RngIntElt → GrpMat, Fld`](create-group-refl-complex.md#function-shephardtodd-rngintelt-rngintelt-rngintelt)

  - [`ImprimitiveReflectionGroup(m, p, n): RngIntElt, RngIntElt, RngIntElt → GrpMat, Fld`](create-group-refl-complex.md#function-imprimitivereflectiongroup-rngintelt-rngintelt-rngintelt)

  - [`Example: Imprimitive Reflection Group`](create-group-refl-complex.md#example-ex-980a12)

  - [`ComplexRootMatrices(k): RngIntElt → AlgMatElt, AlgMatElt, AlgMatElt, RngElt, RngIntElt`](create-group-refl-complex.md#function-complexrootmatrices-rngintelt)

  - [`ComplexRootMatrices(m, p, n): RngIntElt, RngIntElt, RngIntElt → AlgMatElt, AlgMatElt, AlgMatElt, RngElt, RngIntElt`](create-group-refl-complex.md#function-complexrootmatrices-rngintelt-rngintelt-rngintelt)

  - [`Example: Complex Reflection Group By Matrix`](create-group-refl-complex.md#example-ex-f3139e)

  - [`ComplexCartanMatrix(k): RngIntElt → AlgMatElt`](create-group-refl-complex.md#function-complexcartanmatrix-rngintelt)

  - [`ComplexCartanMatrix(m, p, n): RngIntElt, RngIntElt, RngIntElt → AlgMatElt`](create-group-refl-complex.md#function-complexcartanmatrix-rngintelt-rngintelt-rngintelt)

  - [`BasicRootMatrices(C): Mtrx → AlgMatElt, AlgMatElt`](create-group-refl-complex.md#function-basicrootmatrices-mtrx)

  - [`CohenCoxeterName(k): RngIntElt → MonStgElt, RngIntElt`](create-group-refl-complex.md#function-cohencoxetername-rngintelt)

  - [`ShephardToddNumber(X, n): MonStgElt, RngIntElt → RngIntElt`](create-group-refl-complex.md#function-shephardtoddnumber-monstgelt-rngintelt)

  - [`Example: Name Conversion`](create-group-refl-complex.md#example-ex-8535df)

  - [`Example: Reflection Group Names`](create-group-refl-complex.md#example-ex-fe8c89)

  - [`ComplexRootDatum(k): RngIntElt → SeqEnum, SeqEnum, Map, GrpMat, AlgMatElt`](create-group-refl-complex.md#function-complexrootdatum-rngintelt)

  - [`ComplexRootDatum(m, p, n): RngIntElt, RngIntElt, RngIntElt → SeqEnum, SeqEnum, Map, GrpMat, AlgMatElt`](create-group-refl-complex.md#function-complexrootdatum-rngintelt-rngintelt-rngintelt)

- [Operations on Reflection Groups](operations.md)

  - [`IsCoxeterIsomorphic(W1, W2): GrpMat, GrpMat → BoolElt`](operations.md#function-iscoxeterisomorphic-grpmat-grpmat)

  - [`IsCartanEquivalent(W1, W2): GrpMat, GrpMat → BoolElt`](operations.md#function-iscartanequivalent-grpmat-grpmat)

  - [`Example: Isomorphism`](operations.md#example-ex-ce63f7)

  - [`CartanName(W): GrpMat → List`](operations.md#function-cartanname-grpmat)

  - [`CoxeterDiagram(W): GrpMat`](operations.md#function-coxeterdiagram-grpmat)

  - [`DynkinDiagram(W): GrpMat`](operations.md#function-dynkindiagram-grpmat)

  - [`Example: Name And Diagram`](operations.md#example-ex-0c1a24)

  - [`RootSystem(W): GrpMat → RootDtm`](operations.md#function-rootsystem-grpmat)

  - [`RootDatum(W): GrpMat → RootDtm`](operations.md#function-rootdatum-grpmat)

  - [`CoxeterMatrix(W): GrpMat → AlgMatElt`](operations.md#function-coxetermatrix-grpmat)

  - [`CoxeterGraph(W): GrpMat → GrphUnd`](operations.md#function-coxetergraph-grpmat)

  - [`CartanMatrix(W): GrpMat → AlgMatElt`](operations.md#function-cartanmatrix-grpmat)

  - [`DynkinDigraph(W): GrpMat → GrphDir`](operations.md#function-dynkindigraph-grpmat)

  - [`Rank(W): GrpMat → RngIntElt`](operations.md#function-rank-grpmat)

  - [`NumberOfGenerators(W): GrpMat → RngIntElt`](operations.md#function-numberofgenerators-grpmat)

  - [`Example: Rank Dimension`](operations.md#example-ex-6d4455)

  - [`FundamentalGroup(W): GrpMat → GrpAb`](operations.md#function-fundamentalgroup-grpmat)

  - [`IsogenyGroup(W): GrpMat → GrpAb, Map`](operations.md#function-isogenygroup-grpmat)

  - [`CoisogenyGroup(W): GrpMat → GrpAb, Map`](operations.md#function-coisogenygroup-grpmat)

  - [`BasicDegrees(W): GrpMat → RngIntElt`](operations.md#function-basicdegrees-grpmat)

  - [`BasicCodegrees(W): GrpMat → RngIntElt`](operations.md#function-basiccodegrees-grpmat)

  - [`Example: Basic Degrees`](operations.md#example-ex-9828d5)

  - [`LongestElement(W): GrpMat → SeqEnum`](operations.md#function-longestelement-grpmat)

  - [`CoxeterElement(W): GrpMat → SeqEnum`](operations.md#function-coxeterelement-grpmat)

  - [`CoxeterNumber(W): GrpMat → SeqEnum`](operations.md#function-coxeternumber-grpmat)

  - [`Example: Operations`](operations.md#example-ex-ae7bca)

  - [`LeftDescentSet(W, w): GrpMat, GrpMatElt → SetEnum`](operations.md#function-leftdescentset-grpmat-grpmatelt)

  - [`RightDescentSet(W, w): GrpMat, GrpMatElt → SetEnum`](operations.md#function-rightdescentset-grpmat-grpmatelt)

  - [`Example: Descent Sets`](operations.md#example-ex-609f66)

- [Properties of Reflection Groups](properties.md)

  - [`IsReflectionGroup(G): GrpMat → BoolElt`](properties.md#function-isreflectiongroup-grpmat-2)

  - [`RootsAndCoroots(G): GrpMat → [RngIntElt], [ModTupRngElt], [ModTupRngElt]`](properties.md#function-rootsandcoroots-grpmat)

  - [`IsRealReflectionGroup(G): GrpMat → BoolElt, [], []`](properties.md#function-isrealreflectiongroup-grpmat)

  - [`Example: Is Reflection Group`](properties.md#example-ex-db9a68)

  - [`IsCrystallographic(W): GrpMat → BoolElt`](properties.md#function-iscrystallographic-grpmat)

  - [`IsSimplyLaced(W): GrpMat → BoolElt`](properties.md#function-issimplylaced-grpmat)

  - [`Example: Properties`](properties.md#example-ex-d36942)

  - [`Dual(G): GrpMat → BoolElt`](properties.md#function-dual-grpmat)

  - [`Overgroup(H): GrpMat → GrpMat`](properties.md#function-overgroup-grpmat)

  - [`Overdatum(H): GrpMat → RootDtm`](properties.md#function-overdatum-grpmat)

  - [`StandardAction(W): GrpMat → Map`](properties.md#function-standardaction-grpmat)

  - [`StandardActionGroup(W): GrpMat → GrpPerm, Map`](properties.md#function-standardactiongroup-grpmat)

- [Roots, Coroots and Reflections](action.md)

  - [Accessing Roots and Coroots](action.md#accessing-roots-and-coroots)

    - [`RootSpace(W): GrpMat → Lat`](action.md#function-rootspace-grpmat)

    - [`CorootSpace(W): GrpMat → Lat`](action.md#function-corootspace-grpmat)

    - [`Example: Root Space`](action.md#example-ex-16412e)

    - [`SimpleOrders(W): GrpMat → [RngIntElt]`](action.md#function-simpleorders-grpmat)

    - [`SimpleRoots(W): GrpMat → Mtrx`](action.md#function-simpleroots-grpmat)

    - [`SimpleCoroots(W): GrpMat → Mtrx`](action.md#function-simplecoroots-grpmat)

    - [`NumberOfPositiveRoots(W): GrpMat → RngIntElt`](action.md#function-numberofpositiveroots-grpmat)

    - [`NumPosRoots(W): GrpMat → RngIntElt`](action.md#function-numposroots-grpmat)

    - [`Roots(W): GrpMat → SetIndx`](action.md#function-roots-grpmat)

    - [`Coroots(W): GrpMat → SetIndx`](action.md#function-coroots-grpmat)

    - [`PositiveRoots(W): GrpMat → SetIndx`](action.md#function-positiveroots-grpmat)

    - [`PositiveCoroots(W): GrpMat → SetIndx`](action.md#function-positivecoroots-grpmat)

    - [`Root(W, r): GrpMat, RngIntElt → SetIndx`](action.md#function-root-grpmat-rngintelt)

    - [`Coroot(W, r): GrpMat, RngIntElt → SetIndx`](action.md#function-coroot-grpmat-rngintelt)

    - [`RootPosition(W, v): GrpMat, . → SetIndx`](action.md#function-rootposition-grpmat)

    - [`CorootPosition(W, v): GrpMat, . → SetIndx`](action.md#function-corootposition-grpmat)

    - [`Example: Roots Coroots`](action.md#example-ex-194100)

  - [Reflections](action.md#reflections)

    - [`ReflectionMatrices(W): GrpMat → [AlgMatElt]`](action.md#function-reflectionmatrices-grpmat)

    - [`CoreflectionMatrices(W): GrpMat → [AlgMatElt]`](action.md#function-coreflectionmatrices-grpmat)

    - [`SimpleReflectionMatrices(W): GrpMat → [AlgMatElt]`](action.md#function-simplereflectionmatrices-grpmat)

    - [`SimpleCoreflectionMatrices(W): GrpMat → [AlgMatElt]`](action.md#function-simplecoreflectionmatrices-grpmat)

    - [`ReflectionMatrix(W, r): GrpMat, RngIntElt → AlgMatElt`](action.md#function-reflectionmatrix-grpmat-rngintelt)

    - [`CoreflectionMatrix(W, r): GrpMat, RngIntElt → []`](action.md#function-coreflectionmatrix-grpmat-rngintelt)

    - [`SimpleReflectionPermutations(W): GrpMat → []`](action.md#function-simplereflectionpermutations-grpmat)

    - [`ReflectionPermutations(W): GrpMat → []`](action.md#function-reflectionpermutations-grpmat)

    - [`ReflectionPermutation(W, r): GrpMat, RngIntElt → []`](action.md#function-reflectionpermutation-grpmat-rngintelt)

    - [`ReflectionWords(W): GrpMat → []`](action.md#function-reflectionwords-grpmat)

    - [`ReflectionWord(W, r): GrpMat, RngIntElt → []`](action.md#function-reflectionword-grpmat-rngintelt)

    - [`Example: Action`](action.md#example-ex-a49ddd)

    - [`Length(w): GrpMatElt → RngIntElt`](action.md#function-length-grpmatelt)

    - [`CoxeterLength(w): GrpMatElt → RngIntElt`](action.md#function-coxeterlength-grpmatelt)

  - [Weights](action.md#weights)

    - [`WeightLattice(W): GrpMat → Lat`](action.md#function-weightlattice-grpmat)

    - [`CoweightLattice(W): GrpMat → Lat`](action.md#function-coweightlattice-grpmat)

    - [`FundamentalWeights(W): GrpMat → Mtrx`](action.md#function-fundamentalweights-grpmat)

    - [`FundamentalCoweights(W): GrpMat → Mtrx`](action.md#function-fundamentalcoweights-grpmat)

    - [`Example: Weights`](action.md#example-ex-843e25)

    - [`IsDominant(R, v): RootDtm, . → ModTupFldElt, GrpFPCoxElt`](action.md#function-isdominant-rootdtm)

    - [`DominantWeight(W, v): GrpMat, . → ModTupFldElt, GrpFPCoxElt`](action.md#function-dominantweight-grpmat)

    - [`WeightOrbit(W, v): GrpMat, . → {@ ModTupFldElt @}, [GrpFPCoxElt]`](action.md#function-weightorbit-grpmat)

    - [`Example: Dominant Weights`](action.md#example-ex-a17dda)

- [Related Structures](related.md)

  - [`CoxeterGroup(GrpFPCox, W): Cat, GrpMat → GrpPermCox`](related.md#function-coxetergroup-cat-grpmat)

  - [`CoxeterGroup(GrpPermCox, W): Cat, GrpMat → GrpPermCox`](related.md#function-coxetergroup-cat-grpmat-2)

  - [`LieAlgebra(W, R): GrpMat, Rng → AlgLie`](related.md#function-liealgebra-grpmat-rng)

  - [`GroupOfLieType(W, k): GrpMat, Rng → GrpLie`](related.md#function-groupoflietype-grpmat-rng)
