Commit 877c2caf authored by Guillaume Sabbagh's avatar Guillaume Sabbagh
Browse files

Categories fleuries perceptives et actives fonctionnelles

parent afe864fd
......@@ -251,7 +251,13 @@ class BouquetsPerceptifs:
break
if ajouter_bouquet:
self.bouquets_perceptifs += [BouquetPerceptif(self.foncteur1,self.foncteur2,interaction,cat_cones1,cat_cones2)]
def __getitem__(self,key):
return self.bouquets_perceptifs[key]
def __iter__(self):
for bouquet in self.bouquets_perceptifs:
yield bouquet
def transformer_graphviz(self):
for bouquet in self.bouquets_perceptifs:
......@@ -300,6 +306,13 @@ class BouquetsActifs:
for bouquet in self.bouquets_actifs:
bouquet.transformer_graphviz()
def __getitem__(self,key):
return self.bouquets_actifs[key]
def __iter__(self):
for bouquet in self.bouquets_actifs:
yield bouquet
class Bouquets:
def __init__(self, foncteur1, foncteur2, cat_cones1=None, cat_cones2=None, cat_cocones1=None, cat_cocones2=None):
"""On peut spécifier les catégories de cônes et cocônes pour économiser du temps de calcul"""
......
......@@ -43,13 +43,11 @@ class CategorieFleurieAbstraite(Categorie):
raise Exception("Incohérence CategorieFleurie : tentative d'ajout d'un diagramme d'interet qui n'a pas pour cible la meme categorie initiale que les autres diagrammes."+str(diagramme))
self.ajouter_objet(diagramme)
for obj in self.objets:
bouquets = Bouquets(obj,diagramme,self.cat_cones_cocones[obj]["cat_cones"],self.cat_cones_cocones[diagramme]["cat_cones"],
self.cat_cones_cocones[obj]["cat_cocones"], self.cat_cones_cocones[diagramme]["cat_cocones"])
self.ajouter_morphismes(bouquets.bouquets)
bouquets = self.chercher_bouquets(obj,diagramme)
self.ajouter_morphismes(bouquets)
if obj != diagramme: #on a déjà fait les flèches de diag vers diag
bouquets = Bouquets(diagramme,obj,self.cat_cones_cocones[diagramme]["cat_cones"],self.cat_cones_cocones[obj]["cat_cones"],
self.cat_cones_cocones[diagramme]["cat_cocones"], self.cat_cones_cocones[obj]["cat_cocones"])
self.ajouter_morphismes(bouquets.bouquets)
bouquets = self.chercher_bouquets(diagramme,obj)
self.ajouter_morphismes(bouquets)
for A,B,C in itertools.product(self.objets,repeat=3):
for morph1 in self.fleches_elem(A,B,False):
......@@ -63,6 +61,25 @@ class CategorieFleurieAbstraite(Categorie):
raise Exception("Composition des bouquets n'est pas un bouquet "+str(morph1)+" "+str(morph2)+" "+str(composee)+"\n"+str(self.morphismes))
diagramme = Triangle(self,[A,B,C],[morph1,morph2,composee])
diagramme.faire_commuter()
def chercher_bouquets(self,source,cible):
raise NotImplementedError("Les classes filles doivent implementer la méthode chercher_bouquets")
class CategorieFleurie(CategorieFleurieAbstraite):
"""Catégorie fleurie où les morphismes sont des bouquets"""
def chercher_bouquets(self,source,cible):
return Bouquets(source,cible,self.cat_cones_cocones[source]["cat_cones"],self.cat_cones_cocones[cible]["cat_cones"],
self.cat_cones_cocones[source]["cat_cocones"], self.cat_cones_cocones[cible]["cat_cocones"])
class CategorieFleuriePerceptive(CategorieFleurieAbstraite):
"""Catégorie fleurie où les morphismes sont des bouquets perceptifs"""
def chercher_bouquets(self,source,cible):
return BouquetsPerceptifs(source,cible,self.cat_cones_cocones[source]["cat_cones"],self.cat_cones_cocones[cible]["cat_cones"])
class CategorieFleurieActive(CategorieFleurieAbstraite):
"""Catégorie fleurie où les morphismes sont des bouquets actifs"""
def chercher_bouquets(self,source,cible):
return BouquetsPerceptifs(source,cible,self.cat_cones_cocones[source]["cat_cocones"],self.cat_cones_cocones[cible]["cat_cocones"])
def main():
import CategorieAleatoire
......@@ -86,7 +103,7 @@ def main():
diag1.transformer_graphviz()
diag2.transformer_graphviz()
cat_fleurie = CategorieFleurieAbstraite(cat)
cat_fleurie = CategorieFleuriePerceptive(cat)
cat_fleurie.transformer_graphviz(afficher_identites=True)
cat_fleurie.ajouter_diagramme_interet(diag1)
cat_fleurie.transformer_graphviz(afficher_identites=True)
......
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