/* ================================================================================================= This part of the program is used to compute the Hodge numbers of a threefold X isogenous to a product from an algebraic datum of X with the method described in Section 2.4 of my thesis: recall that h^{p,q}(X) is equal to the inner product of the character chi_{p,q} with the trivial character of G. The values of the characters chi_{p,q} are given in terms of the characters Xi:=chi_{phi_i} according to Theorem 2.4.5 (for elements in G0) and Theorem 2.4.8 (for elements outside G0). To determine the characters Xi we use our implementation of the Chevalley-Weil formula, more precisely the function "chi_phi" in the file "Isogenous/SubIso/ChevalleyWeil.magma". The code is also used in the paper "Mixed Threefolds Isogenous to a Product". Any citations below e.g. Remark 2.4.6. refer to my thesis. ================================================================================================= */ load "Isogenous/SubIso/ChevalleyWeil.magma"; /* The script "HodgeDiamondInvarG0" determines the dimensions of the subspaces of invariant classes: H^{p,q}(C1 x C2 x C3)^G0 for (p,q) = (3,0), (2,0), (1,0), and (2,1). */ HodgeDiamondInvarG0:=function(G0,X1,X2,X3) p:=PrincipalCharacter(G0); X1bar:=ComplexConjugate(X1); X2bar:=ComplexConjugate(X2); X3bar:=ComplexConjugate(X3); chi10:=X1 + X2 + X3; chi20:=X1*X2 + X1*X3 + X2*X3; chi30:=X1*X2*X3; chi11:=X1bar*X2 + X1*X2bar + X1bar*X3 + X1*X3bar + X2bar*X3 + X2*X3bar + 3*p; chi21:=X1bar*X2*X3 + X1*X2bar*X3 + X1*X2*X3bar + 2*(X1 + X2 + X3); h10:=InnerProduct(chi10,p); h20:=InnerProduct(chi20,p); h30:=InnerProduct(chi30,p); h11:=InnerProduct(chi11,p); h21:=InnerProduct(chi21,p); return [h30, h20, h10, h11, h21]; end function; /* The script "HodgeDiamondUnmixed" determines the Hodge diamond of a threefold isogenous to a product of unmixed type from an algebraic datum (G,V1,V2,V3) and the types Ti of the generating vectors Vi. */ HodgeDiamondUnmixed:=function(G,V1,V2,V3,T1,T2,T3) X1:=chi_phi(G,V1,T1); X2:=chi_phi(G,V2,T2); X3:=chi_phi(G,V3,T3); return HodgeDiamondInvarG0(G,X1,X2,X3); end function; /* The script "HodgeDiamondIndex2" determines the Hodge diamond of a threefold isogenous to a product in the index two case. Note that only the characters X1 and X2 are computed using the function "chi_phi". The character X3 is, according to Remark 2.4.6. i), the conjugated character of X2. */ HodgeDiamondIndex2:=function(G,G0,V1,V2,T1,T2) delta:=Rep({x: x in G| x notin G0}); X1:=chi_phi(G,V1,T1); X2:=chi_phi(G0,V2,T2); ResX1:=Restriction(X1, G0); X3:=X2^(delta^(-1)); n:=#G; In:=HodgeDiamondInvarG0(G0,ResX1,X2,X3); h10:=In[3]/2; h20:=In[2]/2; h30:=In[1]/2; h11:=In[4]/2 + 1/2; h21:=In[5]/2; for g in G0 do h10:=h10 + X1(delta*g)/n; h20:=h20 - X2((delta*g)^2)/n; h30:=h30 - X1(delta*g)*X2((delta*g)^2)/n; h21:=h21 - ComplexConjugate(X1(delta*g))*X2((delta*g)^2)/n; end for; return [h30, h20, h10, h11, h21]; end function; /* The scripts "HodgeDiamondIndex3" and "HodgeDiamondIndex6" do the same as the last two scripts, but this time in the index three and index six case, respectively. */ HodgeDiamondIndex3:=function(G,G0,tau,V1,T1) X1:=chi_phi(G0,V1,T1); X2:=X1^(tau^(-1)); X3:=X1^(tau^(-2)); In:=HodgeDiamondInvarG0(G0,X1,X2,X3); n:=#G; h10:=In[3]/3; h20:=In[2]/3; h30:=In[1]/3; h11:=In[4]/3; h21:=In[5]/3; for g in G0 do h30:=h30+(X1((tau*g)^3)+ X1((tau^2*g)^3))/n; end for; return [h30, h20, h10, h11, h21]; end function; HodgeDiamondIndex6:=function(G,G0,tau,h,V1,T1) G1:=sub; X1:=chi_phi(G1,V1,T1); ResX1:=Restriction(X1, G0); ResX2:=ResX1^(tau^(-1)); ResX3:=ResX1^(tau^(-2)); n:=#G; In:=HodgeDiamondInvarG0(G0,ResX1,ResX2,ResX3); RG1:=Set(G1) diff Set(G0); h10:=In[3]/6; h20:=In[2]/6; h30:=In[1]/6; h11:=In[4]/6+1/2; h21:=In[5]/6; for g in G0 do h30:=h30+(X1((tau*g)^3)+X1((tau^2*g)^3))/n; end for; for f in RG1 do h30:=h30 - (3*X1(f)*X1(tau*(f^2)*tau^(-1)))/n; h20:=h20 - (3*X1(tau*(f^2)*tau^(-1)))/n; h10:=h10 + (3*X1(f))/n; h21:=h21 - (3*ComplexConjugate(X1(f))*X1(tau*(f^2)*tau^(-1)))/n; end for; return [h30, h20, h10, h11, h21]; end function;