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?


1 Answer 1


An observation rather than an answer: interestingly,

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

produces this:

enter image description here

Seemingly Mathematica recognizes that one indeed gets zero along these circular arcs...


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.