AffineA

Documentation for AffineA.

AffineA.AffineAModule

This package implements:

  • the type PPerm, the periodic permutations of the integers.
  • the function coxeter_PPerm_group(n) (or coxPPerm(n)), the Coxeter group of type Ãₙ₋₁, as a group of PPerms of period n.
  • the function DualBraidMonoid for such groups.

It is based on the papers

  • [Digne, F.] "Presentations duales pour les groupes de tresses de type affine A", Comment. Math. Helv. 81 (2006) 23–47
  • [Shi] The Kazhdan-Lusztig cells in certain affine Weyl groups Springer LNM 1179 (1986)

©François Digne (2007) for the mathematics, François Digne and Jean Michel for the code.

Installing

To install this package, start Julia, enter package mode with ], and then do

(@v1.12) pkg> add https://github.com/jmichel7/AffineA.jl

exit package mode with backspace and then do

julia> using Chevie, AffineA

and you are set up.

To update later to the latest version, do

(@v1.12) pkg> update AffineA

An example:

julia> W=coxPPerm(3) # The group Ã₂ as periodic permutations of period 3.
coxeter_PPerm_group(3)

julia> l=elements(W,3) # elements of Coxeter length 3
9-element Vector{PPerm}:
 (2,3₋₁)
 (1,2)₁(3)₋₁
 (1)₋₁(2,3)₁
 (1,3)
 (1,3)₁(2)₋₁
 (1,2₋₁)₋₁(3)₁
 (1)₁(2,3₋₁)₋₁
 (1,3₋₁)₋₁(2)₁
 (1,2₋₁)
julia> print(l[6]) # the images of 1:3 by the 6th element
PPerm(Int16[-1, 1, 6])
julia> mod1.([-1, 1, 6],3) # the image in 𝔖₃
3-element Vector{Int64}:
 2
 1
 3

julia> l[6] # printed as product of cycles with shifts -1 and 1 (sum 0). 2₋₁ is 2-3
PPerm(3): (1,2₋₁)₋₁(3)₁

julia> B=DualBraidMonoid(W) # The Coxeter element is W(1,2,3)
DualBraidMonoid(coxeter_PPerm_group(3),c=[1, 2, 3])

julia> b=prod(B.(refls(W,1:7))) # the product in B of 7 dual atoms
c.4.5.46
julia> print(b)
B(2,4,3,4,5,4,6)
julia> refls(W,2:5) # the corresponding reflections
4-element Vector{PPerm}:
 (2,3)
 (1,3₋₁)
 (1,3)
 (1,2₋₁)
source
AffineA.PPermType

a PPerm represents a shiftless periodic permutation f of the integers

  • periodic of period n means f(i+n)=f(i)+n
  • then permutation means all f(i) are distinct mod n.
  • no shift means sum(f.(1:n))==sum(1:n)

it is represented in field d as the Vector [f(1),…,f(n)]. The default constructor takes a vector of integers, and checks its validity if the keyword check=true is given.

source
AffineA.PPermMethod

PPerm(n,c₁,…,cₗ;check=true) constructs a PPerm of period n by giving its decomposition into cycles.

cycles cᵢ are given as pairs (i₁,…,iₖ)=>d representing the permutation i₁↦ i₂↦ …↦ iₖ↦ i₁+d*n. =>d can be omitted when d==0 and (i₁,)=>d can be abbreviated to i₁=>d.

An iⱼ itself may be given as a pair v=>d representing v+n*d.

The argument is tested for validity if check=true; in particular the cycles must be disjoint mod. n.

julia> PPerm([-1,1,6])
PPerm(3): (1,2₋₁)₋₁(3)₁

julia> PPerm(3,(1,2=>-1)=>-1,3=>1)
PPerm(3): (1,2₋₁)₋₁(3)₁

julia> PPerm(3,(1,-1)=>-1,3=>1)
PPerm(3): (1,2₋₁)₋₁(3)₁
source
PermGroups.Perms.cyclesMethod

cycles(a::PPerm)

The non-trivial cycles of a PPerm; each cycle is returned as a pair (i₁,…,iₖ)=>d and is normalized such that mod1(i₁,n) is the smallest of the mod1(iⱼ,n) and 1≤i₁≤n.

julia> cycles(PPerm([-1,1,6]))
2-element Vector{Pair{Vector{Int64}, Int64}}:
 [1, -1] => -1
     [3] => 1
source
Chevie.PermRoot.reflsMethod

refls(W::Atilde,i::Integer)

returns the i-th reflection of W. Reflections (a,bⱼ) are enumerated by lexicographical order of (j,a,b-a) with j nonnegative; however when a>b this reflection is printed (b,a₋ⱼ). i can also be a Vector; then the corresponding list of reflections is returned.

source
Chevie.Garside.DualBraidMonoidMethod

DualBraidMonoid(W::Atilde)

If W=coxeter_PPerm_group(n), constructs the dual braid monoid for Ãₙ₋₁ and the Coxeter element c=PPerm([1-n;3:n;2+n]). If M=DualBraidMonoid(W), used as a function, M(w) returns an element of the dual braid monoid if w∈W belongs to the interval [1,c], and nothing otherwise.

julia> W=coxPPerm(3);l=elements(W,3)
9-element Vector{PPerm}:
 (2,3₋₁)
 (1,2)₁(3)₋₁
 (1)₋₁(2,3)₁
 (1,3)
 (1,3)₁(2)₋₁
 (1,2₋₁)₋₁(3)₁
 (1)₁(2,3₋₁)₋₁
 (1,3₋₁)₋₁(2)₁
 (1,2₋₁)

julia> B=DualBraidMonoid(W);B.(l)
9-element Vector{Union{Nothing, GarsideElt{PPerm, AffineA.AffaDualBraidMonoid{PPerm, AffineA.Atilde}}}}:
 6
 nothing
 c
 4
 nothing
 nothing
 nothing
 nothing
 5
source