FindDimensionFunctions[FusionRules[g_,{{0,0,0}->multiplicities_}]]:=
Module[{multiplyByX=multiplicities[[All,2]],eigensystem},
eigensystem=Eigensystem[multiplyByX];
Flatten[With[{eigenspace=Cases[Transpose[eigensystem],{#,v_}:>v]},
FindDimensionFunctions[FusionRules[g,{{0,0,0}->multiplicities}],eigenspace]
]&/@Union[eigensystem[[1]]],1]
]

Eigenspaces[m_]:=With[{e=Eigensystem[m]},
{#,Cases[Transpose[e],{#,v_}:>v]}&/@Union[e[[1]]]
]

FindDimensionFunctions[FusionRules[g_,{{0,0,0}->multiplicities_}]]:=FindDimensionFunctions[FusionRules[g,{{0,0,0}->multiplicities}]]=
Module[{simultaneousEigenspaces,n,eigenspaces},
n=Length[multiplicities];
simultaneousEigenspaces={{{},IdentityMatrix[n]}};
Function[{i},
DebugPrint["Finding eigenspaces for object ",i];
eigenspaces=Eigenspaces[multiplicities[[All,i]]];
simultaneousEigenspaces=Union[DeleteCases[Flatten[Outer[Function[{se,e},{se[[1]]~Join~{e[[1]]},IntersectSubspaces[n,{se[[2]],e[[2]]}]}],simultaneousEigenspaces,eigenspaces,1],1],{_,{}}]];
]/@Range[1,n];
First/@simultaneousEigenspaces
]

FindDimensionFunctions[g_GradedGraph]:=FindDimensionFunctions/@FindFusionRules[g]

FormalCodegree[v_?VectorQ]:=RootReduce[v.v]

FormalCodegrees[f_FusionRules]:=FormalCodegree/@FindDimensionFunctions[f]

FormalCodegrees[g_GradedGraph]:=FormalCodegrees/@FindFusionRules[g]

FormalCodegrees[g0_BigraphWithDuals,g1_BigraphWithDuals]:={FormalCodegrees[EvenPart[#]],FormalCodegrees[EvenPart[FlipFusionRules[#]]]}&/@FindFusionRules[g0,g1]

DimensionFieldGenerator[g_GradedGraph]:=Module[{θ,dimensions},
θ=ToNumberField[DimensionOfGenerator[g]];
dimensions=Flatten[ReducedDimensionsByDepth[g]];
ToNumberField[{θ}~Join~Cases[dimensions,d_/;MatchQ[ToNumberField[d,θ],_ToNumberField]]][[1]]/.AlgebraicNumber[r_,_]:>r
]

DimensionFieldGenerator[EvenPart[HaagerupBigraph]]

DimensionFieldGenerator[EvenPart[HaagerupAsaedaBigraph]]

DimensionFieldGenerator[EvenPart[haagerupFamilyBigraph[7]]]

Off[ToNumberField::nnfel]

NumbersInFieldQ[numbers_,generator_]:=
Not[MatchQ[ToNumberField[RootReduce[#],generator],_ToNumberField]&/@(Or@@numbers)]

FormalCodegreesInDimensionFieldTest[g0_BigraphWithDuals,g1_BigraphWithDuals]:=Module[{fg0,fg1,formalCodegrees},
fg0=DimensionFieldGenerator[EvenPart[g0[[1]]]];
fg1=DimensionFieldGenerator[EvenPart[g1[[1]]]];
formalCodegrees=FormalCodegrees[g0,g1];
Length[Cases[formalCodegrees,{nnfc_,mmfc_}/;NumbersInFieldQ[nnfc,fg0]∧NumbersInFieldQ[mmfc,fg1]]]>0
]

FindFusionRules[HaagerupWithDuals,DualHaagerupWithDuals]//Length

FindDimensionFunctions[EvenPart[FindFusionRules[HaagerupWithDuals,DualHaagerupWithDuals][[1]]]]

SetDebugMode[True]

FormalCodegrees[HaagerupWithDuals,DualHaagerupWithDuals]

FormalCodegreesInDimensionFieldTest[HaagerupWithDuals,DualHaagerupWithDuals]

{g[0],g[1]}={BigraphWithDuals[GradedBigraph[{{1}},{{1}},{{1}},{{1}},{{1}},{{1},{1}},{{1,0},{0,1}},{{1,1},{1,0},{0,1}},{{0,0,1}},{{1}},{{1}},{{1}}],DualData[{1},{1},{1},{1,2},{1,2,3},{1},{1}]],BigraphWithDuals[GradedBigraph[{{1}},{{1}},{{1}},{{1}},{{1}},{{1},{1}},{{1,0},{1,0}},{{1,0},{1,0},{0,1},{0,1}},{{0,0,0,1}},{{1}},{{1}},{{1}}],DualData[{1},{1},{1},{1,2},{1,2,3,4},{1},{1}]]};

SetDebugMode[True]

FormalCodegreesInDimensionFieldTest[g[0],g[1]]

FormalCodegrees[g[0],g[1]]

Eigenvalues[GraphAdjacencyMatrix[g[0]]]

Eigenvalues[GraphAdjacencyMatrix[g[1]]]