# Warning: This is inefficient for large groups! paulis = list(map(pc.ensure_pauli, paulis)) return PauliMembershipPredicate(pc.from_generators(paulis), ignore_phase=True) ## TEST ## if __name__ == "__main__": p = Predicate(lambda x: x > 0) q = Predicate(lambda x: x < 3) p_and_q = p & q p_or_q = p | q not_p = ~p for test in [2, 4, -1]: print(test, p(test), q(test), p_and_q(test), p_or_q(test), not_p(test)) print(list(filter(p_and_q, list(range(-4,5))))) S = set([1, 2, 3]) in_S = SetMembershipPredicate(S) print(list(map(in_S, list(range(-1, 5))))) print(list(filter( commutes_with('XX', 'ZZ') & ~in_group_generated_by('XX'), pc.pauli_group(2) )))
return PauliMembershipPredicate(pc.from_generators(paulis), ignore_phase=True) ## TEST ## if __name__ == "__main__": p = Predicate(lambda x: x > 0) q = Predicate(lambda x: x < 3) p_and_q = p & q p_or_q = p | q not_p = ~p for test in [2, 4, -1]: print(test, p(test), q(test), p_and_q(test), p_or_q(test), not_p(test)) print(list(filter(p_and_q, list(range(-4, 5))))) S = set([1, 2, 3]) in_S = SetMembershipPredicate(S) print(list(map(in_S, list(range(-1, 5))))) print( list( filter( commutes_with('XX', 'ZZ') & ~in_group_generated_by('XX'), pc.pauli_group(2))))
Returns a predicate that selects Pauli operators in the group generated by a given list of generators. """ # Warning: This is inefficient for large groups! paulis = map(pc.ensure_pauli, paulis) return PauliMembershipPredicate(pc.from_generators(paulis), ignore_phase=True) ## TEST ## if __name__ == "__main__": p = Predicate(lambda x: x > 0) q = Predicate(lambda x: x < 3) p_and_q = p & q p_or_q = p | q not_p = ~p for test in [2, 4, -1]: print test, p(test), q(test), p_and_q(test), p_or_q(test), not_p(test) print filter(p_and_q, range(-4, 5)) S = set([1, 2, 3]) in_S = SetMembershipPredicate(S) print map(in_S, range(-1, 5)) print filter(commutes_with("XX", "ZZ") & ~in_group_generated_by("XX"), pc.pauli_group(2))