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?