#This GAP code evaluates pi_c(P_n) LoadPackage("grape"); pi:=function(n,c) local A,i,j,sz,set_of_sizes, gamma,aut,colors,color,au,size_dist_colrs,little_pi,b,size_colrs,set_of_sizes_for_color,col, col_as_set_of_sets,alpha, set_of_images_for_color; if c>n then return 0; else ####Construct the Path C_n A:=NullMat(n,n); for i in [1..n] do for j in [1..n] do if (j mod n)=(i+1) mod n or (j mod n)=(i-1) mod n then A[i][j]:=1; fi; od; od; ######################### Functions needed sz:=cell->Size(cell); set_of_sizes:= partn->Set(List(partn,sz)); ############################################################## gamma:= Graph( Group(()), [1..n], OnPoints,function(x,y) return A[x][y]=1; end,true ); aut:=AutGroupGraph(gamma); ####################################### colors:=PartitionsSet([1..n],c); size_colrs:=Size(colors); little_pi:=[colors[1]]; for i in [2..size_colrs] do color:=colors[i]; b:=true; set_of_sizes_for_color:= set_of_sizes(color); for col in little_pi do if set_of_sizes(col) =set_of_sizes_for_color then col_as_set_of_sets:=Set([]); for j in [1..c] do col_as_set_of_sets:=Union(col_as_set_of_sets,[Set(col[j])]); od; for alpha in aut do set_of_images_for_color:=Set([]); for j in [1..c] do set_of_images_for_color:=Union(set_of_images_for_color,[Set(OnSets(color[j],alpha))]); od; if set_of_images_for_color=col_as_set_of_sets then b:=false; break; fi; od; fi; od; if b then Add(little_pi,color); fi; od; return Size(little_pi); fi; end;