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):]
def set_edge_image(self,edge,image): self.partialInverse.set_edge_image(image,edge) Homomorphism.set_edge_image(self,edge,image)
def set_node_image(self,node,image): self.partialInverse.set_node_image(image,node) Homomorphism.set_node_image(self,node,image)
def __init__(self,D1,D2,name): Homomorphism.__init__(self,D1,D2) self.partialInverse = Homomorphism(D2,D1) self.CD = D1 self.name = name