Esempio n. 1
0
def test_from_single(pauli):
    q0, = _make_qubits(1)
    assert PauliString.from_single(q0, pauli) == PauliString({q0: pauli})
Esempio n. 2
0
def test_commutes_with():
    q0, q1, q2 = _make_qubits(3)

    assert PauliString.from_single(q0, Pauli.X).commutes_with(
        PauliString.from_single(q0, Pauli.X))
    assert not PauliString.from_single(q0, Pauli.X).commutes_with(
        PauliString.from_single(q0, Pauli.Y))
    assert PauliString.from_single(q0, Pauli.X).commutes_with(
        PauliString.from_single(q1, Pauli.X))
    assert PauliString.from_single(q0, Pauli.X).commutes_with(
        PauliString.from_single(q1, Pauli.Y))

    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }))
    assert not PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.X,
        q1: Pauli.Z
    }))
    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.Y,
        q1: Pauli.X
    }))
    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.Y,
        q1: Pauli.Z
    }))

    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.X,
        q1: Pauli.Y,
        q2: Pauli.Z
    }))
    assert not PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.X,
        q1: Pauli.Z,
        q2: Pauli.Z
    }))
    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.Y,
        q1: Pauli.X,
        q2: Pauli.Z
    }))
    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q0: Pauli.Y,
        q1: Pauli.Z,
        q2: Pauli.X
    }))

    assert PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q2: Pauli.X,
        q1: Pauli.Y
    }))
    assert not PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q2: Pauli.X,
        q1: Pauli.Z
    }))
    assert not PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q2: Pauli.Y,
        q1: Pauli.X
    }))
    assert not PauliString({
        q0: Pauli.X,
        q1: Pauli.Y
    }).commutes_with(PauliString({
        q2: Pauli.Y,
        q1: Pauli.Z
    }))