load("~/Sage/TheseSage/run.sage") def pause(): raw_input("\033[41m\033[5mAppuyer sur entrée\033[0m") def code(str): print("\033[36m "+str+" \033[0m") print("On crée le groupe de Weyl et on définit les réflexions élémentaires") code('[W,[s1,s2,s3,s4,s5]]=creerGroupeWeyl("D5")') [W,[s1,s2,s3,s4,s5]]=creerGroupeWeyl("D5") pause() print("On choisit un élément au hasard (avec une certaine longueur pour éviter les cas triviaux) parmi les éléments de W") code("w=W.random_element_of_length(15)") w=W.random_element_of_length(15) print("Ici w vaut "+str(w)) pause() print("On choisit un représentant de repw") code("repw=motVersRep(w)") repw=motVersRep(w) print("Mais ici le représentant est assez peu générique("+str(repw)+"), on va lui appliquer aléatoirement des réécritures pour qu'il le soit un peu plus") code("[repw,listeMouvements]=modifAleatoireRep(repw,15,W)") [repw,listeMouvements]=modifAleatoireRep(repw,15,W) print("Ici on a appliqué 15 mouvements de tresses aléatoires, les suivants :"+str(listeMouvements)+"\nOn a maintenant repw="+str(repw)) pause() print("On choisit un sous mot parmi ceux de repw, pour avoir notre v") code("v=choixSousMot(W,repw)") v=choixSousMot(W,repw) print("On vérifie que ce n'est pas un exemple trop trivial, ici v est :"+str(v)) pause() print("On fixe le représentant de v qui est le sous-mot le plus à droite de repw") code("repv=sousMotReduitMinimal(v,repw)") repv=sousMotReduitMinimal(v,repw) print("repv="+str(repv)) pause() print("Pour fixer les idées ici on va prendre un couple déjà choisi") repw=[5, 2, 3, 4, 1, 3, 2, 5, 3, 5, 1, 4, 3, 2, 3] repv=[1, 2, 3, 5, 1, 4, 3, 2, 3] v=s1*s2*s3*s5*s4*s1*s2*s3*s2 print("repw=[5, 2, 3, 4, 1, 3, 2, 5, 3, 5, 1, 4, 3, 2, 3] repv=[1, 2, 3, 5, 1, 4, 3, 2, 3] v=s1*s2*s3*s5*s4*s1*s2*s3*s2") print("On complète repv et repw en représentant de w0 en complétant à gauche") code("repvcomplete=completeMot(repv,W)") repvcomplete=completeMot(repv,W) code("repwcomplete=completeMot(repw,W)") repwcomplete=completeMot(repw,W) print("repwcomplete="+str(repwcomplete)+"\nrepvcomplete="+str(repvcomplete)) pause() print("On calcule la liste des mouvements de tresses pour passer de repvcomplete à repwcomplete") code("listeMouvements=GetBraidRelations(repvcomplete,repwcomplete,W)") listeMouvements=GetBraidRelations(repvcomplete,repwcomplete,W) print("On a listeMouvements="+str(listeMouvements)) pause() print("On peut donc calculer les Delta-vecteurs. On commence par les Delta_w vecteurs (et on profite pour récupérer le carquois de la graine)") [Q,listeDeltaW]=graineInitiale(repwcomplete,W,1,0) code("[Q,listeDeltaW]=graineInitiale(repwcomplete,W,1,0)") print("On a la graine : ") liste0=[[0]*20]*20 a=genCarquois(Q,liste0,listeDeltaW,repwcomplete) a[0].show() a[1].show() pause() print("Puis on calcule les Delta v vecteurs") [repwinutile,graineIni,dDeltav]=muteCarquoisSSVZ(repvcomplete,listeMouvements,W,affiche=False,enregistrement=False) code("[repwinutile,graineIni,dDeltav,graphes]=muteCarquoisSSVZ(repvcomplete,listeMouvements,W,affiche=False,enregistrement=False)\nlisteDeltaV=graineIni[1]") listeDeltaV=graineIni[1] pause() print("On a donc maitenant notre graine initiale Gamma_w") a=genCarquois(Q,listeDeltaV,listeDeltaW,repwcomplete,"W est de type "+W.cartan_type()[0]+str(W.cartan_type()[1])+"\n repw vaut "+str(repw)+u"\n v a pour représentant "+str(sousMotReduitMinimal(v,repw))) a[0].show() a[1].show() pause() print("On a besoin d'une petite donnée technique pour les mutations de Delta vecteurs : le vecteur dDelta. On l'a déjà récupéré pour v, on le récupère pour w") dDeltaW=vecteurdDelta(calculDimMi2(W,repwcomplete),creerCarquois(W),repwcomplete) code("dDeltaW=vecteurdDelta(calculDimMi2(W,repwcomplete),creerCarquois(W),repwcomplete)") pause() print("On calcule la liste des mutations à faire pour se ramener à une graine de Cv,w") [mutationsAFaire,listeSommetsAExclure]=listeMuta(W,v,repw) code("[mutationsAFaire,listeSommetsAExclure]=listeMuta(W,v,repw)") pause() print("Et finalement on applique les mutations les unes après les autres jusqu'à avoir épuisé la liste") listeDeltaV=mutaStratesDeltaVecteurs([Q,listeDeltaV],dDeltav,mutationsAFaire[-1])[1] [Q,listeDeltaW]=mutaStratesDeltaVecteurs([Q,listeDeltaW],dDeltaW,mutationsAFaire[-1]) code("listeDeltaV=mutaStratesDeltaVecteurs([Q,listeDeltaV],dDeltaV,mutationsAFaire[-i])[1]\n [Q,listeDeltaW]=mutaStratesDeltaVecteurs([Q,listeDeltaW],dDeltaW,mutationsAFaire[-i])") pause() print("Finalement tout est regroupé en une seule fonction qui fait les calculs automatiquement et enregistre les instantannés pas à pas de chaque opération sur la graine") testAlgo(repw,v,enregistrement=True,enregistrementSSVZ=True) code("testAlgo(repw,v,enregistrement=True,enregistrementSSVZ=True)") pause()