Minimal Faithful Degree code not working.
I'm making code to find the minimal faithful degree of reflection groups. There are two things that are going wrong as of now:
When I run for Reflection Groups, I get:
ValueError: the input data (2) is not valid for reflection groups.
The code is as below:
def getSocle(G):
Z=G.center()
gens=Z.gens()
genK=[]
while len(gens) == 0:
ExtractRep(~gens, ~gen)
ord=Order(gen)
p=Factorization(ord)[1][1]
n=Factorization(ord)[1][2]
gen2=gen^(p^(n-1))
genK.append(gen2) #gen2 is the element of order p in <gen>
K= G.subgroup([genK]) #(?)
return K
def getMinimalFaithfulDegree(G):
Inter=getSocle(G)
subs=G.subgroups()
F=[]
j=len(subs)
while j >= 1:
sub = subs[j-1]
if Inter.is_subgroup(sub) is False:
F.append(sub)
j -= 1
return F
def mu(F):
alph=0
for i in range(1,len(F)):
alph+= 1/F[i].order()
return alph
def abelianFactors(G):
orders=[]
gens=G.gens()
for i in gens:
orders.append(i.order())
return orders
def aplhaAbelian(G):
orders=abelianFactors(G)
return (sum(orders))/(prod(orders)) #sum of orders of cyclic groups/the product of orders, look into syntax
def Alpha(G):
if G.is_abelian(): #(?)
return alphaAbelian(G)
else:
F=getMinimalFaithfulDegree(G)
return mu(F)
Alpha(SymmetricGroup(4))
This gives 0, i don't know why.
I do not see the error about
is_abelian
in Sage 9.5, nor in https://sagecell.sagemath.orgI think i fixed that, I'll edit it. The biggest issue is that I'm getting that the Cayley Sum of the symmetric group of order 4 is zero. Which is clearly wrong.
I do not know what is the expected result, but you can insert a few
print
statements here and there in your code to see and verify correctness of intermediate results.The definition of
mu
looks suspicious, asalph
is simply overwritten with each iteration of the loop.wait why is it being overwritten?