Implement the cup product and Poincar pairing needed for pushforward/pullback computations. For basis vectors eie_iei, computing integrals Yeiej\int_Y e_i\cup e_jYeiej uses the Gram matrix on H2H^2H2 and known pairings on H0,H4H^0,H^4H0,H4.
Implement cup and push_forward as linear maps on the chosen bases (in practice these are matrix operations).
Step 4 --- Encode candidate correspondences as cohomology classes
For each candidate ZZZ:
A. Diagonal / small diagonal
The cohomology class of \Delta is the identity tensor ieiei\sum_i e_i\otimes e_iieiei (plus extreme corrections). Compute its coordinates in the NS/T-split basis and extract the TT block.
B. Graphs of automorphisms \Gamma_\sigma
If \sigma is known explicitly and its action on H2H^2H2 is available (matrix MM_\sigmaM in NST basis), then the class [][\Gamma_\sigma][] corresponds to the tensor encoding MM_\sigmaM (roughly i,j(M)jieiej\sum_{i,j}(M_\sigma)_{ji}\, e_i\otimes e_ji,j(M)jieiej). Compute projection to TT.
C. FM kernels / composed kernels K\mathcal KK
From Mukai data: compute ch(P)\operatorname{ch}(\mathcal P)ch(P), then use push--pull formula to obtain the cohomology class cl(K)H(YY)\operatorname{cl}(\mathcal K)\in H^*(Y\times Y)cl(K)H(YY). In practice, one computes the action K\Phi_{\mathcal K}K on cohomology and then reconstructs the corresponding tensor in H2H2H^2\otimes H^2H2H2 by evaluating K(ei)\Phi_{\mathcal K}(e_i)K(ei) coordinates.
Extract the 222\times222 block of K\Phi_{\mathcal K}K acting on TTT.
D. Shioda--Inose / Kummer transfers
Given the explicit pushforward/pullback maps between the abelian surface AAA and YYY, compute the images of abelian cycles; express pushed cycles in the NS/T basis. Extract TT components.
Step 5 --- Project to the TTT\otimes TTT subspace
For each class [Z][Z][Z] represented as a coordinate vector in the H2H2H^2\otimes H^2H2H2 basis, extract the 4 coordinates corresponding to t1t1,t1t2,t2t1,t2t2t_1\otimes t_1, t_1\otimes t_2, t_2\otimes t_1, t_2\otimes t_2t1t1,t1t2,t2t1,t2t2.
If you prefer symmetric basis, convert to symmetric coordinates (e.g. t1t2+t2t1t_1\otimes t_2 + t_2\otimes t_1t1t2+t2t1) depending on whether you're tracking symmetric tensors only.
Step 6 --- Linear-algebra test (span)
Assemble a matrix MMM whose columns are the 4-vectors from each candidate ZkZ_kZk.
Compute rank(M) over Q\mathbb QQ (use exact rational arithmetic where possible).
If rank(M) = 4 the selected candidates (collectively) produce a full spanning set of TTT\otimes TTT (heuristic success).
If rank(M) < 4 iterate: add more candidates (other automorphisms, other FM kernels, small-diagonal corrections, twisted kernels), or test different K3s.
Step 7 --- Validation checks
Verify symmetries: for correspondences coming from algebraic cycles the resulting tensors should respect Poincar duality and (for Hodge) type constraints.
Check compatibility with Mukai pairing if using FM kernels (e.g. verify isometry properties for derived equivalences).
When using numeric approximations (period integrals), repeat with higher precision to ensure rank stability.
4. Software snippets / pseudo-code (Sage/Python style)
Below is a compact pseudocode sketch to implement Steps 3--6 (details to be implemented with exact library calls):