Skip to content

Commit

Permalink
more cartanType for crg
Browse files Browse the repository at this point in the history
  • Loading branch information
jmichel7 committed Dec 5, 2024
1 parent 5691d75 commit 94c5579
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 14 deletions.
39 changes: 33 additions & 6 deletions src/ComplexR.jl
Original file line number Diff line number Diff line change
Expand Up @@ -56,28 +56,55 @@ julia> crg(4) # there is also a short alias
G₄
```
"""
function complex_reflection_group(i::Integer)
function complex_reflection_group(i::Integer,cartanType=1)
if i==23 coxgroup(:H,3)
elseif i==28 coxgroup(:F,4)
elseif i==28 coxgroup(:F,4,cartanType)
elseif i==30 coxgroup(:H,4)
elseif i==35 coxgroup(:E,6)
elseif i==36 coxgroup(:E,7)
elseif i==37 coxgroup(:E,8)
else t=TypeIrred(series=:ST,ST=Int(i))
elseif cartanType==1
t=TypeIrred(series=:ST,ST=Int(i))
PRG(simpleroots(t),simplecoroots(t))
else
if i in (4,8,12,16,20,22) error("G",i," has no cartanType") end
t=TypeIrred(;series=:ST,ST=Int(i))
r=simpleroots(t)
c=cartan(t)
t.cartanType=cartanType
if i in (5,6,9,10,14,17,18,21)
D=Diagonal([cartanType,1])
cr=solutionmat(transpose(r),D*c*inv(D//1))
if nothing in cr error("unexpected") end
PRG(r,cr)
else error("cartanType!=1 not implemented for G",i)
end
end
end

function complex_reflection_group(p,q,r)
function complex_reflection_group(p,q,r,cartanType=1)
if !iszero(p%q) || p<=0 || r<=0 || (r==1 && q!=1)
error("complex_reflection_group(p,q,r) must satisfy: q|p, r>0, and r=1 => q=1")
end
if p==1 return r==1 ? coxgroup() : rootdatum(:gl,r)
elseif p==2 return rootdatum(:so,q==2 ? 2r : 2r+1)
elseif p==q && r==2 return coxgroup(:I,2,p)
end
t=TypeIrred(;series=:ST,p,q,rank=r)
PRG(simpleroots(t),simplecoroots(t))
if cartanType!=1
# if r>2 error("cartanType!=1 not implemented for G",(p,q,r)) end
if r==1 || p==q error("G",(p,q,r)," has no cartanType") end
t=TypeIrred(;series=:ST,p=Int(p),q=Int(q),r=Int(r),rank=r)
rr=simpleroots(t)
c=cartan(t)
t.cartanType=cartanType
D=Diagonal(vcat([cartanType],fill(1,r-1)))
cr=solutionmat(transpose(rr),D*c*inv(D//1))
if nothing in cr error("unexpected") end
PRG(rr,cr)
else
t=TypeIrred(;series=:ST,p,q,rank=r)
PRG(simpleroots(t),simplecoroots(t))
end
end

const crg=complex_reflection_group
Expand Down
15 changes: 8 additions & 7 deletions src/PermRoot.jl
Original file line number Diff line number Diff line change
Expand Up @@ -401,8 +401,8 @@ function Base.show(io::IO, t::TypeIrred)
if haskey(t,:ST) n*="($(t.ST)"
else n*="($(t.p),$(t.q),$(t.rank)"
end
if haskey(t,:cartanType)
n*=","*xrepr(io,t.cartanType)*")"
if haskey(t,:cartanType) n*=","*xrepr(io,t.cartanType)*")"
else n*=")"
end
end
else
Expand Down Expand Up @@ -964,10 +964,10 @@ function findgensDiagCartan(H,C,p)
cc=unique.(cc)
if any(x->length(x)>1,cc) return nothing end
cc=only.(cc)
best=findfirst(==(1),cc)
best=findfirst(==(d[n-1]),cc)
if !isnothing(best)
p[n]=l[best]
d[n]=1
d[n]=d[n-1]
else
d[n]=cc[1]
p[n]=l[1]
Expand Down Expand Up @@ -1032,9 +1032,10 @@ function refltype(W::PermRootGroup)
if verbose print("#4") end
if !isnothing(better) good=better[1]
rd=diagconj_elt(C,cartan(R,good))
if length(rd)==2 && isone(rd[1])
d.cartanType=improve_type(rd[2])
end
if rd[1]!=1 error("hah non") end
if !allequal(rd[2:end])
println("##### Warning: cartantypes for ",d,"=",rd[3:end].//rd[2]) end
d.cartanType=improve_type(rd[2])
else better=findgensDiagCartan2(R,C)
if verbose print("#5") end
if !isnothing(better) good=better[1]
Expand Down
2 changes: 1 addition & 1 deletion src/Weyl.jl
Original file line number Diff line number Diff line change
Expand Up @@ -811,7 +811,7 @@ julia> reflrep(W)
[1 3; 0 -1]
```
"""
CoxGroups.coxeter_group(t::Symbol,r::Int=0,b::Int...;sc=false)=iszero(r) ? coxgroup() :
CoxGroups.coxeter_group(t::Symbol,r::Int=0,b::Number...;sc=false)=iszero(r) ? coxgroup() :
sc ? rootdatum(permutedims(cartan(t,r,b...)),Matrix{Int}(I,r,r)) : rootdatum(cartan(t,r,b...))

"""
Expand Down

0 comments on commit 94c5579

Please sign in to comment.