Ejemplo n.º 1
0
    def get_f(self, grade):
        # chain map, from cells --> critical cells
        chain = self.chain
        src = chain.get_cells(grade)
        tgt = self.get_critical(grade)

        f = Matrix(tgt, src, {}, self.ring)
        A = self.get_up_match(grade)  # grade --> grade+1 --> grade
        C = Matrix.retraction(tgt, src, self.ring)
        while C.nonzero():
            f += C
            C = C * A
        return f
Ejemplo n.º 2
0
    def get_bdymap(self, grade):  # grade --> grade-1
        chain = self.chain
        src = self.get_critical(grade)  # CM_grade
        tgt = self.get_critical(grade - 1)  # CM_{grade-1}

        bdy = Matrix(tgt, src, {}, self.ring)  # CM_grade --> CM_{grade-1}
        A = self.get_down_match(grade)  # C_grade --> C_grade-1 --> C_grade
        B = chain.get_bdymap(grade)  # C_grade --> C_grade-1
        cells = chain.get_cells(grade)
        cells_1 = chain.get_cells(grade - 1)
        L = Matrix.retraction(tgt, cells_1,
                              self.ring)  # C_grade-1 --> CM_grade-1
        B = L * B
        R = Matrix.inclusion(cells, src, self.ring)  # CM_grade --> C_grade
        while R.nonzero():
            bdy += B * R
            R = A * R
        return bdy