Authors: Jacob Cable, Hendrik Suess
Views : 103
Description: On the classification of Kähler-Ricci solitons on Gorenstein del Pezzo surfaces: Calculations for threefolds

# On the classificiation of Kähler-Ricci solitons on Gorenstein del Pezzo surfaces

Calculation for the preprint arXiv:1705.02920.

### List of smooth Fano threefolds with 2-torus action

1. Q
2. 2.24
3. 2.29
4. 2.30
5. 2.31
6. 2.32
7. 3.8
8. 3.10
9. 3.18
10. 3.19
11. 3.20
12. 3.21
13. 3.22
14. 3.23
15. 3.24
16. 4.4
17. 4.5
18. 4.7
19. 4.8
%auto
%hide
# The function degenerations:
# Returns the list of degneration polytopes of given combinatorial data of a T-variety.
# Takes inputs L and B, where L is a list of matrices and B is the base polytope.
# Each matrix in L represents a piecewise affine function on B in the following way:

#Suppose $v_j$ are the columns of $M$ in the list $L$. We then form the piecewise affine function
# $\phi_M(x_1,\dots,x_n) := \min_j \{ (1,x_1,x_2,\dots,x_n) \cdot v_j \}$.

def degenerations(L,B):
dim = L.nrows()
genericfunction = matrix(QQ, dim, 1, lambda i, j: 0)
L = L +[genericfunction]
def shift(A,r):
shift = matrix(QQ,  A.transpose().nrows() , 1, lambda i, j: r);
zeroes = matrix(QQ, A.transpose().nrows(), A.nrows() -1 , lambda i, j: 0);
return A + shift.augment(zeroes).transpose()
def minsum(L):
msCurrent = L
def minsum_step(A1,A2):
C = matrix(QQ,A2.nrows(),1,lambda i, j: 0)
for c in A1.columns():
for d in A2.columns():
C = C.augment(d+c);
return C.delete_columns()
for l in L[1:]:
msCurrent = minsum_step(msCurrent,l)
return msCurrent
def degenerations_step(L,k,B):
up = shift(L[k],1)
base = matrix(QQ, B.inequalities_list()[:]);
low = L[:]; low.pop(k);
low = minsum(low).transpose();
up = up.transpose()
base = base.augment(matrix(QQ,  base.nrows() , 1, lambda i, j: 0)).transpose()
up = up.augment(matrix(QQ, up.nrows(), 1, lambda i, j: -1)).transpose()
low = low.augment(matrix(QQ, low.nrows(), 1, lambda i, j: 1)).transpose()
low = shift(low,1)
P = Polyhedron(ieqs = [list(v) for v in up.augment(low.augment(base)).columns()])
return P;
Polyhedra = [];
for k in range(len(L)):
Polyhedra = Polyhedra + [degenerations_step(L,k,B)];
return Polyhedra

def projection(P,F):
A = F.as_polyhedron().equations().A()
b = F.as_polyhedron().equations().b()
A = list(A)
B=vector(QQ,A)
B=denominator(B)*B
A = list(B)
B = matrix(ZZ,B)
K = B.right_kernel()
if P.dimension() == 1:
K= matrix(ZZ,)
else:
K = matrix(ZZ,K.basis())
return [K,A]

def acoeff(F,c):
v_0 = F.vertices().vector(); v_0
return exp(c.dot_product(v_0))

def bcoeff(F,v):
u_0 = F.vertices().vector()
return v.dot_product(u_0)

def relvolume(P):
if P.dimension() == 0:
return 1
else:
return P.volume()

# The function intexp:
# Calculates the integral of exp(c*x) dx over the polyhedron P recursively using the Barvinok method. Input is a polyhedron P,
# a sufficiently general vector L (not orthogonal, after projection, to c or any face of P at any stage of the recursion),
# and a vector c for the integrand. To optimize performance values obtained at faces are cached along the way.
def intexp(P,L,c,face=None, cache=None):
if face is None: face = tuple(range(P.n_vertices()))
if cache is None:
cache = {}
if cache.has_key(frozenset(face)):
return cache[frozenset(face)]
I = 0
if c.is_zero():
cache[face]= relvolume(P)
return relvolume(P)
else:
for F in P.faces(P.dimension() -1):
ProjMatrix,A = projection(P,F)
n_F = -F.ambient_Hrepresentation().A()
n_F = n_F/gcd(n_F)
coeff = acoeff(F,c)*(1/L.dot_product(c))*(L.dot_product(n_F))
c_F = ProjMatrix*c
L_F = ProjMatrix.insert_row(0,vector(ZZ,A)).transpose().solve_right(L)[1:]
v_0 = F.vertices().vector(); v_0
Vert = [ProjMatrix.transpose().solve_right(v.vector() - v_0)  for v in F.vertices() ]
face_F = tuple([face[i] for i in F._ambient_Vrepresentation_indices])
P_F = Polyhedron(vertices = Vert, backend="cdd")
I = I + coeff*intexp(P_F,L_F,c_F,face_F,cache)
cache[frozenset(face)]=I
return I

# The function intxexp:
# Calculates the integral of <x,v>*exp(<x,c>) dx over the polyhedron P recursively using the Barvinok method. Input is a polyhedron P,
# a sufficiently general vector L (not orthogonal, after projection, to c or any face of P at any stage of the recursion),
# and vectors c and v for the integrand. To optimize performance values obtained at faces are cached along the way.
def intxexp(P,L,c,v,face=None,cache=None,cache2=None):
if face is None: face = tuple(range(P.n_vertices()))
if cache2 is None:
cache2 = {}
if cache is None:
cache = {}
if cache.has_key(frozenset(face)):
return cache[frozenset(face)]
I = 0
if c.is_zero():
if v.is_zero() : return 0
for T in list(P.triangulate()):
T = [P.Vrepresentation()[ZZ(t)].vector() for t in T]
bary = sum(T)/len(T)
T = Polyhedron(vertices = T)
I = I + T.volume()*bary.dot_product(v)
else:
for F in P.faces(P.dimension() -1):
ProjMatrix = projection(P,F)
L_F  = ProjMatrix.insert_row(0,vector(ZZ,ProjMatrix)).transpose().solve_right(L)[1:]
c_F = ProjMatrix*c
v_F = ProjMatrix*v
v_0 = F.vertices().vector(); v_0
Vert = [ProjMatrix.transpose().solve_right(w.vector() - v_0)  for w in F.vertices() ]
face_F = tuple([face[i] for i in F._ambient_Vrepresentation_indices])
P_F = Polyhedron(vertices = Vert,backend="cdd")
n_F = -F.ambient_Hrepresentation().A()
n_F = n_F/gcd(n_F)
I = I + (L.dot_product(n_F)/L.dot_product(c))*acoeff(F,c)*(intxexp(P_F,L_F,c_F,v_F,face_F,cache,cache2) + bcoeff(F,v)*intexp(P_F,L_F,c_F,face_F,cache2)) - L.dot_product(n_F)*(v.dot_product(L)/(L.dot_product(c)^2))*acoeff(F,c)*intexp(P_F,L_F,c_F,face_F,cache2)
cache[frozenset(face)]=I
return I

%md Here some helper functions are defined. These are degenerations() for calculating the toric special fibres of the test configurations and intxexp() to solve the integrals $\int_\Delta \langle u, v \rangle e^{\langle u, \xi \rangle} du$ analytically. <br> **Click &#x25B8; on the left to unhide.**



Here some helper functions are defined. These are degenerations() for calculating the toric special fibres of the test configurations and intxexp() to solve the integrals $\int_\Delta \langle u, v \rangle e^{\langle u, \xi \rangle} du$ analytically.
Click ▸ on the left to unhide.

#### No. 2.30

The combinatorial data is is given by $\Box= \text{conv} (\, (-3,0),(-2,1),(2,1),(3,0),(0,-3) \, )$ and $\Phi_0(x,y) = \min \{0,-x\},\; \Phi_1(x,y)= \min \{0,y\},\; \Phi_\infty(x,y) = \frac{x-y-1}{2}$.

# We are working with interval arithmetic with precision of 16 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(16)

Polyhedron()

# The base polytope
B=Polyhedron(vertices = [[-3,0],[-2,1],[2,1],[3,0],[0,-3]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[0,-1,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[0,0,1]]).transpose()
Phi3 = matrix(QQ,[[-1/2,1/2,-1/2]]).transpose()

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -x\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, y\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \frac{1}{2} \, x - \frac{1}{2} \, y - \frac{1}{2}$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this note, that $\left(\begin{smallmatrix}-1 & 0\\ 0 & 1\end{smallmatrix}\right)$ is a symmetry of the combinatorial data. Hence, we have $\xi=(0,\xi_2)$. We have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, (0,\xi_2) \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (0,\xi_2,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for lambda
Lambda = vector([1,3,13])

# Analytic solution of the integral
F1(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([1,0,0])).simplify_full()
F2(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([0,1,0])).simplify_full()

show(vector([F1,F2]))

$\displaystyle \xi_{2} \ {\mapsto}\ \left(0,\,\frac{{\left({\left(2 \, \xi_{2}^{3} - 3 \, \xi_{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} + 12 \, \xi_{2} e^{\left(3 \, \xi_{2}\right)} + 3 \, \xi_{2} + 3\right)} e^{\left(-3 \, \xi_{2}\right)}}{\xi_{2}^{4}}\right)$

#### Step (ii) -- find an estimate for the soliton candidate vector field $\xi$.

# Choose upper and lower bound and
# hope that the exact solution lies in between
lower = 0.514
upper = 0.515

#define a real value xi_RIF between xi_1 and xi_2
# representing the exact solution.
xi_RIF = RIF(lower,upper)

# Check whether Intermediate value theorem guarantees a zero beween
# lower and upper, i.e evaluate F2 at lower and upper using interval arithmetic.
if RIF(F2(lower)) < 0 and RIF(F2(upper)) > 0:
print "Interval containing solution:", xi_RIF.str(style='brackets')

Interval containing solution: [0.513992 .. 0.515015]

#### Step (iii) & (iv) -- obtain closed forms for $\operatorname{DF}_\xi(X_{y,0,1})$ and plug in the estimate for $\xi$

For this we first have to symbolically solve the integrals
$h_y(\xi) := \text{vol}(\Delta_y) \cdot \operatorname{DF}_\xi(\mathcal{X}_{y,0,1})=\int_{\Delta_y} \langle u, (0,0,1) \, \rangle e^{\langle u, (\xi,0) \rangle } \; du$
for every (admissible) choice of $y \in \mathbb P^1$ and then plug in the estimate for $\xi$ into the resulting expression.

#storage for the functions h_y
H=[]
#storage for values h_y(xi) (as intervals)
Ih=[]

#Symbollically solving integrals using Barvinok method
for P in Polyhedra:
h(xi_2) = intxexp(P,Lambda,vector([0,xi_2,0]),vector([0,0,1])).simplify_full()
DF=RIF(h(xi_RIF))
H.append(h); Ih.append(DF)
show(h(xi_2) >= DF.lower())

if all([h > 0 for h in Ih]):
print("Threefold is stable!")
else:
if any([h <= 0 for h in Ih]):
print("Threefold is not stable!")

# print upper bound for destablising DF value
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
else:
print("Cannot determine stability")
# Note, that "not a > 0" does not imply "a <= 0" for intervals

$\displaystyle \frac{{\left({\left(2 \, \xi_{2}^{3} - 3 \, \xi_{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} + 3 \, {\left(3 \, \xi_{2}^{2} + 2\right)} e^{\left(3 \, \xi_{2}\right)} - 3 \, \xi_{2} - 3\right)} e^{\left(-3 \, \xi_{2}\right)}}{3 \, \xi_{2}^{4}} \geq 1.087$
$\displaystyle \frac{{\left({\left(8 \, \xi_{2}^{3} + 6 \, \xi_{2}^{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} - 12 \, {\left(3 \, \xi_{2}^{2} - 3 \, \xi_{2} + 1\right)} e^{\left(3 \, \xi_{2}\right)} + 12 \, \xi_{2} + 15\right)} e^{\left(-3 \, \xi_{2}\right)}}{6 \, \xi_{2}^{4}} \geq 2.178$
$\displaystyle -\frac{{\left(2 \, {\left(2 \, \xi_{2}^{3} - 3 \, \xi_{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} - 3 \, {\left(3 \, \xi_{2}^{2} - 12 \, \xi_{2} + 2\right)} e^{\left(3 \, \xi_{2}\right)} + 12 \, \xi_{2} + 12\right)} e^{\left(-3 \, \xi_{2}\right)}}{6 \, \xi_{2}^{4}} \geq 0.4465$
$\displaystyle \frac{{\left({\left(8 \, \xi_{2}^{3} + 6 \, \xi_{2}^{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} - 3 \, {\left(3 \, \xi_{2}^{2} - 2\right)} e^{\left(3 \, \xi_{2}\right)} - 6 \, \xi_{2} - 3\right)} e^{\left(-3 \, \xi_{2}\right)}}{6 \, \xi_{2}^{4}} \geq 4.151$
Threefold is stable!

#### No. 2.31

The combinatorial data is is given by $\Box= \text{conv} (\,(-3,0),(-1,2),(0,2),(2,0),(2,-1),(0,-3) \, )$ and $\Phi_0(x,y) = \min \{0,-x\},\; \Phi_1(x,y)= \min \{0,y\} ,\; \Phi_\infty(x,y) = \min \{-y, \frac{x-y-1}{2} \}$.

# We are working with interval arithmetic with precision of 60 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(60)

# The base polytope
B=Polyhedron(vertices = [[-3,0],[-1,2],[0,2],[2,0],[2,-1],[0,-3]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[0,-1,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[0,0,1]]).transpose()
Phi3 = matrix(QQ,[[-1/2,1/2,-1/2],[0,0,-1]]).transpose()

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -x\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, y\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(\frac{1}{2} \, x - \frac{1}{2} \, y - \frac{1}{2}, -y\right)$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this note, that $\left(\begin{smallmatrix} 0 & 1\\ 1 & 0\end{smallmatrix}\right)$ is a symmetry of the combinatorial data. Hence, we have $\xi=(\xi_1,\xi_1)$. We have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, \xi \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (\xi,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for lambda
Lambda = vector([1,3,13])

# Analytic solution of the integral
F1(xi_1) = intxexp(Polyhedra,Lambda,vector([xi_1,xi_1,0]),vector([1,-1,0])).simplify_full()
F2(xi_1) = intxexp(Polyhedra,Lambda,vector([xi_1,xi_1,0]),vector([1,1,0])).simplify_full()

show(vector([F1,F2]))

$\displaystyle \xi_{1} \ {\mapsto}\ \left(0,\,-\frac{{\left(9 \, \xi_{1}^{2} - 8 \, {\left(\xi_{1}^{2} - \xi_{1}\right)} e^{\left(5 \, \xi_{1}\right)} + {\left(3 \, \xi_{1}^{2} - 5 \, \xi_{1} - 3\right)} e^{\left(4 \, \xi_{1}\right)} + 9 \, \xi_{1} + 3\right)} e^{\left(-3 \, \xi_{1}\right)}}{2 \, \xi_{1}^{4}}\right)$

#### Step (ii) -- find an estimate for the soliton candidate vector field $\xi$.

# Choose upper and lower bound and
# hope that the exact solution lies in between
lower = 0.285497
upper = 0.285507

#define a real value xi_RIF between xi_1 and xi_2
# representing the exact solution.
xi_RIF = RIF(lower,upper)

# Check whether Intermediate value theorem guarantees a zero beween
# lower and upper, i.e evaluate F2 at lower and upper using interval arithmetic.
if RIF(F2(lower)) < 0 and RIF(F2(upper)) > 0:
print "Interval containing solution:", xi_RIF.str(style='brackets')

Interval containing solution: [0.28549700000000000077 .. 0.28550700000000001078]

#### Step (iii) & (iv) -- obtain closed forms for $\operatorname{DF}_\xi(X_{y,0,1})$ and plug in the estimate for $\xi$

For this we first have to symbolically solve the integrals
$h_y(\xi) := \text{vol}(\Delta_y) \cdot \operatorname{DF}_\xi(\mathcal{X}_{y,0,1})=\int_{\Delta_y} \langle u, (0,0,1) \, \rangle e^{\langle u, (\xi,0) \rangle } \; du$
for every (admissible) choice of $y \in \mathbb P^1$ and then plug in the estimate for $\xi$ into the resulting expression.

#storage for the functions h_y
H=[]
#storage for values h_y(xi) (as intervals)
Ih=[]

#Symbollically solving integrals using Barvinok method
for P in Polyhedra:
h(xi_2) = intxexp(P,Lambda,vector([xi_2,xi_2,0]),vector([0,0,1])).simplify_full()
DF=RIF(h(xi_RIF))
H.append(h); Ih.append(DF)
show(h(xi_2) >= DF.lower())

if all([h > 0 for h in Ih]):
print("Threefold is stable!")
else:
if any([h <= 0 for h in Ih]):
print("Threefold is not stable!")

# print upper bound for destablising DF value
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
else:
print("Cannot determine stability")
# Note, that "not a > 0" does not imply "a <= 0" for intervals

$\displaystyle \frac{{\left(12 \, \xi_{2}^{2} + {\left(4 \, \xi_{2}^{2} + 2 \, \xi_{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} + 10 \, \xi_{2} + 3\right)} e^{\left(-3 \, \xi_{2}\right)}}{8 \, \xi_{2}^{4}} \geq 1.9509141924719432$
$\displaystyle -\frac{{\left(6 \, \xi_{2}^{2} - 16 \, {\left(\xi_{2}^{2} - \xi_{2}\right)} e^{\left(5 \, \xi_{2}\right)} + {\left(2 \, \xi_{2}^{2} - 12 \, \xi_{2} - 3\right)} e^{\left(4 \, \xi_{2}\right)} + 8 \, \xi_{2} + 3\right)} e^{\left(-3 \, \xi_{2}\right)}}{8 \, \xi_{2}^{4}} \geq 1.9410579647693613$
$\displaystyle \frac{{\left(3 \, \xi_{2}^{2} - {\left(3 \, \xi_{2}^{2} + 4 \, \xi_{2} + 2\right)} e^{\left(4 \, \xi_{2}\right)} + 4 \, \xi_{2} + 4 \, e^{\left(5 \, \xi_{2}\right)} - 4 \, e^{\left(3 \, \xi_{2}\right)} + 2\right)} e^{\left(-3 \, \xi_{2}\right)}}{4 \, \xi_{2}^{4}} \geq 0.46321187855599842$
$\displaystyle \frac{{\left(6 \, \xi_{2}^{2} + 4 \, {\left(2 \, \xi_{2}^{2} - 2 \, \xi_{2} + 1\right)} e^{\left(5 \, \xi_{2}\right)} - {\left(2 \, \xi_{2}^{2} - 3 \, \xi_{2} + 2\right)} e^{\left(4 \, \xi_{2}\right)} + 5 \, \xi_{2} - 4 \, e^{\left(3 \, \xi_{2}\right)} + 2\right)} e^{\left(-3 \, \xi_{2}\right)}}{4 \, \xi_{2}^{4}} \geq 4.3703749450045975$
Threefold is stable!

#### No. 3.8*

The combinatorial data is is given by $\Box= \text{conv} (\,(-2,-1),(-2,1),(1,1),(3,-1),(3,-2),(-1,-2) \, )$ and $\Phi_0(x,y) = \min \{0,\frac{-x-1}{2}\},\; \Phi_1(x,y)= \min \{0,\frac{-y-1}{2}\} ,\; \Phi_\infty(x,y) = \min \{0, \frac{x+y-1}{2}\}$.

# We are working with interval arithmetic with precision of 60 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(60)

# The base polytope
B=Polyhedron(vertices = [[-2,-1],[-2,1],[1,1],[3,-1],[3,-2],[-1,-2]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[-1/2,-1/2,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[-1/2,0,-1/2]]).transpose()
Phi3 = matrix(QQ,[[0,0,0],[-1/2,1/2,1/2]]).transpose();

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -\frac{1}{2} \, x - \frac{1}{2}\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -\frac{1}{2} \, y - \frac{1}{2}\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, \frac{1}{2} \, x + \frac{1}{2} \, y - \frac{1}{2}\right)$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this note, that $\left(\begin{smallmatrix}-1 & -1\\ 0 & 1\end{smallmatrix}\right)$ is a symmetry of the combinatorial data. Hence, we have $\xi=(0,\xi_2)$. We have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, \xi \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (\xi,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for lambda
Lambda = vector([1,5,13])

# Analytic solution of the integral
F1(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([1,0,0])).simplify_full()
F2(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([0,1,0])).simplify_full()

show(vector([F1,F2]))

$\displaystyle \xi_{2} \ {\mapsto}\ \left(-\frac{{\left({\left(2 \, \xi_{2}^{2} - \xi_{2} - 2\right)} e^{\left(3 \, \xi_{2}\right)} + 5 \, {\left(\xi_{2} + 2\right)} e^{\xi_{2}} - 8 \, \xi_{2} - 8\right)} e^{\left(-2 \, \xi_{2}\right)}}{4 \, \xi_{2}^{3}},\,\frac{{\left({\left(2 \, \xi_{2}^{2} - \xi_{2} - 2\right)} e^{\left(3 \, \xi_{2}\right)} + 5 \, {\left(\xi_{2} + 2\right)} e^{\xi_{2}} - 8 \, \xi_{2} - 8\right)} e^{\left(-2 \, \xi_{2}\right)}}{2 \, \xi_{2}^{3}}\right)$

#### Step (ii) -- find an estimate for the soliton candidate vector field $\xi$.

# Choose upper and lower bound and
# hope that the exact solution lies in between
find_root(F2,-10,10)

lower = 0.799716
upper = 0.799717

#define a real value xi_RIF between xi_1 and xi_2
# representing the exact solution.
xi_RIF = RIF(lower,upper)

# Check whether Intermediate value theorem guarantees a zero beween
# lower and upper, i.e evaluate F2 at lower and upper using interval arithmetic.
if RIF(F2(lower)) < 0 and RIF(F2(upper)) > 0:
print "Interval containing solution:", xi_RIF.str(style='brackets')

0.7997160277154249 Interval containing solution: [0.79971599999999998242 .. 0.79971700000000001119]

#### Step (iii) & (iv) -- obtain closed forms for $\operatorname{DF}_\xi(X_{y,0,1})$ and plug in the estimate for $\xi$

For this we first have to symbolically solve the integrals
$h_y(\xi) := \text{vol}(\Delta_y) \cdot \operatorname{DF}_\xi(\mathcal{X}_{y,0,1})=\int_{\Delta_y} \langle u, (0,0,1) \, \rangle e^{\langle u, (\xi,0) \rangle } \; du$
for every choice of $y \in \mathbb P^1$ and then plug in the estimate for $\xi$ into the resulting expression.

#storage for the functions h_y
H=[]
#storage for values h_y(xi) (as intervals)
Ih=[]

#Symbollically solving integrals using Barvinok method
for P in Polyhedra:
h(xi_2) = intxexp(P,Lambda,vector([0,xi_2,0]),vector([0,0,1])).simplify_full()
DF=RIF(h(xi_RIF))
H.append(h); Ih.append(DF)
show(h(xi_2) >= DF.lower())

if all([h > 0 for h in Ih]):
print("Threefold is stable!")
else:
if any([h <= 0 for h in Ih]):
print("Threefold is not stable!")

# print upper bound for destablising DF value
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
else:
print("Cannot determine stability")
# Note, that "not a > 0" does not imply "a <= 0" for intervals

$\displaystyle \frac{{\left({\left(2 \, \xi_{2}^{2} - 1\right)} e^{\left(2 \, \xi_{2}\right)} + 2 \, \xi_{2} + 1\right)} e^{\left(-\xi_{2}\right)}}{4 \, \xi_{2}^{3}} \geq 0.87460114755231644$
$\displaystyle \frac{{\left(48 \, \xi_{2}^{2} - {\left(5 \, \xi_{2}^{3} - 9 \, \xi_{2}^{2} - 12 \, \xi_{2}\right)} e^{\left(3 \, \xi_{2}\right)} - 6 \, {\left(10 \, \xi_{2}^{2} + 5 \, \xi_{2} + 1\right)} e^{\xi_{2}} + 24 \, \xi_{2} + 6\right)} e^{\left(-2 \, \xi_{2}\right)}}{24 \, \xi_{2}^{4}} \geq 0.92008662275004536$
$\displaystyle \frac{{\left({\left(2 \, \xi_{2}^{2} - 1\right)} e^{\left(2 \, \xi_{2}\right)} + 2 \, \xi_{2} + 1\right)} e^{\left(-\xi_{2}\right)}}{4 \, \xi_{2}^{3}} \geq 0.87460114755231644$
$\displaystyle \frac{{\left(48 \, \xi_{2}^{2} + {\left(19 \, \xi_{2}^{3} + 9 \, \xi_{2}^{2}\right)} e^{\left(3 \, \xi_{2}\right)} - 6 \, {\left(6 \, \xi_{2}^{2} + 3 \, \xi_{2} + 1\right)} e^{\xi_{2}} + 24 \, \xi_{2} + 6\right)} e^{\left(-2 \, \xi_{2}\right)}}{24 \, \xi_{2}^{4}} \geq 2.6692906048111306$
Threefold is stable!

#### No. 3.18

The combinatorial data is is given by $\Box= \text{conv} (\,(-3,0),(-2,1),(2,1),(3,0),(1,-2),(-1,-2) \, )$ and $\Phi_0(x,y) = \min \{0,\frac{-x-1}{2},-x\},\; \Phi_1(x,y)= \min \{ 0,y\} ,\; \Phi_\infty(x,y) = \frac{x-y-1}{2}$.

# We are working with interval arithmetic with precision of 60 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(16)

# The base polytope
B=Polyhedron(vertices = [[-3,0],[-2,1],[2,1],[3,0],[1,-2],[-1,-2]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[-1/2,-1/2,0],[0,-1,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[0,0,1]]).transpose()
Phi3 = matrix(QQ,[[-1/2,1/2,-1/2]]).transpose();

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -\frac{1}{2} \, x - \frac{1}{2}, -x\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, y\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \frac{1}{2} \, x - \frac{1}{2} \, y - \frac{1}{2}$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this note, that $\left(\begin{smallmatrix}-1 & 0\\ 0 & 1\end{smallmatrix}\right)$ is a symmetry of the combinatorial data. Hence, we have $\xi=(0,\xi_2)$. We have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, \xi \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (\xi,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for lambda
Lambda = vector([1,3,13])

# Analytic solution of the integral
F1(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([1,0,0])).simplify_full()
F2(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([0,1,0])).simplify_full()

show(vector([F1,F2]))

$\displaystyle \xi_{2} \ {\mapsto}\ \left(0,\,-\frac{{\left(4 \, \xi_{2}^{2} - {\left(3 \, \xi_{2}^{3} + \xi_{2}^{2} - 6 \, \xi_{2} - 6\right)} e^{\left(3 \, \xi_{2}\right)} - 24 \, \xi_{2} e^{\left(2 \, \xi_{2}\right)} - 6\right)} e^{\left(-2 \, \xi_{2}\right)}}{2 \, \xi_{2}^{4}}\right)$

#### Step (ii) -- find an estimate for the soliton candidate vector field $\xi$.

# Choose upper and lower bound and
# hope that the exact solution lies in between
lower = 0.3796905
upper = 0.3797005

#define a real value xi_RIF between xi_1 and xi_2
# representing the exact solution.
xi_RIF = RIF(lower,upper)

# Check whether Intermediate value theorem guarantees a zero beween
# lower and upper, i.e evaluate F2 at lower and upper using interval arithmetic.
if RIF(F2(lower)) < 0 and RIF(F2(upper)) > 0:
print "Interval containing solution:", xi_RIF.str(style='brackets')

Interval containing solution: [0.379684 .. 0.379708]

#### Step (iii) & (iv) -- obtain closed forms for $\operatorname{DF}_\xi(X_{y,0,1})$ and plug in the estimate for $\xi$

For this we first have to symbolically solve the integrals
$h_y(\xi) := \text{vol}(\Delta_y) \cdot \operatorname{DF}_\xi(\mathcal{X}_{y,0,1})=\int_{\Delta_y} \langle u, (0,0,1) \, \rangle e^{\langle u, (\xi,0) \rangle } \; du$
for every (admissible) choice of $y \in \mathbb P^1$ and then plug in the estimate for $\xi$ into the resulting expression.

#storage for the functions h_y
H=[]
#storage for values h_y(xi) (as intervals)
Ih=[]

#Symbollically solving integrals using Barvinok method
for P in Polyhedra:
h(xi_2) = intxexp(P,Lambda,vector([0,xi_2,0]),vector([0,0,1])).simplify_full()
DF=RIF(h(xi_RIF))
H.append(h); Ih.append(DF)
show(h(xi_2) >= DF.lower())

if all([h > 0 for h in Ih]):
print("Threefold is stable!")
else:
if any([h <= 0 for h in Ih]):
print("Threefold is not stable!")

# print upper bound for destablising DF value
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
else:
print("Cannot determine stability")
# Note, that "not a > 0" does not imply "a <= 0" for intervals

$\displaystyle \frac{{\left(3 \, \xi_{2}^{2} + 2 \, {\left(\xi_{2}^{3} - 3 \, \xi_{2} - 3\right)} e^{\left(3 \, \xi_{2}\right)} + 6 \, {\left(3 \, \xi_{2}^{2} + 2\right)} e^{\left(2 \, \xi_{2}\right)} - 6\right)} e^{\left(-2 \, \xi_{2}\right)}}{6 \, \xi_{2}^{4}} \geq 0.3681$
$\displaystyle -\frac{{\left(12 \, \xi_{2}^{2} - {\left(14 \, \xi_{2}^{3} + 15 \, \xi_{2}^{2} - 6\right)} e^{\left(3 \, \xi_{2}\right)} + 24 \, {\left(3 \, \xi_{2}^{2} - 3 \, \xi_{2} + 1\right)} e^{\left(2 \, \xi_{2}\right)} + 6 \, \xi_{2} - 30\right)} e^{\left(-2 \, \xi_{2}\right)}}{12 \, \xi_{2}^{4}} \geq 2.516$
$\displaystyle \frac{{\left(9 \, \xi_{2}^{2} - 2 \, {\left(\xi_{2}^{3} - 3 \, \xi_{2} - 3\right)} e^{\left(3 \, \xi_{2}\right)} + 6 \, {\left(\xi_{2}^{2} - 6 \, \xi_{2} + 1\right)} e^{\left(2 \, \xi_{2}\right)} - 12\right)} e^{\left(-2 \, \xi_{2}\right)}}{6 \, \xi_{2}^{4}} \geq 1.013$
$\displaystyle \frac{{\left(12 \, \xi_{2}^{2} + {\left(14 \, \xi_{2}^{3} + 15 \, \xi_{2}^{2} - 6\right)} e^{\left(3 \, \xi_{2}\right)} - 12 \, {\left(2 \, \xi_{2}^{2} - 1\right)} e^{\left(2 \, \xi_{2}\right)} - 6 \, \xi_{2} - 6\right)} e^{\left(-2 \, \xi_{2}\right)}}{12 \, \xi_{2}^{4}} \geq 3.946$
Threefold is stable!

#### No. 3.21

The combinatorial data is is given by $\Box= \text{conv} (\,(-2,1),(-3,3),(-1,3),(1,-2),(3,-3),(3,-1) \, )$ and $\Phi_0(x,y) = \min \{0,\frac{-x-1}{2}\},\; \Phi_1(x,y)= \min \{0,\frac{-y-1}{2}\} ,\; \Phi_\infty(x,y) = \min \{0,x+y\}$.

# We are working with interval arithmetic with precision of 60 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(16)

# The base polytope
B=Polyhedron(vertices = [[-2,1],[-3,3],[-1,3],[1,-2],[3,-3],[3,-1]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[-1/2,-1/2,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[-1/2,0,-1/2]]).transpose()
Phi3 = matrix(QQ,[[0,0,0],[0,1,1]]).transpose()

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -\frac{1}{2} \, x - \frac{1}{2}\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -\frac{1}{2} \, y - \frac{1}{2}\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, x + y\right)$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this note, that $\left(\begin{smallmatrix} 0 & 1\\ 1 & 0\end{smallmatrix}\right)$ is a symmetry of the combinatorial data. Hence we have $\xi=(\xi_1,\xi_1)$. We have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, \xi \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (\xi,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for Lambda
Lambda = vector([1,3,13])

# Analytic solution of the integral
F1(xi_1) = intxexp(Polyhedra,Lambda,vector([xi_1,xi_1,0]),vector([1,-1,0])).simplify_full()
F2(xi_1) = intxexp(Polyhedra,Lambda,vector([xi_1,xi_1,0]),vector([1,1,0])).simplify_full()

show(vector([F1,F2]))

$\displaystyle \xi_{1} \ {\mapsto}\ \left(0,\,\frac{{\left(\xi_{1}^{3} - \xi_{1}^{2} + 4 \, {\left(\xi_{1}^{2} - \xi_{1}\right)} e^{\left(3 \, \xi_{1}\right)} + 6 \, {\left(2 \, \xi_{1} - 1\right)} e^{\xi_{1}} - 2 \, \xi_{1} + 6\right)} e^{\left(-\xi_{1}\right)}}{\xi_{1}^{4}}\right)$

#### Step (ii) -- find an estimate for the soliton candidate vector field $\xi$.

# Choose upper and lower bound and
# hope that the exact solution lies in between
find_root(F2,-10,10)
lower = -0.69631193
upper = -0.69621193

#define a real value xi_RIF between xi_1 and xi_2
# representing the exact solution.
xi_RIF = RIF(lower,upper)

# Check whether Intermediate value theorem guarantees a zero beween
# lower and upper, i.e evaluate F2 at lower and upper using interval arithmetic.
if RIF(F2(lower)) < 0 and RIF(F2(upper)) > 0:
print "Interval containing solution:", xi_RIF.str(style='brackets')

-0.6962119314891655 Interval containing solution: [-0.696320 .. -0.696197]

#### Step (iii) & (iv) -- obtain closed forms for $\operatorname{DF}_\xi(X_{y,0,1})$ and plug in the estimate for $\xi$

For this we first have to symbolically solve the integrals
$h_y(\xi) := \text{vol}(\Delta_y) \cdot \operatorname{DF}_\xi(\mathcal{X}_{y,0,1})=\int_{\Delta_y} \langle u, (0,0,1) \, \rangle e^{\langle u, (\xi,0) \rangle } \; du$
for every choice of $y \in \mathbb P^1$ and then plug in the estimate for $\xi$ into the resulting expression.

#storage for the functions h_y
H=[]
#storage for values h_y(xi) (as intervals)
Ih=[]

#Symbollically solving integrals using Barvinok method
for P in Polyhedra:
h(xi_2) = intxexp(P,Lambda,vector([xi_2,xi_2,0]),vector([0,0,1])).simplify_full()
DF=RIF(h(xi_RIF))
H.append(h); Ih.append(DF)
show(h(xi_2) >= DF.lower())

if all([h > 0 for h in Ih]):
print("Threefold is stable!")
else:
if any([h <= 0 for h in Ih]):
print("Threefold is not stable!")

# print upper bound for destablising DF value
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
else:
print("Cannot determine stability")
# Note, that "not a > 0" does not imply "a <= 0" for intervals

$\displaystyle -\frac{{\left(\xi_{2}^{3} - \xi_{2}^{2} - 2 \, {\left(2 \, \xi_{2}^{2} - 4 \, \xi_{2} + 3\right)} e^{\xi_{2}} - 2 \, \xi_{2} + 6\right)} e^{\left(-\xi_{2}\right)}}{2 \, \xi_{2}^{4}} \geq 0.6917$
$\displaystyle -\frac{{\left(\xi_{2}^{3} - \xi_{2}^{2} - 2 \, {\left(2 \, \xi_{2}^{2} - 4 \, \xi_{2} + 3\right)} e^{\xi_{2}} - 2 \, \xi_{2} + 6\right)} e^{\left(-\xi_{2}\right)}}{2 \, \xi_{2}^{4}} \geq 0.6917$
$\displaystyle \frac{{\left(5 \, \xi_{2}^{3} + 9 \, \xi_{2}^{2} + 6 \, {\left(8 \, \xi_{2}^{2} - 4 \, \xi_{2} + 1\right)} e^{\left(3 \, \xi_{2}\right)} - 24 \, {\left(6 \, \xi_{2}^{2} - 8 \, \xi_{2} + 5\right)} e^{\xi_{2}} - 66 \, \xi_{2} + 114\right)} e^{\left(-\xi_{2}\right)}}{24 \, \xi_{2}^{4}} \geq 2.504$
$\displaystyle -\frac{{\left(19 \, \xi_{2}^{3} - 33 \, \xi_{2}^{2} - 6 \, {\left(8 \, \xi_{2}^{2} - 4 \, \xi_{2} + 1\right)} e^{\left(3 \, \xi_{2}\right)} + 24 \, {\left(2 \, \xi_{2}^{2} - 1\right)} e^{\xi_{2}} + 18 \, \xi_{2} + 30\right)} e^{\left(-\xi_{2}\right)}}{24 \, \xi_{2}^{4}} \geq 3.907$
Threefold is stable!

#### No. 3.22

The combinatorial data is is given by $\Box= \text{conv} (\,(-3,-1),(-3,0),(-1,1),(1,1),(3,0),(3,-1) \, )$ and $\Phi_0(x,y) = \min \{0,-x\},\; \Phi_1(x,y)= \min \{0,-y\} ,\; \Phi_\infty(x,y) = \frac{x-1}{2}$.

# We are working with interval arithmetic with precision of 60 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(16)

# The base polytope
B=Polyhedron(vertices = [[-3,-1],[-3,0],[-1,1],[1,1],[3,0],[3,-1]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[0,-1,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[0,0,-1]]).transpose()
Phi3 = matrix(QQ,[[-1/2,1/2,0]]).transpose()

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -x\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -y\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \frac{1}{2} \, x - \frac{1}{2}$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this note, that $\left(\begin{smallmatrix}-1 & 0\\ 0 & 1\end{smallmatrix}\right)$ is a symmetry of the combinatorial data. Hence, we have $\xi=(0,\xi_2)$. We have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, \xi \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (\xi,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for lambda
Lambda = vector([1,5,13])

# Analytic solution of the integral
F1(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([1,0,0])).simplify_full()
F2(xi_2) = intxexp(Polyhedra,Lambda,vector([0,xi_2,0]),vector([0,1,0])).simplify_full()

show(vector([F1,F2]))

$\displaystyle \xi_{2} \ {\mapsto}\ \left(0,\,\frac{{\left(9 \, \xi_{2}^{3} + 9 \, \xi_{2}^{2} + {\left(\xi_{2}^{3} + 3 \, \xi_{2}^{2} - 24\right)} e^{\left(2 \, \xi_{2}\right)} + 24 \, {\left(\xi_{2} + 1\right)} e^{\xi_{2}}\right)} e^{\left(-\xi_{2}\right)}}{2 \, \xi_{2}^{4}}\right)$

#### Step (ii) -- find an estimate for the soliton candidate vector field $\xi$.

# Choose upper and lower bound and
# hope that the exact solution lies in between
find_root(F2,-10,10)
lower = 0.9147877
upper = 0.9147977

#define a real value xi_RIF between xi_1 and xi_2
# representing the exact solution.
xi_RIF = RIF(lower,upper)

# Check whether Intermediate value theorem guarantees a zero beween
# lower and upper, i.e evaluate F2 at lower and upper using interval arithmetic.
if RIF(F2(lower)) < 0 and RIF(F2(upper)) > 0:
print "Interval containing solution:", xi_RIF.str(style='brackets')

0.9147877132620504 Interval containing solution: [0.914779 .. 0.914811]

#### Step (iii) & (iv) -- obtain closed forms for $\operatorname{DF}_\xi(X_{y,0,1})$ and plug in the estimate for $\xi$

For this we first have to symbolically solve the integrals
$h_y(\xi) := \text{vol}(\Delta_y) \cdot \operatorname{DF}_\xi(\mathcal{X}_{y,0,1})=\int_{\Delta_y} \langle u, (0,0,1) \, \rangle e^{\langle u, (\xi,0) \rangle } \; du$
for every choice of $y \in \mathbb P^1$ and then plug in the estimate for $\xi$ into the resulting expression.

#storage for the functions h_y
H=[]
#storage for values h_y(xi) (as intervals)
Ih=[]

#Symbollically solving integrals using Barvinok method
for P in Polyhedra:
h(xi_2) = intxexp(P,Lambda,vector([0,xi_2,0]),vector([0,0,1])).simplify_full()
DF=RIF(h(xi_RIF))
H.append(h); Ih.append(DF)
show(h(xi_2) >= DF.lower())

if all([h > 0 for h in Ih]):
print("Threefold is stable!")
else:
if any([h <= 0 for h in Ih]):
print("Threefold is not stable!")

# print upper bound for destablising DF value
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
if Ih <= 0: show(H(xi_2) <= Ih.upper())
else:
print("Cannot determine stability")
# Note, that "not a > 0" does not imply "a <= 0" for intervals

$\displaystyle \frac{9 \, \xi_{2}^{2} + {\left(\xi_{2}^{3} + 3 \, \xi_{2}^{2} - 24\right)} e^{\xi_{2}} + 24 \, \xi_{2} + 24}{3 \, \xi_{2}^{4}} \geq 0.8323$
$\displaystyle -\frac{{\left(27 \, \xi_{2}^{3} + {\left(\xi_{2}^{3} - 24 \, \xi_{2} - 96\right)} e^{\left(2 \, \xi_{2}\right)} + 24 \, {\left(3 \, \xi_{2}^{2} + 5 \, \xi_{2} + 4\right)} e^{\xi_{2}}\right)} e^{\left(-\xi_{2}\right)}}{12 \, \xi_{2}^{4}} \geq 2.164$
$\displaystyle \frac{9 \, \xi_{2}^{2} + {\left(\xi_{2}^{3} + 3 \, \xi_{2}^{2} - 24\right)} e^{\xi_{2}} + 24 \, \xi_{2} + 24}{6 \, \xi_{2}^{4}} \geq 0.4161$
$\displaystyle -\frac{{\left(27 \, \xi_{2}^{3} - {\left(5 \, \xi_{2}^{3} + 18 \, \xi_{2}^{2} + 24 \, \xi_{2} - 48\right)} e^{\left(2 \, \xi_{2}\right)} + 6 \, {\left(3 \, \xi_{2}^{2} - 4 \, \xi_{2} - 8\right)} e^{\xi_{2}}\right)} e^{\left(-\xi_{2}\right)}}{12 \, \xi_{2}^{4}} \geq 3.419$
Threefold is stable!

#### No. 3.23

The combinatorial data is is given by $\Box= \text{conv} (\, (-3,0),(-2,1),(1,1),(2,0),(2,-1), (0,-3)\, )$ and $\Phi_0(x,y) = \min \{0,-x\},\; \Phi_1(x,y)= \min \{0,y\},\; \Phi_\infty(x,y) = \min \{-y, \frac{x-y-1}{2} \}$.

# We are working with interval arithmetic with precision of 40 bit
# this fixes the precision e.g. for evaluations of exponential functions
RIF=RealIntervalField(40)

# The base polytope
B=Polyhedron(vertices = [[-3,0],[-2,1],[1,1],[2,0],[2,-1],[0,-3]])

# 3 PL functions on B. If phi is the minimum of affine functions of the form F(x,y) = a + b*x + c*y we represent phi as
# the transpose of the matrix with rows [a,b,c].

Phi1 = matrix(QQ,[[0,0,0],[0,-1,0]]).transpose()
Phi2 = matrix(QQ,[[0,0,0],[0,0,1]]).transpose()
Phi3 = matrix(QQ,[[-1/2,1/2,-1/2],[0,0,-1]]).transpose()

PLfunctions = [Phi1,Phi2,Phi3]

# Form list of degeneration polyhedra
Polyhedra = degenerations(PLfunctions,B)

print "The combinatorial data"

graphic = B.plot().show(figsize=[3,3],title='Base Polytope B')

x,y = var('x,y')
r = vector([1,x,y])

for Phi in PLfunctions:
if Phi.transpose().nrows() > 1:
f(x,y) = min_symbolic(*list(r*Phi))
else:
f(x,y) = list(r*Phi)
print ' '
show(f)

The combinatorial data $\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, -x\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(0, y\right)$
$\displaystyle \left( x, y \right) \ {\mapsto} \ \min\left(\frac{1}{2} \, x - \frac{1}{2} \, y - \frac{1}{2}, -y\right)$

#### Step (i) -- obtain a closed form for $F_{X,\xi}$

For this we have to analytically solve the integral $\int_\Box \langle u,v \rangle \deg \bar \Phi (u) e^{\langle u, \xi \rangle } du = \int_{\Delta_0} \langle u', (v,0) \rangle \cdot e^{\langle u', (\xi,0) \rangle} du'$ for $v$ varying over a basis of $N_\mathbb{R}$.

#Choose a sufficiently general value for Lambda
Lambda = vector([3,13,19])

# The integral can be solved symbolically:
F1(xi_1,xi_2) = intxexp(Polyhedra,Lambda,vector([xi_1,xi_2,0]),vector([1,0,0])).simplify_full()
F2(xi_1,xi_2) = intxexp(Polyhedra,Lambda,vector([xi_1,xi_2,0]),vector([0,1,0])).simplify_full()

show(F1)
show(F2)

$\displaystyle \left( \xi_{1}, \xi_{2} \right) \ {\mapsto} \ -\frac{{\left(4 \, \xi_{1}^{4} e^{\left(3 \, \xi_{1}\right)} - {\left(2 \, {\left({\left(\xi_{1} - 2\right)} e^{\left(4 \, \xi_{1}\right)} - {\left(\xi_{1} + 1\right)} e^{\xi_{1}} + 3 \, e^{\left(3 \, \xi_{1}\right)}\right)} \xi_{2}^{4} + 4 \, \xi_{1}^{4} e^{\left(3 \, \xi_{1}\right)} + {\left(2 \, {\left(\xi_{1}^{2} - \xi_{1}\right)} e^{\left(4 \, \xi_{1}\right)} + \xi_{1} e^{\left(3 \, \xi_{1}\right)} + {\left(2 \, \xi_{1}^{2} + \xi_{1}\right)} e^{\xi_{1}}\right)} \xi_{2}^{3} - 2 \, {\left(6 \, \xi_{1}^{2} e^{\left(3 \, \xi_{1}\right)} + {\left(\xi_{1}^{3} - 4 \, \xi_{1}^{2}\right)} e^{\left(4 \, \xi_{1}\right)} - {\left(\xi_{1}^{3} + 2 \, \xi_{1}^{2}\right)} e^{\xi_{1}}\right)} \xi_{2}^{2} - {\left(3 \, \xi_{1}^{3} e^{\left(3 \, \xi_{1}\right)} + 2 \, {\left(\xi_{1}^{4} - 3 \, \xi_{1}^{3}\right)} e^{\left(4 \, \xi_{1}\right)} + {\left(2 \, \xi_{1}^{4} + 3 \, \xi_{1}^{3}\right)} e^{\xi_{1}}\right)} \xi_{2}\right)} e^{\left(4 \, \xi_{2}\right)} + 2 \, {\left(2 \, \xi_{1}^{3} \xi_{2}^{2} e^{\left(5 \, \xi_{1}\right)} + {\left(3 \, \xi_{1}^{2} + {\left(2 \, \xi_{1}^{2} - \xi_{1}\right)} e^{\left(5 \, \xi_{1}\right)} + \xi_{1}\right)} \xi_{2}^{3} - {\left(3 \, \xi_{1}^{4} + 3 \, \xi_{1}^{3} + {\left(2 \, \xi_{1}^{4} - 3 \, \xi_{1}^{3}\right)} e^{\left(5 \, \xi_{1}\right)}\right)} \xi_{2} - 2 \, {\left(\xi_{1}^{5} - \xi_{1}^{4}\right)} e^{\left(5 \, \xi_{1}\right)}\right)} e^{\left(3 \, \xi_{2}\right)} - 4 \, {\left(\xi_{1}^{3} \xi_{2}^{2} e^{\left(5 \, \xi_{1}\right)} - {\left(\xi_{1}^{5} - \xi_{1}^{4}\right)} e^{\left(5 \, \xi_{1}\right)}\right)} e^{\left(2 \, \xi_{2}\right)}\right)} e^{\left(-3 \, \xi_{2}\right)}}{2 \, {\left(\xi_{1}^{7} \xi_{2} e^{\left(3 \, \xi_{1}\right)} - 2 \, \xi_{1}^{5} \xi_{2}^{3} e^{\left(3 \, \xi_{1}\right)} + \xi_{1}^{3} \xi_{2}^{5} e^{\left(3 \, \xi_{1}\right)}\right)}}$