$\newcommand{\ket}[1]{|{#1}\rangle}\newcommand{\bra}[1]{\langle{#1}|}$Considere un protocolo de doble llave para la transmisión de un estado binario. Alice y Bob aplican las transformaciones unitarias $U_A = \bigl[\begin{smallmatrix} \cos(\alpha)& -\sin(\alpha)\\\sin(\alpha)& \cos(\alpha) \end{smallmatrix}\bigr]$ y $U_B = \bigl[\begin{smallmatrix} \cos(\beta)& -\sin(\beta)\\\sin(\beta)& \cos(\beta) \end{smallmatrix}\bigr]$, que se corresponden a rotaciones con dos ángulos secretos $\alpha$ y $\beta$, respectivamente.
import numpy as np
# Definimos las matrices de rotación
# Definimos el estado inicial
# Realizamos los pasos de protocolo de doble llave