Commit fd9307af authored by Guillaume Sabbagh's avatar Guillaume Sabbagh
Browse files

Correction erreur commutation diagrammes

parent db0e0c54
......@@ -203,7 +203,7 @@ def main():
random.seed(811)
c = CategorieAleaPreOrdre(12,0.3)
print("fin gen cat")
# c.transformer_graphviz()
c.transformer_graphviz()
diag = DiagrammeAlea(c,3)
diag.transformer_graphviz()
print("fin gen diag")
......
from Categorie import Categorie
from CategorieCones import CategorieCones
from CategorieCocones import CategorieCocones
from Bouquet import BouquetsPerceptifs, BouquetsActifs, Bouquets, Bouquet,CompositionBouquets
from Diagramme import Triangle,DiagrammeIdentite, DiagrammeObjets
import itertools
......@@ -11,25 +13,38 @@ class CategorieFleurieAbstraite(Categorie):
Categorie.__init__(self,representant)
self.categorie_initiale = categorie
# on ajoute tous les diagrammes constants
diagrammes_constants = dict() #{obj:Δ(obj)}
self.diagrammes_constants = dict() #{obj:Δ(obj)}
self.cat_cones_cocones = {} #{diagramme:{"cat_cones":CategorieCone,"cat_cocones":CategorieCocone}}
for obj in categorie.objets:
diag_constant = DiagrammeObjets(categorie,[obj])
diag_constant.representant = "Δ("+str(obj)+")"
diagrammes_constants[obj] = diag_constant
self.diagrammes_constants[obj] = diag_constant
self.ajouter_objets(diag_constant)
for couple in itertools.product(categorie.objets,repeat=2):
bouquets = Bouquets(diagrammes_constants[couple[0]],diagrammes_constants[couple[1]])
bouquets = Bouquets(self.diagrammes_constants[couple[0]],self.diagrammes_constants[couple[1]],self.cat_cones_cocones[self.diagrammes_constants[couple[0]]]["cat_cones"],
self.cat_cones_cocones[self.diagrammes_constants[couple[1]]]["cat_cones"],self.cat_cones_cocones[self.diagrammes_constants[couple[0]]]["cat_cocones"],
self.cat_cones_cocones[self.diagrammes_constants[couple[1]]]["cat_cocones"])
for b in bouquets.bouquets:
self.ajouter_morphisme(b)
if b.is_identite:
self.remplacer_identite(b)
for couple in itertools.product(categorie.objets,repeat=2):
for morph1 in self.fleches_elem(couple[0],couple[1],False):
for obj in categorie.objets:
for morph2 in self.fleches_elem(couple[1],obj,False):
diagramme = Triangle(self,[couple[0],couple[1],obj],[morph1,morph2,CompositionBouquets(morph1,morph2)])
composee = CompositionBouquets(morph1,morph2)
for fleche in self.morphismes:
if fleche == composee:
composee = fleche
diagramme = Triangle(self,[couple[0],couple[1],obj],[morph1,morph2,composee])
diagramme.faire_commuter()
def ajouter_objet(self,objet):
Categorie.ajouter_objet(self,objet)
cat_cones = CategorieCones(objet)
cat_cocones = CategorieCocones(objet)
self.cat_cones_cocones[objet] = {"cat_cones":cat_cones,"cat_cocones":cat_cocones}
def ajouter_diagramme_interet():
pass
......@@ -39,9 +54,9 @@ def main():
import CategorieAleatoire
import random
random.seed(1)
cat = CategorieAleatoire.CategorieAleaPreOrdreAcyclique()
cat.transformer_graphviz()
random.seed(1234642)
cat = CategorieAleatoire.CategorieAleaPreOrdre()
cat.transformer_graphviz(afficher_identites=True)
cat_f = CategorieFleurieAbstraite(cat)
cat_f.transformer_graphviz()
......
......@@ -13,7 +13,8 @@ from collections import defaultdict
class Diagramme(Foncteur.Foncteur):
"""categorie_indexante est shallow copiée,
categorie_indexee est par référence"""
categorie_indexee est par référence
Il ne faut pas que la categorie indexante soit infinie !"""
nb_viz = 0
_id = 0
......@@ -28,7 +29,7 @@ class Diagramme(Foncteur.Foncteur):
self.morph_select = set(application_morphismes.values()) #ensemble des morphismes sélectionnés par le diagramme
def __str__(self):
return "Diag"+str(self._id)
return "Diag"+str(self._id) if self.representant == None else self.representant
def faire_commuter(self):
"""Change la catégorie indexée par le diagramme pour que ce dernier commute."""
......@@ -37,7 +38,10 @@ class Diagramme(Foncteur.Foncteur):
for objet in cat_index.objets:
for cycle in cat_index.trouver_cycles_elementaires(objet):
cat_index.Composee.loi_de_composition[cycle] = cat_index.identites[objet]
self.categorie_indexee.Composee.loi_de_composition[self(cycle)] = cat_index.identites[objet]
if len(self(cycle)) == 1: #une boucle élémentaire doit être transformée en identité -> on la supprime
self.categorie_indexee.supprimer_morphisme(self(cycle))
else: #on identifie la boucle à l'identité
self.categorie_indexee.Composee.loi_de_composition[self(cycle)] = cat_index.identites[objet]
composees = cat_index.enumerer_toutes_composees()
for couple in composees:
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment