Skip to content

Commit

Permalink
modify data for twisted doubles
Browse files Browse the repository at this point in the history
  • Loading branch information
jmichel7 committed Oct 21, 2024
1 parent dd94304 commit 48b96c3
Show file tree
Hide file tree
Showing 24 changed files with 102 additions and 47 deletions.
102 changes: 78 additions & 24 deletions src/Families.jl
Original file line number Diff line number Diff line change
Expand Up @@ -359,26 +359,19 @@ chevieset(:families,:C2,
:mellin=>[[1,1,0,0],[1,-1,0,0],[0,0,1,1],[0,0,1,-1]],
:mellinLabels=>["(1,1)","(1,g2)","(g2,1)","(g2,g2)"])))

chevieset(:families,Symbol("C'2"),
Family(Dict(:group=>"C2",:name=>"C'_2",
:explanation=>"TwistedDrinfeldDouble(Z/2)",
:charLabels=>["(1,1)", "(1,\\varepsilon)", "(g_2,1)","(g_2,\\varepsilon)"],
:fourierMat=>1//2*[1 1 -1 -1;1 1 1 1;-1 1 1 -1;-1 1 -1 1],
chevieset(:families,:LTQZ2,
Family(Dict(:group=>Group(Perm(1,2)),:cocycle=>-1,:pivotal=>(1,-1),
:explanation=>"Lusztig's TwistedDrinfeldDouble(Z/2)",
:charparams=>[[1,1],[1,-1],[-1,E(4)],[-1,-E(4)]],
:charLabels=>[ "(1,1)","(1,-1)","(-1,\\zeta_4)","(-1,-\\zeta_4)"],
:bar=>[1,1],:defect=>1,
:fourierMat=>[[1,1,-1,-1],[1,1,1,1],[-1,1,1,-1],[-1,1,-1,1]]//2,
:eigenvalues=>[1,1,E(4),-E(4)],
:qEigen=>[0,0,1,1]//2,
:name=>"LusztigTwistedDrinfeldDoubleCyclic(2,-1,[1,-1])",
:explanation=>"LusztigTwistedDrinfeldDoubleCyclic(2,-1,[1,-1])",
:qEigen=>[ 0, 0, 1/2, 1/2 ],
:perm=>Perm(3,4),
:lusztig=>true, # does not satisfy (ST)^3=1 but (SPT)^3=1
:cospecial=>2)))

chevieset(:families,Symbol("C'\"2"),
Family(Dict(:group=>"C2", :name=>"C'''_2",
:explanation=>"TwistedDrinfeldDouble(Z/2)'",
:charLabels=>["(1,1)", "(1,\\varepsilon)", "(g_2,1)", "(g_2,\\varepsilon)"],
:fourierMat=>1//2*[1 1 -1 -1;1 1 1 1;-1 1 -1 1;-1 1 1 -1],
:eigenvalues=>[1,1,E(4),-E(4)],
:qEigen=>[0,0,1,1]//2,
:perm=>Perm(3,4),
:cospecial=>2)))
:lusztig=>true)))# does not satisfy (ST)^3=1 but (SPT)^3=1

chevieset(:families,:S3,
Family(Dict(:group=>"S3", :name=>"D(\\mathfrak S_3)",
Expand Down Expand Up @@ -459,12 +452,6 @@ f.eigenvalues.//=f.eigenvalues[2]
f.special=2
f.qEigen=[1,0,1,0].//2
chevieset(:families,:Z4,f)

f=chevieget(:families,:ExtPowCyclic)(9,1)
f.perm=perm"(2,9)(3,8)(4,7)(5,6)"
f.qEigen=[0,2,1,0,2,1,0,2,1].//3
#if f.eigenvalues!=map(i->E(9)^(5*i^2),0:8) error() end
chevieset(:families,:Z9,f)
end

chevieset(:families,:QZ,function(n,pivotal=nothing)
Expand Down Expand Up @@ -797,6 +784,73 @@ chevieset(:families,:G4,function()
drinfeld_double(g4;pivotal=(g4(1,2)^3,[E(3),E(3)]))
end)

"""
`TwistedDrinfeldDoubleCyclic(n,ζ,piv=[1,1])`
compute the modular data of the category of modules over the twisted
Drinfeld double of a cyclic group G of order n
arguments are `(n,ζ,piv=[1,1])`, where `n` is the order of the group,
`ζ` is the value of the 3-cocycle on `(ζₙ,ζₙⁿ⁻¹,ζₙⁿ⁻¹)` and `piv` is
a pivotal structure different form the usual one (on vector spaces)
The result is a `GapObj` with fields:
.group: the group
.cocycle: `ζ`, the value of the 3-cocycle on the element `(ζₙ,ζₙ,ζₙⁿ⁻¹)`
.pivotal: a pair `[k,alpha]` where the 2-cocycle associated with `k` is a
coboundary (an integer in `0:n-1`), and alpha the corresponding
1-cocycle (a n^2-th root of unity) (for the cyclic group, the Schur
multiplier is trivial, therefore these pairs correspond exactly to
simple objects of the category)
.charparams: labels of lines of the fourier matrix by
pairs [x,chi]: elt of G, projective character of G for the
corresponding cocycle
.special is the position of the special line (here 1 where (x,chi)=(1,1) is)
.eigenvalues are the eigenvalues chi(x)/chi(1)
(inverse of the T-matrix of the category)
.fourierMat is the Fourier matrix (renormalized S-matrix)
.bar is the object \\overline{1} needed to renormalise the S-matrix
(related to the non sphericity of the pivotal structure)
In general, we have the relation `(ST)³=τ id`, where the explicit value
of `τ` can be computed using Gauss sums.
"""
function TwistedDrinfeldDoubleCyclic(n,ζ,pivotal=[1,1])
ζ=Root1(ζ)
piv1e,piv2=Root1.(pivotal)
piv1=Int(Root1(piv1e).r*n)
piv=(piv1,piv2)
G=crg(n,1,1)
res=Family(Dict(:group=>G))
res.cocycle=ζ
# 3-cocycle associated to ζ: (a,b,c)->ζ^(a*(b+c)^quo), where 0<=a,b,c<n
ω(a,b,c)=ζ^(mod(a,n)*div(mod(b,n)+mod(c,n),n))
θ(g,a,b)=ω(g,a,b)*inv(ω(a,g,b))*ω(a,b,g) #θ_g(a,b)
γ(g,a,b)=ω(a,b,g)*inv(ω(a,g,b))*ω(g,a,b) #γ_g(a,b)
simple=map(i->map(j->(i,root(prod(k->θ(i,1,k),1:n-1),n)*E(n,j)),0:n-1),0:n-1)
# if a is a representation with cocycle θᵢ then
# 1=a(n)=θₐ(1,n-1)⁻¹a(1)a(n-1)=…=θₐ(1,n-1)⁻¹*θₐ(1,n-2)⁻¹…θₐ(1,1)⁻¹a(1)^n
simple=vcat(simple...)
if !(piv in simple) return end
#if the given pivotal structure is not of the expected form, we bail out
res.pivotal=(piv1e,piv2)
res.charparams=[(E(n,i1),i2) for (i1,i2) in simple]
res.charLabels=map(x->xrepr(x;TeX=true),res.charparams)
res.bar=(E(n,-2piv1), inv(piv2^2*γ(1,piv1,-piv1)*γ(1,piv1,-2piv1)))
res.fourierMat=[piv2^i1*piv2^j1*i2^piv1*j2^piv1*i2^j1*j2^i1
for (i1,i2) in simple, (j1,j2) in simple]//(n*piv2^(-2piv1))
res.eigenvalues=[piv2^i1*i2^piv1*i2^i1 for (i1,i2) in simple]
res.defect=sum(res.eigenvalues)//n*piv2^(-2piv1)
res.name="TwistedDrinfeldDouble(ℤ/$n,"*xrepr(ζ;TeX=true)
res.qEigen=map(x->conj(x[1]).r,res.charparams)
if piv!=(0,1) res.name*=","*xrepr(res.pivotal;TeX=true) end
res.name*=")"
res.perm=Perm(Int.(res.fourierMat^2*(1:n^2)))
res
end

chevieset(:families,:TQZ,TwistedDrinfeldDoubleCyclic)

"""
`family_imprimitive(S)`
Expand Down
1 change: 1 addition & 0 deletions src/Format.jl
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ function Base.show(io::IO,t::Table)
col0=(-1 in row_seps) && !isnothing(col_labels)
ranges=map((x,y)->cols[y:y+x-1],column_repartition,
pushfirst!(cumsum(column_repartition)[1:end-1].+1,1))
append!(col_seps,cumsum(column_repartition)[1:end-1])
for ci in ranges
if TeX
alignt=-1 in col_seps ? '|' : ""
Expand Down
2 changes: 1 addition & 1 deletion src/tbl/cmp4_22.jl
Original file line number Diff line number Diff line change
Expand Up @@ -808,7 +808,7 @@ chevieset(:G4_22, :UnipotentCharacters, function (ST,)
end
return res
end
return Dict{Symbol, Any}(:harishChandra => [Dict{Symbol, Any}(:relativeType => Dict{Symbol, Any}(:series => "ST", :indices => 1:2, :rank => 2, :ST => 14), :levi => [], :parameterExponents => [1, 1], :charNumbers => [1, 2, 3, 4, 5, 6, 8, 7, 9, 12, 11, 10, 15, 14, 13, 16, 20, 18, 21, 17, 19, 22, 23, 24], :eigenvalue => 1, :cuspidalName => ""), Dict{Symbol, Any}(:relativeType => Dict{Symbol, Any}(:series => "ST", :indices => [1], :rank => 1, :p => 6, :q => 1), :levi => [2], :parameterExponents => [[3, 4, 4, 0, 4, 4]], :charNumbers => [66, 26, 27, 79, 28, 25], :eigenvalue => J ^ 2, :cuspidalName => ImprimitiveCuspidalName([[], [0, 1], [0, 1]])), cuspidal(34, 1), cuspidal(35, 1, 2), cuspidal(29, -1), cuspidal(30, -1, 2), cuspidal(31, -1, 3), cuspidal(32, -1, 4), cuspidal(33, -1, 5), cuspidal(73, -1, 6), cuspidal(74, -1, 7), cuspidal(40, J), cuspidal(41, J, 2), cuspidal(42, J, 3), cuspidal(43, J, 4), cuspidal(50, J, 5), cuspidal(51, J, 6), cuspidal(36, J ^ 2), cuspidal(37, J ^ 2, 2), cuspidal(52, -J), cuspidal(53, -J, 2), cuspidal(38, -(J ^ 2)), cuspidal(39, -(J ^ 2), 2), cuspidal(54, -I), cuspidal(55, -I, 2), cuspidal(56, I, 3), cuspidal(57, I, 4), cuspidal(58, I), cuspidal(59, I, 2), cuspidal(60, -I, 3), cuspidal(61, -I, 4), cuspidal(46, E(8)), cuspidal(47, E(8, 3), 2), cuspidal(48, E(8, 3)), cuspidal(49, E(8), 2), cuspidal(69, E(9, 5), 1 // 3), cuspidal(70, E(9, 5), 2, 2 // 3), cuspidal(71, E(9, 8), 1 // 3), cuspidal(72, E(9, 8), 2, 2 // 3), cuspidal(67, E(9, 2), 1 // 3), cuspidal(68, E(9, 2), 2, 2 // 3), cuspidal(62, E(12)), cuspidal(63, E(12, 7), 2), cuspidal(64, E(12, 7)), cuspidal(65, E(12), 2), cuspidal(75, E(16, 5), 1 // 2), cuspidal(77, E(16, 13), 1 // 2), cuspidal(78, E(16, 15), 1 // 2), cuspidal(76, E(16, 7), 1 // 2), cuspidal(44, E(24, 11)), cuspidal(45, E(24, 17))], :families => [Family("C1", [1]), Family(conj(((CHEVIE[:families])[:X])(3)) * Family("G14"), [26, 37, 28, 39, 14, 3, 34, 18, 46, 48, 15, 13, 30, 29, 59, 60, 55, 56, 25, 36, 27, 38, 2, 11, 16, 35, 49, 47, 12, 10, 32, 31, 58, 61, 54, 57, 4, 17, 22, 33, 41, 40, 43, 42, 44, 45, 51, 50, 53, 52, 64, 65, 62, 63], Dict{Symbol, Any}(:signs => [-1, 1, -1, 1, -1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1], :ennola => 32)), Family(((CHEVIE[:families])[:X])(3), [23, 24, 66], Dict{Symbol, Any}(:signs => [1, 1, -1], :ennola => 2)), Family("Z9", [19, 70, 67, 20, 72, 71, 21, 68, 69], Dict{Symbol, Any}(:cospecial => 4, :ennola => 6)), Family(Dict{Symbol, Any}(:fourierMat => OnMatrices([[1, 1, 2, 1, 1, -(root(-2)), -(root(-2)), -(root(-2)), -(root(-2))], [1, 1, 2, 1, 1, root(-2), root(-2), root(-2), root(-2)], [2, 2, 0, -2, -2, 0, 0, 0, 0], [1, 1, -2, 1, 1, -(root(-2)), root(-2), -(root(-2)), root(-2)], [1, 1, -2, 1, 1, root(-2), -(root(-2)), root(-2), -(root(-2))], [-(root(-2)), root(-2), 0, -(root(-2)), root(-2), 0, -2 * E(4), 0, 2 * E(4)], [-(root(-2)), root(-2), 0, root(-2), -(root(-2)), -2 * E(4), 0, 2 * E(4), 0], [-(root(-2)), root(-2), 0, -(root(-2)), root(-2), 0, 2 * E(4), 0, -2 * E(4)], [-(root(-2)), root(-2), 0, root(-2), -(root(-2)), 2 * E(4), 0, -2 * E(4), 0]] // 4, perm"(4,5)"), :explanation => "everything to explain", :eigenvalues => [1, 1, 1, -1, -1, E(16, 5), E(16, 7), -(E(16, 5)), -(E(16, 7))], :qEigen => [0, 0, 0, 0, 0, 1 // 2, 1 // 2, 1 // 2, 1 // 2], :special => 2, :ennola => -4), [8, 9, 7, 73, 74, 75, 76, 77, 78]), Family(((CHEVIE[:families])[:X])(3), [5, 6, 79], Dict{Symbol, Any}(:signs => [1, 1, -1], :ennola => -2))], :a => [0, 1, 1, 1, 20, 20, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9, 20], :A => [0, 23, 23, 23, 28, 28, 27, 27, 27, 23, 23, 23, 23, 23, 23, 23, 23, 23, 26, 26, 26, 23, 25, 25, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 28])
return Dict{Symbol, Any}(:harishChandra => [Dict{Symbol, Any}(:relativeType => Dict{Symbol, Any}(:series => "ST", :indices => 1:2, :rank => 2, :ST => 14), :levi => [], :parameterExponents => [1, 1], :charNumbers => [1, 2, 3, 4, 5, 6, 8, 7, 9, 12, 11, 10, 15, 14, 13, 16, 20, 18, 21, 17, 19, 22, 23, 24], :eigenvalue => 1, :cuspidalName => ""), Dict{Symbol, Any}(:relativeType => Dict{Symbol, Any}(:series => "ST", :indices => [1], :rank => 1, :p => 6, :q => 1), :levi => [2], :parameterExponents => [[3, 4, 4, 0, 4, 4]], :charNumbers => [66, 26, 27, 79, 28, 25], :eigenvalue => J ^ 2, :cuspidalName => ImprimitiveCuspidalName([[], [0, 1], [0, 1]])), cuspidal(34, 1), cuspidal(35, 1, 2), cuspidal(29, -1), cuspidal(30, -1, 2), cuspidal(31, -1, 3), cuspidal(32, -1, 4), cuspidal(33, -1, 5), cuspidal(73, -1, 6), cuspidal(74, -1, 7), cuspidal(40, J), cuspidal(41, J, 2), cuspidal(42, J, 3), cuspidal(43, J, 4), cuspidal(50, J, 5), cuspidal(51, J, 6), cuspidal(36, J ^ 2), cuspidal(37, J ^ 2, 2), cuspidal(52, -J), cuspidal(53, -J, 2), cuspidal(38, -(J ^ 2)), cuspidal(39, -(J ^ 2), 2), cuspidal(54, -I), cuspidal(55, -I, 2), cuspidal(56, I, 3), cuspidal(57, I, 4), cuspidal(58, I), cuspidal(59, I, 2), cuspidal(60, -I, 3), cuspidal(61, -I, 4), cuspidal(46, E(8)), cuspidal(47, E(8, 3), 2), cuspidal(48, E(8, 3)), cuspidal(49, E(8), 2), cuspidal(69, E(9, 5), 1 // 3), cuspidal(70, E(9, 5), 2, 2 // 3), cuspidal(71, E(9, 8), 1 // 3), cuspidal(72, E(9, 8), 2, 2 // 3), cuspidal(67, E(9, 2), 1 // 3), cuspidal(68, E(9, 2), 2, 2 // 3), cuspidal(62, E(12)), cuspidal(63, E(12, 7), 2), cuspidal(64, E(12, 7)), cuspidal(65, E(12), 2), cuspidal(75, E(16, 5), 1 // 2), cuspidal(77, E(16, 13), 1 // 2), cuspidal(78, E(16, 15), 1 // 2), cuspidal(76, E(16, 7), 1 // 2), cuspidal(44, E(24, 11)), cuspidal(45, E(24, 17))], :families => [Family("C1", [1]), Family(conj(((CHEVIE[:families])[:X])(3)) * Family("G14"), [26, 37, 28, 39, 14, 3, 34, 18, 46, 48, 15, 13, 30, 29, 59, 60, 55, 56, 25, 36, 27, 38, 2, 11, 16, 35, 49, 47, 12, 10, 32, 31, 58, 61, 54, 57, 4, 17, 22, 33, 41, 40, 43, 42, 44, 45, 51, 50, 53, 52, 64, 65, 62, 63], Dict{Symbol, Any}(:signs => [-1, 1, -1, 1, -1, 1, 1, 1, -1, -1, -1, -1, -1, 1, -1, 1, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, 1, 1], :ennola => 32)), Family(((CHEVIE[:families])[:X])(3), [23, 24, 66], Dict{Symbol, Any}(:signs => [1, 1, -1], :ennola => 2)), Family(((CHEVIE[:families])[:TQZ])(3, E(3, 2)), [19, 20, 21, 68, 70, 72, 67, 71, 69], Dict{Symbol, Any}(:cospecial => 2, :ennola => 8)), Family(Dict{Symbol, Any}(:fourierMat => OnMatrices([[1, 1, 2, 1, 1, -(root(-2)), -(root(-2)), -(root(-2)), -(root(-2))], [1, 1, 2, 1, 1, root(-2), root(-2), root(-2), root(-2)], [2, 2, 0, -2, -2, 0, 0, 0, 0], [1, 1, -2, 1, 1, -(root(-2)), root(-2), -(root(-2)), root(-2)], [1, 1, -2, 1, 1, root(-2), -(root(-2)), root(-2), -(root(-2))], [-(root(-2)), root(-2), 0, -(root(-2)), root(-2), 0, -2 * E(4), 0, 2 * E(4)], [-(root(-2)), root(-2), 0, root(-2), -(root(-2)), -2 * E(4), 0, 2 * E(4), 0], [-(root(-2)), root(-2), 0, -(root(-2)), root(-2), 0, 2 * E(4), 0, -2 * E(4)], [-(root(-2)), root(-2), 0, root(-2), -(root(-2)), 2 * E(4), 0, -2 * E(4), 0]] // 4, perm"(4,5)"), :explanation => "everything to explain", :eigenvalues => [1, 1, 1, -1, -1, E(16, 5), E(16, 7), -(E(16, 5)), -(E(16, 7))], :qEigen => [0, 0, 0, 0, 0, 1 // 2, 1 // 2, 1 // 2, 1 // 2], :special => 2, :ennola => -4), [8, 9, 7, 73, 74, 75, 76, 77, 78]), Family(((CHEVIE[:families])[:X])(3), [5, 6, 79], Dict{Symbol, Any}(:signs => [1, 1, -1], :ennola => -2))], :a => [0, 1, 1, 1, 20, 20, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 1, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9, 20], :A => [0, 23, 23, 23, 28, 28, 27, 27, 27, 23, 23, 23, 23, 23, 23, 23, 23, 23, 26, 26, 26, 23, 25, 25, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 25, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 28])
else
return false
end
Expand Down
Loading

0 comments on commit 48b96c3

Please sign in to comment.