Ejemplo n.º 1
0
class Rule(Homomorphism):
    generic = False
    def __init__(self,D1,D2,name):
        Homomorphism.__init__(self,D1,D2)
        self.partialInverse = Homomorphism(D2,D1)
        self.CD = D1
        self.name = name
        
    def set_node_image(self,node,image):
        self.partialInverse.set_node_image(image,node)
        Homomorphism.set_node_image(self,node,image)
        
    def set_edge_image(self,edge,image):
        self.partialInverse.set_edge_image(image,edge)
        Homomorphism.set_edge_image(self,edge,image)
    
    def postprocess(self):
        self.newObjects = []
        for o in self.D2.Objects:
            if not self.partialInverse.is_defined_on_node(o):
                self.newObjects.append(o)
        
        self.newMorphisms = []
        for e in self.D2.MorphismList:
            if len(e.Composition)>1:
                continue
            if not self.partialInverse.is_defined_on_edge(e):
                self.newMorphisms.append(e)
        
        self.newProperties = self.D2.Properties[len(self.D1.Properties):]