(* ::Package:: *) BeginPackage["CycleIndicators`","Combinatorica`"]; ClengthEx[\[Sigma]_,n_]:=If[Count[Length /@\[Sigma] ,n] >0,False,True] Clength[\[Sigma]_]:=Length /@\[Sigma] Cord[\[Sigma]_]:= LCM@@Clength[\[Sigma]] DoPerm[\[Sigma]_,\[Nu]_]:=If[Depth[\[Sigma]]==2,Permute[\[Sigma],\[Nu]],Permute@@(FromCycles /@{\[Sigma],\[Nu]})] Powers[\[Sigma]plain_,n_]:= Nest[DoPerm[\[Sigma]plain,#]&,\[Sigma]plain,n]//Return; PowerList[\[Sigma]plain_]:= Table[Powers[\[Sigma]plain,n],{n,0,Cord[ToCycles[\[Sigma]plain]]-2}] AllPerms[list_]:=Join[list,Apply[DoPerm,#]& /@Tuples[list,{2}]] //DeleteDuplicates CIS::usage="Calculates CycleIndicator for given set of generators (GenSet)"; CIS[GenSet_]:=Module[{grp,grpQ,ci,poly}, grp =FixedPointList[DeleteDuplicates[AllPerms[#]]&,FromCycles /@GenSet] //Flatten[#,1]& //DeleteDuplicates; If[ grp //PermutationGroupQ ==False,Print["Error (no Permutationgroup"]]; ci = CycleIndex[grp,x]; poly= ci /.x[i_]->n; Return[{ci,poly}//Column];] EndPackage[]