# This file generates the data to compute the Bergman fan of the hyperplane arrangement associated to the root system E6. # IMPORTANT: We load a saved version of RootSystem('E6') since the ordering of the roots changes with the version of sage, and we use a fixed order in our calculations. ######################################### # Data associated to the root system E6 # ######################################### #We recall the relevant notation to have the simple roots alpha[i]'s, the positive roots, the Weyl group and its simple reflections for the root system E6 and the corresponding irreducible flats, computed on "ListOfFlatsE6.sage" RootSystemE6 = load("../../General/L6.sobj") L6 = RootSystemE6.root_lattice() # L6.dynkin_diagram() # O 2 # | # | # O---O---O---O---O # 1 3 4 5 6 # E6 alpha = L6.simple_roots() pos = load("../../General/posRootsE6.sobj") s = L6.simple_reflections() W = L6.weyl_group() # Notice the shift in the indices (the reflections are index from 1 to the length(alpha) +1: homsStdE6 = [s[i+1] for i in range(0,len(s))] # Example: # homsStdE6[0](alpha[1]) # -alpha[1] ################################### # List of Irreducible flats of E6 # ################################### # We know that the irreducible proper flats correspond to the orbits of the flats FF[i] where i lies in set([1,2,4,7,8,12,13])] # The following files contain lists with two entries: #1)The first one is the list of index numbers in pos of all the positive roots contained in the W(E6)-representative irreducible flat. The numbers on the list are in range(0,len(pos)). #2)The second one correspond to the index numbers in pos of all the positive roots in the flats that are conjugate to the input W(E6)-representative irreducible flat. #The index number for each file refers to the index number of the flat in the file "ListOfFlatsE6.sage". These files were computed at the end of "ListOfFlatsE6.sage". These files are lists with two entries: the first one is the representative of the flat, whereas the second is the list of flats in the orbit. # NOTE: we do not need to add the unique flat corresponding to E6, which has rank 6: Inded, it will correspond to the all-ones' vector which is the lineality space of the Bergman fan B(E6). Since we will mod out by the all-ones' vector, we can ignore this flat. E6_13_Numbers = load("Input/E6_13_Numbers.sobj") E6_12_Numbers = load("Input/E6_12_Numbers.sobj") E6_8_Numbers = load("Input/E6_8_Numbers.sobj") E6_7_Numbers = load("Input/E6_7_Numbers.sobj") E6_4_Numbers = load("Input/E6_4_Numbers.sobj") E6_2_Numbers = load("Input/E6_2_Numbers.sobj") E6_1_Numbers = load("Input/E6_1_Numbers.sobj") ############################################### # Vertices of B(E6) and flats grouped by rank # ############################################### # The Bergman fan lives in R^len(pos). For each flat F, we construct a point v_F = sum_{r in F} e_r. Here, e_r correspond to the canonical basis element with entry 1 for r in pos and 0 otherwise. # We record these points as the list of positive roots on each flat. ########################## # Vertex representatives # ########################## # The vertices of the Bergman fan correspond precisely to the irreducible flats. # We start with the list of all vertices up to W(E6)-symmetry, after removing the all-ones' vector: # The list of relevant proper irreducible flats in E6 is set([1,2,4,7,8,12,13])] vertexRepsE6 = [E6_1_Numbers[0],E6_2_Numbers[0],E6_4_Numbers[0],E6_7_Numbers[0],E6_8_Numbers[0],E6_12_Numbers[0],E6_13_Numbers[0]] ################ # All Vertices # ################ # We collect all the vertices by joining the orbits of each irreducible flats (the second entry on each "E6_k_Numbers" defined above. vertexIndexListE6 = E6_1_Numbers[1]+E6_2_Numbers[1]+E6_4_Numbers[1]+E6_7_Numbers[1]+E6_8_Numbers[1]+E6_12_Numbers[1]+E6_13_Numbers[1] # The fan will have 750 rays. print len(vertexIndexListE6) #750 # We separate the vertices according to the rank of the corresponding flats (i.e. the codimension of the vector space spanned by the positive roots on each flat). The rank 0 flat correspond to the maximal flat (containing all the positive roots). The associated vector is the all-ones' vector. rankE6=[[],[E6_1_Numbers[1]], [E6_2_Numbers[1]], [E6_4_Numbers[1]],[E6_7_Numbers[1], E6_8_Numbers[1]], [E6_12_Numbers[1], E6_13_Numbers[1]]] # We recall the number of vertices with fixed rank as the rank-vector: LE6= [len(E6_1_Numbers[1]), len(E6_2_Numbers[1]), len(E6_4_Numbers[1]),len(E6_7_Numbers[1]), len(E6_8_Numbers[1]), len(E6_12_Numbers[1]), len(E6_13_Numbers[1])] print str(LE6) #[36, 120, 270, 45, 216, 27, 36] ############################################################ # Action on W(E6) on the vertices of the Bergman fan B(E6) # ############################################################ #We obtained the following lists corresponding to the action of the simple reflections on the index list of vertices. The function are stored in "BergmanFansArrangements.sage" load("BergmanFansArrangements.sage") # We record the simple reflections on W(E6) and it's action on the simple reflections. # f = file('../../General/simpleReflectionsActionE6.txt', 'w') # for j in range(1, len(s)+1): # f.write('Simple Reflection s[' + str(j)+']:' + '\n' + '{' +'\n') # for k in L6.simple_roots().keys(): # f.write(str(alpha[k]) +': ' + str(s[j](alpha[k]))+',\n') # f.write('}'+'\n' + '\n') # f.close() # # The Weyl group homomorphisms are generated by the 6 simple reflections of E6: # list1 = computeHomsOnVertices(vertexIndexListE6,pos,alpha,[s[1]]) # list2 = computeHomsOnVertices(vertexIndexListE6,pos,alpha,[s[2]]) # list3 = computeHomsOnVertices(vertexIndexListE6,pos,alpha,[s[3]]) # list4 = computeHomsOnVertices(vertexIndexListE6,pos,alpha,[s[4]]) # list5 = computeHomsOnVertices(vertexIndexListE6,pos,alpha,[s[5]]) # list6 = computeHomsOnVertices(vertexIndexListE6,pos,alpha,[s[6]]) # It is easier to compute the action as substitutions using a dictionary for each simple reflection. The dictionaries are constructed using the lists above # # We create 6 dictionaries, one for each of the simple reflections of W(E6): # dict1 = {x: list1[0][x] for x in range(0,len(list1[0]))} # dict2 = {x: list2[0][x] for x in range(0,len(list2[0]))} # dict3 = {x: list3[0][x] for x in range(0,len(list3[0]))} # dict4 = {x: list4[0][x] for x in range(0,len(list4[0]))} # dict5 = {x: list5[0][x] for x in range(0,len(list5[0]))} # dict6 = {x: list6[0][x] for x in range(0,len(list6[0]))} # dict= [dict1,dict2,dict3,dict4,dict5,dict6] # We record the lists and the list of dictionaries in a sage file "Input/listsE6.sage". We will load this file when computing the Bergman fan B(E6): # f = file('Input/listsE6.sage', 'w') # # f.write('list0 = '+ str(list0) + '\n'+ '\n') # f.write('list1 = '+ str(list1) + '\n'+ '\n') # f.write('list2 = '+ str(list2) + '\n'+ '\n') # f.write('list3 = '+ str(list3) + '\n'+ '\n') # f.write('list4 = '+ str(list4) + '\n'+ '\n') # f.write('list5 = '+ str(list5) + '\n'+ '\n') # f.write('list6 = '+ str(list6) + '\n'+ '\n') # f.write('dict = '+ str(dict)) # f.close()