# Does the Bell's state entanglement violate the reversibility property of unitary matrices?

I read unitary matrices are reversible, so when we apply a unitary operator $$U$$ on some input state and got an output state, then if we apply $$U^\dagger$$ (transpose conjugate) we get back the original input state. So, when we apply a Bell's circuit on two separate input states we get a Bell's state which is entangled and, as far as I know, can't be disentangled.

So, my question is: Bell's circuit is a unitary operator, but by applying Bell's circuit transpose conjugate onto Bell's state we don't go back to the original separable input states; doesn't it violate the property that unitary matrices are reversible? Can I say that Bell's state is an exceptional case where reversibility property of unitary matrices fails?

• Of course Bell states can be disentangled. One way to do it is precisely applying the inverse of the Bell circuit. Jan 17 at 10:30
• Yes, applying "bell-circuit's dagger(transpose conjugate) onto bell-state" does give back the original separable input state. Why do you think that's not the case?
– glS
Jan 17 at 13:15

As far as I know, there is no way to violate the reversibility property because, given a valid quantum state $$| \psi \rangle$$ and a unitary operator $$U$$, you will always have that $$| \psi \rangle = U^\dagger U = UU^\dagger | \psi \rangle$$, since $$U^\dagger = U^{-1}$$ immediately follows from the definition of unitary matrix.

To show you an example by using Qiskit, if you want to disentangle a Bell state, e.g. $$| \Phi_+ \rangle = \frac{1}{\sqrt{2}} \left(| 00 \rangle + | 11 \rangle \right)$$, prepared by the following circuit

from qiskit import QuantumCircuit
from qiskit.quantum_info import Statevector
from qiskit.visualization import array_to_latex

qc = QuantumCircuit(2)

qc.h(0)
qc.cx(0, 1)

array_to_latex(Statevector(qc))


$$\begin{bmatrix} \tfrac{1}{\sqrt{2}} & 0 & 0 & \tfrac{1}{\sqrt{2}} \\ \end{bmatrix}$$

you simply have to apply the same quantum gates in the reverse order

qc.cx(0, 1)
qc.h(0)

array_to_latex(Statevector(qc)))


$$\begin{bmatrix} 1 & 0 & 0 & 0 \\ \end{bmatrix}$$

getting back your original state $$| 0 \rangle \otimes | 0 \rangle$$ used to initialize any QuantumCircuit by default.