def testDistributiveLaw(self): A, B, C, D, E = get_symbols(2,1,1,1,1) self.assertEquals((A+B) << (C+D+E), Concatenation(A<<(C+D), B << E)) self.assertEquals((C+D+E) << (A+B) , Concatenation((C+D)<< A, E<< B)) self.assertEquals((A+B) << (C+D+E) << (A+B) , Concatenation(A << (C+D)<< A, B << E<< B)) self.assertEquals(SeriesProduct.create((A+B), (C+D+E), (A+B)), Concatenation(A << (C+D)<< A, B << E<< B)) test_perm = (0,1,3,2) qtp = CPermutation(test_perm) self.assertEquals(CPermutation((1,0)) << ( B + C), SeriesProduct(Concatenation(C, B), CPermutation((1,0)))) self.assertEquals(qtp << (A + B + C), (A + C+ B) << qtp) self.assertEquals(qtp << ( B + C + A) , B + C + (CPermutation((1,0)) << A)) test_perm2 = (1,0,3,2) qtp2 = CPermutation(test_perm2) self.assertEquals(qtp2 << (A + B + C), (CPermutation((1,0)) << A) + ((C+B) << CPermutation((1,0)))) self.assertEquals(qtp << qtp2, CPermutation(permute(test_perm, test_perm2)))
def testDistributiveLaw(self): A, B, C, D, E = get_symbols(2, 1, 1, 1, 1) self.assertEquals((A + B) << (C + D + E), Concatenation(A << (C + D), B << E)) self.assertEquals((C + D + E) << (A + B), Concatenation((C + D) << A, E << B)) self.assertEquals((A + B) << (C + D + E) << (A + B), Concatenation(A << (C + D) << A, B << E << B)) self.assertEquals(SeriesProduct.create((A + B), (C + D + E), (A + B)), Concatenation(A << (C + D) << A, B << E << B)) test_perm = (0, 1, 3, 2) qtp = CPermutation(test_perm) self.assertEquals( CPermutation((1, 0)) << (B + C), SeriesProduct(Concatenation(C, B), CPermutation((1, 0)))) self.assertEquals(qtp << (A + B + C), (A + C + B) << qtp) self.assertEquals(qtp << (B + C + A), B + C + (CPermutation( (1, 0)) << A)) test_perm2 = (1, 0, 3, 2) qtp2 = CPermutation(test_perm2) self.assertEquals(qtp2 << (A + B + C), (CPermutation( (1, 0)) << A) + ((C + B) << CPermutation((1, 0)))) self.assertEquals(qtp << qtp2, CPermutation(permute(test_perm, test_perm2)))
def testCPermutation(self): test_perm = (0,1,2,5,6,3,4) qtp = CPermutation.create(test_perm) self.assertRaises(Exception, CPermutation.create,(list(test_perm))) self.assertEqual(qtp.series_inverse(), CPermutation.create(invert_permutation(test_perm))) self.assertEqual(qtp.block_structure, (1,1,1,4)) id1 = circuit_identity(1) self.assertEqual(qtp.get_blocks(), (id1, id1, id1, CPermutation.create((2,3,0,1)))) self.assertEqual(CPermutation((1,0,3,2)).get_blocks(), (CPermutation((1,0)), CPermutation((1,0)))) nt = len(test_perm) self.assertEqual(qtp << qtp.series_inverse(), circuit_identity(nt)) self.assertEqual(permute(list(invert_permutation(test_perm)), test_perm), list(range(nt)))
def testCPermutation(self): test_perm = (0, 1, 2, 5, 6, 3, 4) qtp = CPermutation.create(test_perm) self.assertRaises(Exception, CPermutation.create, (list(test_perm))) self.assertEqual(qtp.series_inverse(), CPermutation.create(invert_permutation(test_perm))) self.assertEqual(qtp.block_structure, (1, 1, 1, 4)) id1 = circuit_identity(1) self.assertEqual(qtp.get_blocks(), (id1, id1, id1, CPermutation.create((2, 3, 0, 1)))) self.assertEqual( CPermutation((1, 0, 3, 2)).get_blocks(), (CPermutation( (1, 0)), CPermutation((1, 0)))) nt = len(test_perm) self.assertEqual(qtp << qtp.series_inverse(), circuit_identity(nt)) self.assertEqual( permute(list(invert_permutation(test_perm)), test_perm), list(range(nt)))