Bell states implementation using Qiskit. All four Bell states are prepared from $\lvert 00\rangle$ using a Hadamard gate and a CNOT gate, with optional single-qubit corrections.
from qiskit import QuantumCircuit from qiskit.quantum_info import Statevector def bell(z_flip=False, x_flip=False): qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) if z_flip: qc.z(0) # relative phase flip if x_flip: qc.x(1) # bit flip on second qubit return qc phi_plus = bell() # (|00> + |11>) / sqrt(2) phi_minus = bell(z_flip=True) # (|00> - |11>) / sqrt(2) psi_plus = bell(x_flip=True) # (|01> + |10>) / sqrt(2) psi_minus = bell(z_flip=True, x_flip=True) # (|01> - |10>) / sqrt(2) for name, qc in [('Phi+', phi_plus), ('Phi-', phi_minus), ('Psi+', psi_plus), ('Psi-', psi_minus)]: print(f"|{name}>: {Statevector(qc)}") # |Phi+>: Statevector([0.70710678+0.j, 0.+0.j, 0.+0.j, 0.70710678+0.j], ...) # |Phi->: Statevector([0.70710678+0.j, 0.+0.j, 0.+0.j, -0.70710678+0.j], ...) # |Psi+>: Statevector([0.+0.j, 0.70710678+0.j, 0.70710678+0.j, 0.+0.j], ...) # |Psi->: Statevector([0.+0.j, 0.70710678+0.j, -0.70710678+0.j, 0.+0.j], ...)