def test_sum_non_boundary_cycles(self):
        g3_h2_0 = [(['m_{11}', 'm_{4}'], ['m_{8}', 'm_{7}'], ['c_{13}', 'c_{14}']),
                   (['m_{7}', 'm_{8}'], ['c_{14}', 'c_{13}'], ['m_{5}', 'm_{10}']),
                   (['m_{4}', 'm_{11}'], ['m_{9}', 'm_{6}'], ['c_{7}', 'c_{3}']),
                   (['m_{6}', 'm_{9}'], ['c_{3}', 'c_{7}'], ['m_{4}', 'm_{11}'])]

        anti_g3_h2_0 = chain_integrate(g3_h2_0, self.BR_C)
        self.assertIsNotNone(anti_g3_h2_0)
    def test_BR3_g3_h1_0(self):
        g3_h1_0 = [(['m_{11}', 'm_{4}'], ['v_{1}', 'v_{2}'], ['m_{4}']),
                   (['m_{11}', 'm_{4}'], ['m_{4}'], ['v_{1}', 'v_{2}'])]

        anti_g3_h1_0 = chain_integrate(g3_h1_0, self.BR_C)

        self.assertIsNotNone(anti_g3_h1_0)
        self.assertEqual(set(anti_g3_h1_0), {('m_{4}', 'm_{4}', 'm_{4}'),
                                             ('m_{11}', 'm_{4}', 'm_{4}')})
    def test_BR3_g3_h1_1(self):
        g3_h1_1a = [(['c_{3}', 'c_{7}'], ['v_{1}', 'v_{3}'], ['m_{4}']),
                    (['c_{3}', 'c_{7}'], ['c_{3}'], ['v_{1}', 'v_{3}']),
                    (['c_{3}', 'c_{7}'], ['m_{4}'], ['v_{1}', 'v_{2}']),
                    (['c_{3}', 'c_{7}'], ['v_{2}', 'v_{3}'], ['c_{3}'])]

        anti_g3_h1_1a = chain_integrate(g3_h1_1a, self.BR_C)

        self.assertIsNotNone(anti_g3_h1_1a)

        d_anti_g3_h1_1a = [dX for dXs in derivative(anti_g3_h1_1a, self.BR_C) for dX in expand_tuple_list(dXs)]
        d_anti_g3_h1_1a = list_mod(d_anti_g3_h1_1a)
        g3_h1_1a_exp = [x for xs in g3_h1_1a for x in expand_tuple_list(xs)]
        g3_h1_1a_exp = list_mod(g3_h1_1a_exp)
        self.assertSetEqual(set(d_anti_g3_h1_1a), set(g3_h1_1a_exp))