def __init__(self, parent, local_gen, outer_idem, name): assert local_gen.parent == parent.local_da assert outer_idem.local_pmc == parent.outer_pmc self.local_gen = local_gen self.outer_idem = outer_idem idem1 = parent.splitting1.joinIdempotent(local_gen.idem1, outer_idem) idem2 = parent.splitting2.joinIdempotent(local_gen.idem2, outer_idem) SimpleDAGenerator.__init__(self, parent, idem1, idem2, name)
def getMappingCone(self, morphism): """In addition to what is done in the parent class, need to set up the u_map. """ result = LocalDAStructure( F2, self.source.algebra1, self.source.algebra2, self.source.side1, self.source.side2, self.source.single_idems1, self.source.single_idems2) gen_map = dict() for gen in self.source.getGenerators(): gen_map[gen] = SimpleDAGenerator( result, gen.idem1, gen.idem2, "S_%s" % gen.name) gen_map[gen].filtration = [0] if hasattr(gen, "filtration"): gen_map[gen] += gen.filtration result.addGenerator(gen_map[gen]) for gen in self.target.getGenerators(): gen_map[gen] = SimpleDAGenerator( result, gen.idem1, gen.idem2, "T_%s" % gen.name) gen_map[gen].filtration = [1] if hasattr(gen, "filtration"): gen_map[gen] += gen.filtration result.addGenerator(gen_map[gen]) for (x1, coeffs_a), target in self.source.da_action.items(): for (coeff_d, x2), ring_coeff in target.items(): result.addDelta( gen_map[x1], gen_map[x2], coeff_d, coeffs_a, ring_coeff) for (y1, coeffs_a), target in self.target.da_action.items(): for (coeff_d, y2), ring_coeff in target.items(): result.addDelta( gen_map[y1], gen_map[y2], coeff_d, coeffs_a, ring_coeff) for gen, ring_coeff in morphism.items(): # coeffs_a is a tuple of A-side inputs coeff_d, coeffs_a = gen.coeff result.addDelta(gen_map[gen.source], gen_map[gen.target], coeff_d, tuple(coeffs_a), ring_coeff) # Set up u_map num_single_idems = len(self.source.single_idems1) for idem_id in range(num_single_idems): for x, u_x in self.source.u_maps[idem_id].items(): result.add_u_map(idem_id, gen_map[x], gen_map[u_x]) for y, u_y in self.target.u_maps[idem_id].items(): result.add_u_map(idem_id, gen_map[y], gen_map[u_y]) return result