# Reliable testing of identities (example: modular functions)

Take, for illustration, the following function (bonus points for anyone who identifies where it comes from!), defined on the upper half plane:

$Assumptions = Im[τ]>0 z[τ_] = Sum[Abs[EllipticTheta[a, 0, E^(I π τ)]],{a, 2, 4}]/ (2 Abs[DedekindEta[τ]]) // FullSimplify  Now, it happens that this function is modular invariant, which means that$z(\tau+1)=z(-1/\tau)=z(\tau)\$. Now it's unsurprising that Mathematica doesn't recognise these identities using FullSimplify. But one might hope that there is another way to check and search for these and similar identities.

An obvious approach is to use PossibleZeroQ, for example:

 PossibleZeroQ[z[-1/τ] - z[τ], Assumptions -> Im[τ] > 0]


But this evaluates to False! Let's just check that we're not doing something silly by choosing some random point and checking the identity to high accuracy:

N[z[-1/τ] - z[τ] /. τ -> Sqrt[π] + 3/17 I, {Infinity, 1000}]


evaluates to zero to the given accuracy. That's convincing evidence to me!

So: what's going wrong with PossibleZeroQ? And how to write a decent identity checking function?

ContourPlot[z[x + I y] - z[-1/(x + I y)], {x, -1, 1}, {y, .001, 1}, 