/* ===================================================================================================== This file contains functions to determine the cohomology of a crepant terminalization Xhat of a product quotient threefold with terminal singularities. The cases where Xhat is smooth and Xhat is singular are distinguished. ===================================================================================================*/ load "Isogenous/SubIso/HodgeDiamond.magma"; /* The function "HodgeDiamondCrepantRes" is used to determine the Hodge diamond of a crepant resolution of a product quotient threefold X with Gorenstein singularities. This is the case where Xhat is smooth. Recall that the Hodge numbers h^{p,0}, for p=3,2 and 1 are given, like in the case of threefolds isogenous to a product, as the inner product of chi_{p,0} with the trivial character of G (see Proposition 4.3.5). Therefore, we can use the function "HodgeDiamondUnmixed" to determine these invariants. The same is true for h^{2,1}, according to Corollary 5.0.4, in contrast to h^{1,1}, where we need to add the correction term (m-1)/2 for each singularity of X of type 1/m(1,a,m-a-1). */ HodgeDiamondCrepantRes:=function(G,V1,V2,V3,T1,T2,T3,BaskGor) HD:=HodgeDiamondUnmixed(G,V1,V2,V3,T1,T2,T3); h30:=HD[1]; h20:=HD[2]; h10:=HD[3]; h21:=HD[5]; h11:=HD[4]; for S in BaskGor do m:=Denominator(S); h11 :=h11 + (m-1)/2; end for; return [h30,h20,h10,h11,h21]; end function; /* The function "InvProductQuotient" is used to determine the invariants "pg, q2, q1" and the topological Euler number of a crepant terminalisation Xhat, in the case where Xhat is not smooth. As above, the invariants "pg, q2, q1" are given by the inner product of chi_{p,0} with the trivial character. To compute the topological Euler number of Xhat, we use the formula from Proposition 4.3.3. */ InvProductQuotient:=function(G,V1,V2,V3,T1,T2,T3,BaskTer,BaskGor,BaskTypeIII,Vol) HD:=HodgeDiamondUnmixed(G,V1,V2,V3,T1,T2,T3); pg:=HD[1]; q2:=HD[2]; q1:=HD[3]; ec:=-Vol/6; for S in BaskGor do m:=Denominator(S); ec:=ec + m - 1/m; end for; for S in BaskTer do m:=Denominator(S); ec :=ec + 1 - 1/m; end for; for S in BaskTypeIII do if S[1] eq 9 then ec :=ec + 26/9; else ec :=ec + 97/14; end if; end for; return [pg,q2,q1,ec]; end function;