Skip to content

Instantly share code, notes, and snippets.

@pjt33
Last active July 16, 2021 09:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pjt33/345b7d70a320887e850b456c9fe04557 to your computer and use it in GitHub Desktop.
Save pjt33/345b7d70a320887e850b456c9fe04557 to your computer and use it in GitHub Desktop.
Searching for periodic hypergeometric functions
In principle, we should derive essentially the same solutions for $(k,l,m)$ as for $(l,k,m)$ by symmetry in the upper arguments,
and for $(k,l,m)$ as for $(-k,-l,-m)$ by effectively negating the sign of $t$.
I haven't implemented negative $l$ or positive $m$ so can't check the latter.
For the former, I see the symmetry correctly observed in many cases but there is the odd troubling exception.
(1,0,-1)
Ideal (x - 2, b0, a0 - b0 + c0 - 1, A - 1)
(0,1,-1)
Ideal (x, a0)
Ideal (a0, A - 1)
It would be as well to understand what's going on here before relying too heavily on these calculations.
----
(-1, 1, -1)
Ideal (x - 1/2, b0 + c0 + 1, a0 + b0 - 1, A - 2)
should, if I've manipulated it correctly, certify the scale-periodicity of 2F1(1-u, u; -1-u; 1/2).
But if I expand that out a bit and tidy it up with WolframAlpha I get 2^{u+1} / (u+1), which is not quite scale-periodic.
This is definite cause for alarm.
from functools32 import lru_cache
var('a,b,c')
Ring0.<a0,b0,c0,x,A> = PolynomialRing(QQ)
Ring1.<t> = PolynomialRing(Ring0)
@lru_cache(None)
def Q(k,l,m):
if m < 0: return (((a+k) * Q(k+1,l,m+1) + (c+m-a-k) * Q(k,l,m+1))/(c+m)).simplify_rational()
if m > 0: raise Exception("Not yet supported")
if l > 0: return (((a+k) * Q(k+1,l-1,m) + (b+l-1-a-k) * Q(k,l-1,m))/(b+l-1)).simplify_rational()
if l < 0: raise Exception("Not yet supported")
if k == 0: return 0
if k == 1: return 1
if k > 0: return (((a+b-c+k-1+(a-b+k-1)*x) * Q(k-1,0,0) + (c-a-k+1) * Q(k-2,0,0))/((a+k-1)*x)).simplify_rational()
return (((a+k+1)*x * Q(k+2,l,m) - (a+b-c+k+2-m+(a+k+1-b-l)*x) * Q(k+1,l,m))/(c+m-a-k-1)).simplify_rational()
def P(k,l,m):
return Q(k-1,l,m).substitute(a == a+1) * (c-a-1)/((a+1)*x)
def periodic_hypergeometric_constraints(k,l,m):
qklm = Q(k,l,m).substitute(a == a0 + k*t, b == b0 + l*t, c == c0 + m*t)
qconstraints = [coeff_exp[0].polynomial(QQ) for coeff_exp in qklm.numerator().coefficients(t)]
pklm = P(k,l,m).substitute(a == a0 + k*t, b == b0 + l*t, c == c0 + m*t)
pconstraints = [coeff_exp[0].polynomial(QQ) for coeff_exp in (pklm.numerator() - A * pklm.denominator()).coefficients(t)]
return ideal(qconstraints + pconstraints).minimal_associated_primes()
for k in range(-5, 6):
for l in range(max(k,0), 6):
for m in range(-5, 1):
try:
prime_ideals = periodic_hypergeometric_constraints(k,l,m)
if not (1 in prime_ideals):
print(k,l,m)
print(prime_ideals)
print("")
except:
print(k,l,m)
print("Calculation failed")
print("")
# Possibly interesting results
I've aggregated and applied some simplifications by hand.
Some of the solutions, particularly those with $z=A=1$, may be trivial on closer analysis.
## $k=l$, $m=0$
The case $(1,1,0)$ had to be done by hand because Sage didn't like the substitutions.
From $Q(1,1,0) = (a + b - c + 1)/(b*x)$ and $P(1,1,0) = -(a - c + 1)/(b*x)$ we get ideal (A*x + 1, a0, b0, c0 - 1) corresponding to
$$F(t+1, t+1; 1; z) = -(1-z)^{-1} F(t, t; 1; z)$$ which is not very interesting per se.
What is interesting is that for larger values of $k=l$ we get solutions which aren't just iterated versions of that one, which seems
to be fairly unusual. Moreover, they have non-unit values of $z$ and $A$. I've suppressed the imprimitive solutions.
(2, 2, 0)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, x - 2, A + 1/4)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, x - 2, A + 1/4)
(3, 3, 0)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, x - 4, 64*A - 1)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, x - 4, 64*A - 1)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, 3*x - 4, 64*A + 27)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, 3*x - 4, 64*A + 27)
(4, 4, 0)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, x^2 - 8*x + 8, 64*A - 6*x + 41)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, x^2 - 8*x + 8, 64*A - 6*x + 41)
(5, 5, 0)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, x^2 - 12*x + 16, 4096*A + 55*x - 576)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, x^2 - 12*x + 16, 4096*A + 55*x - 576)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, 5*x^2 - 20*x + 16, 4096*A - 1375*x + 4000)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, 5*x^2 - 20*x + 16, 4096*A - 1375*x + 4000)
(6, 6, 0)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, x^2 - 16*x + 16, 4096*A - 195*x + 2911)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, x^2 - 16*x + 16, 4096*A - 195*x + 2911)
(7, 7, 0)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, x^3 - 24*x^2 + 80*x - 64, 65536*A - 595*x^2 + 13552*x - 31012)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, x^3 - 24*x^2 + 80*x - 64, 65536*A - 595*x^2 + 13552*x - 31012)
Ideal (c0 - 1/2, 2*a0 - 2*b0 + 1, 7*x^3 - 56*x^2 + 112*x - 64, 65536*A + 17493*x^2 - 122108*x + 155036)
Ideal (c0 - 1/2, 2*a0 - 2*b0 - 1, 7*x^3 - 56*x^2 + 112*x - 64, 65536*A + 17493*x^2 - 122108*x + 155036)
These all correspond to $${}_2F_1(u + k, u + k \pm 1/2; 1/2; 1-x) = A\, {}_2F_1(u, u \pm 1/2; 1/2; 1-x)$$ for arbitrary $u$.
## $z \neq 1$, $A \neq 1$
(-1, 1, -1)
Ideal (x - 1/2, b0 + c0 + 1, a0 + b0 - 1, A - 2)
(1, 2, 0)
Ideal (x - 9, c0 - 2/3, a0 - 1/2*b0 - 1/6, A + 1/27)
(1, 3, 0)
Ideal (x + 8, 2*c0 - 1, 6*a0 - 2*b0 - 1, 64*A - 1)
(2, 3, -1)
Ideal (x - 2, b0 + 3*c0 - 3, a0 + 2*c0 - 2, A + 1)
Ideal (x - 2, b0 + 3*c0 - 1, a0 + 2*c0, A + 1)
## $z \neq 1$, $A = 1$
We have three families which are similar to but slightly less interesting than the case $k=l$, $m=0$.
(-2, 0, 0)
Ideal (x + 1, c0, 2*b0 + 1, A - 1),
(-3, 0, 0)
Ideal (x^2 + x + 1, c0, 3*b0 + x + 2, A - 1)
(-4, 0, 0)
Ideal (x^2 + 1, c0, 2*b0 + x + 1, A - 1)
(-5, 0, 0)
Ideal (x^4 + x^3 + x^2 + x + 1, c0, x^3 + 2*x^2 + 3*x + 4 + 5*b0, A - 1)
(-2, 0, -2)
Ideal (x - 2, b0 - 1, a0 - c0 + 1, A - 1)
(-3, 0, -3)
Ideal (x^2 - 3*x + 3, b0 + x - 2, a0 - c0 + 1, A - 1)
Ideal (x^2 - 3*x + 3, b0 + x - 3, a0 - c0, A - 1)
(-4, 0, -4)
Ideal (x - 2, b0 - 2, a0 - c0, A - 1)
Ideal (x^2 - 2*x + 2, b0 + x - 1, a0 - c0 + 1, A - 1)
Ideal (x^2 - 2*x + 2, b0 + x - 2, a0 - c0, A - 1)
(-5, 0, -5)
Ideal (x^4 - 5*x^3 + 10*x^2 - 10*x + 5, b0 + x^3 - 4*x^2 + 6*x - 4, a0 - c0 + 1, A - 1)
Ideal (x^4 - 5*x^3 + 10*x^2 - 10*x + 5, b0 + x^3 - 4*x^2 + 6*x - 5, a0 - c0, A - 1)
(0, 0, -2)
Ideal (2*x - 1, b0, a0 - 1, A - 1)
(0, 0, -3)
Ideal (3*x^2 - 3*x + 1, b0, a0 - 1, A - 1)
(0, 0, -4)
Ideal (2*x^2 - 2*x + 1, b0, a0 - 1, A - 1)
(0, 0, -5)
Ideal (5*x^4 - 10*x^3 + 10*x^2 - 5*x + 1, b0, a0 - 1, A - 1)
(-3, 0, -1)
Ideal (3*x + 1, 4*b0 + 1, a0 - 3*c0 + 2, A - 1)
(-2, 0, -1)
Ideal (2*x - 1, b0 + 2, a0 - 2*c0 + 1, A - 1)
(-1, 0, -2)
Ideal (x + 1, b0 + 1/2, a0 - 1/2*c0, A - 1)
(0, 2, -1)
Ideal (x + 3, b0 + 2*c0 - 2, 2*a0 - 1, A - 1)
(1, 0, -1)
Ideal (x - 2, b0, a0 + c0 - 1, A - 1)
## $z=1$, $A \neq 1$
(-2, 1, 0)
Ideal (x, 2*c0 - 5, 2*a0 + 4*b0 - 3, A + 1/4)
(-1, 1, 0)
Ideal (x, c0 - 2, a0 + b0 - 1, A + 1)
## $z=1$, $A=1$
Most of these seem to fit into two families:
### $b_0 = 0$
(-5, 0, -1)
Ideal (x, b0, a0 - 5*c0 + 5, A - 1)
(-5, 0, -2)
Ideal (x, b0, 2*a0 - 5*c0 + 5, A - 1)
(-5, 0, -3)
Ideal (x, b0, 3*a0 - 5*c0 + 5, A - 1)
(-5, 0, -4)
Ideal (x, b0, 4*a0 - 5*c0 + 5, A - 1)
(-4, 0, -1)
Ideal (x, b0, a0 - 4*c0 + 4, A - 1)
(-4, 0, -3)
Ideal (x, b0, 3*a0 - 4*c0 + 4, A - 1)
(-3, 0, -1)
Ideal (x, b0, a0 - 3*c0 + 3, A - 1)
(-3, 0, -2)
Ideal (x, b0, 2*a0 - 3*c0 + 3, A - 1)
Conjecture: for all $k < m < 0 = l$ we have a one-parameter family of solutions $b_0 = 0$, $c_0 = m/k a_0 + 1$, $z = A = 1$.
### $b_0 = -2$
(-5, 0, -1)
Ideal (x, b0, a0 - 5*c0, A - 1)
(-5, 0, -2)
Ideal (x, b0, 2*a0 - 5*c0, A - 1)
(-5, 0, -3)
Ideal (x, b0, 3*a0 - 5*c0, A - 1)
(-5, 0, -4)
Ideal (x, b0, 4*a0 - 5*c0, A - 1)
(-4, 0, -1)
Ideal (x, b0, a0 - 4*c0, A - 1)
(-4, 0, -3)
Ideal (x, b0, 3*a0 - 4*c0, A - 1)
(-3, 0, -1)
Ideal (x, b0, a0 - 3*c0, A - 1)
(-3, 0, -2)
Ideal (x, b0, 2*a0 - 3*c0, A - 1)
Conjecture: for all $k < m < 0 = l$ we have a one-parameter family of solutions $b_0 = -2$, $c_0 = m/k a_0$, $z = A = 1$.
### Sporadic
(-2, 0, -1)
Ideal (x, a0 + b0 - 2*c0 + 2, A - 1)
This specialises to the above cases $b_0 = 0$ and $b_0 = -2$ but admits a more general solution.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment