######################################################################## # Intersection of Naruki cones with tropicalization of Cross Functions # ######################################################################## # The following script verifies that the tropicalization of the Cross functions do not produce any subdivision of the Naruki fan. #################################### # Load all cells of the Naruki fan # #################################### orig = load("../../ComputeLines/Scripts/Input/0Cell.sobj") a = load("../../ComputeLines/Scripts/Input/aCell.sobj") a2 = load("../../ComputeLines/Scripts/Input/a2Cell.sobj") a3=load("../../ComputeLines/Scripts/Input/a3Cell.sobj") a4=load("../../ComputeLines/Scripts/Input/a4Cell.sobj") b = load("../../ComputeLines/Scripts/Input/bCell.sobj") aa2=load("../../ComputeLines/Scripts/Input/aa2Cell.sobj") aa3=load("../../ComputeLines/Scripts/Input/aa3Cell.sobj") aa4=load("../../ComputeLines/Scripts/Input/aa4Cell.sobj") a2a3=load("../../ComputeLines/Scripts/Input/a2a3Cell.sobj") a2a4=load("../../ComputeLines/Scripts/Input/a2a4Cell.sobj") a3a4=load("../../ComputeLines/Scripts/Input/a3a4Cell.sobj") ab=load("../../ComputeLines/Scripts/Input/abCell.sobj") a2b=load("../../ComputeLines/Scripts/Input/a2bCell.sobj") a3b=load("../../ComputeLines/Scripts/Input/a3bCell.sobj") aa2a3=load("../../ComputeLines/Scripts/Input/aa2a3Cell.sobj") aa2a4=load("../../ComputeLines/Scripts/Input/aa2a4Cell.sobj") aa3a4=load("../../ComputeLines/Scripts/Input/aa3a4Cell.sobj") a2a3a4=load("../../ComputeLines/Scripts/Input/a2a3a4Cell.sobj") aa2b=load("../../ComputeLines/Scripts/Input/aa2bCell.sobj") aa3b=load("../../ComputeLines/Scripts/Input/aa3bCell.sobj") a2a3b=load("../../ComputeLines/Scripts/Input/a2a3bCell.sobj") aa2a3a4 = load("../../ComputeLines/Scripts/Input/aa2a3a4Cell.sobj") aa2a3b = load("../../ComputeLines/Scripts/Input/aa2a3bCell.sobj") # We load the Yoshida and cross functions. Yoshidas = var(["Yoshida"+str(i) for i in range(0,40)]) Cross_to_yoshidas = load("../../Yoshida/Scripts/Input/cross_to_yoshidas.sobj") Cross_to_yoshidas = load("../../Yoshida/Scripts/Input/cross_to_yoshidas.sobj") # The following function computes the slicing of a given cone by the tropicalization of a fixed Cross function given as a difference of two Yoshida functions. def is_intersection_simplicial(cross, cone): # Tropicalize the cross function hyperplane = zero_vector(40) # Find the variables appearing in cross assert len(cross.variables()) == 2 (y1,y2) = cross.variables() hyperplane[Yoshidas.index(y1)] = 1 hyperplane[Yoshidas.index(y2)] = -1 # The inequality has constant term = 0 ieq = (0,) + tuple(hyperplane) # Construct a new cone by appending the inequality to the old cone. newCone = cone.intersection(Polyhedron(ieqs=[ieq])) return newCone.dim() < cone.dim() or newCone == cone def check_all_cones_and_crosses(): results = {} for cone in [a, a2, a3, a4, b, aa2, aa3, aa4, a2a3, a2a4, a3a4, ab, a2b, a3b, aa2a3, aa2a4, aa3a4, a2a3a4, aa2b, aa3b, a2a3b, aa2a3a4, aa2a3b]: for k in Cross_to_yoshidas.keys(): results[(v,cone)] = is_intersection_simplicial(v, cone) return results