### Example 6.1 (A Curve of Critical Points)¶

A lattice path model with an infinite number of critical points.
Requirements: None

In :
# Define the characteristic polynomial and denominator H for the lattice path model
var('x,y,z,t')
ST = [(0,i,j) for i in [-1,1] for j in [-1,1]]
ST += [(i,0,j) for i in [-1,1] for j in [-1,1]]
ST += [(i,j,0) for i in [-1,1] for j in [-1,1]]
S = add(x^i*y^j*z^k for (i,j,k) in ST)
H = 1 - t*x*y*z*S
H

Out:
-(x*y + x*z + y*z + x/y + y/x + x/z + y/z + z/x + z/y + 1/(x*y) + 1/(x*z) + 1/(y*z))*t*x*y*z + 1
In :
# Solve the smooth critical point equations for the main diagonal direction
CPeqs = [H] + [diff(H,x)*x - diff(H,v)*v for v in [y,z,t]]
CPs = solve(CPeqs,[x,y,z,t])
CPs

Out:
[[x == 1, y == 1/4/r1, z == -1, t == r1], [x == 1, y == -1, z == 1/4/r2, t == r2], [x == -1, y == 1/4/r3, z == 1, t == r3], [x == -1, y == 1, z == 1/4/r4, t == r4], [x == 1/4/r5, y == -1, z == 1, t == r5], [x == 1/4/r6, y == 1, z == -1, t == r6], [x == 1, y == 1, z == -1, t == (1/4)], [x == 1, y == -1, z == 1, t == (1/4)], [x == 1, y == 1, z == 1, t == (1/12)], [x == -1, y == -1, z == 1, t == (-1/4)], [x == -1, y == 1, z == -1, t == (-1/4)], [x == -1, y == -1, z == -1, t == (-1/12)]]
In :
# We get the two isolated minimal critical points
show(list(filter(lambda L: abs(t.subs(L))== 1/12, CPs)))

In :
# And the curves of non-minimal critical points
# (note that some points are represented multiple times)
show(list(filter(lambda L: abs(t.subs(L)) != 1/12, CPs)))

In [ ]: