{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "e5e44fb3",
   "metadata": {},
   "source": [
    "## Ejemplo 5.3: Estados compuestos separables"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71cd75b7",
   "metadata": {},
   "source": [
    "$\\newcommand{\\ket}[1]{|{#1}\\rangle}\\newcommand{\\bra}[1]{\\langle{#1}|}$Alice y Bob comparten una fuente de aleatoriedad común, por ejemplo, comprobando en la TV el resultado del sorteo de la lotería nacional  y viendo si ha salido un número par o impar:\n",
    "\n",
    "- Si el resultado es par, Alice y Bob preparan los estados cuánticos $\\rho_0^A$ y $\\sigma_0^B$, respectivamente."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e51496e6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rhoA_0 = \n",
      " [[1 0]\n",
      " [0 0]] \n",
      "sigmaB_0 = \n",
      " [[0 0]\n",
      " [0 1]] \n",
      "deltaAB_0 = kron(rhoA_0, sigmaB_) =\n",
      " [[0 0 0 0]\n",
      " [0 1 0 0]\n",
      " [0 0 0 0]\n",
      " [0 0 0 0]]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "rhoA_0    = np.array([[1, 0], [0, 0]])\n",
    "sigmaB_0  = np.array([[0, 0], [0, 1]])\n",
    "deltaAB_0 = np.kron(rhoA_0, sigmaB_0)\n",
    "\n",
    "print(\"rhoA_0 = \\n\", rhoA_0, \"\\nsigmaB_0 = \\n\", sigmaB_0, \"\\ndeltaAB_0 = kron(rhoA_0, sigmaB_) =\\n\", str(deltaAB_0))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a243982",
   "metadata": {},
   "source": [
    "- Si el resultado es impar, en cambio, preparan los estados $\\rho_1^A$ y $\\sigma_1^B$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "59a94a63",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "rhoA_1 = \n",
      " [[0.5 0.5]\n",
      " [0.5 0.5]] \n",
      "sigmaB_1 = \n",
      " [[1 0]\n",
      " [0 0]] \n",
      "deltaAB_1 = kron(rhoA_1, sigmaB_1) =\n",
      " [[0.5 0.  0.5 0. ]\n",
      " [0.  0.  0.  0. ]\n",
      " [0.5 0.  0.5 0. ]\n",
      " [0.  0.  0.  0. ]]\n"
     ]
    }
   ],
   "source": [
    "rhoA_1    = np.array([[1/2, 1/2], [1/2, 1/2]])\n",
    "sigmaB_1  = np.array([[1, 0], [0, 0]])\n",
    "deltaAB_1 = np.kron(rhoA_1, sigmaB_1)\n",
    "\n",
    "print(\"rhoA_1 = \\n\", rhoA_1, \"\\nsigmaB_1 = \\n\", sigmaB_1, \"\\ndeltaAB_1 = kron(rhoA_1, sigmaB_1) =\\n\", str(deltaAB_1))\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "971bc395",
   "metadata": {},
   "source": [
    "Para un sorteo de la lotería no trucado, la probabilidad de un resultado par o impar es la misma\n",
    "y el estado cuántico compuesto del sistema formado por los sub-sistemas de Alice y Bob está dado por\n",
    "\\begin{align*}\n",
    "        \\delta^{AB} = \\frac{1}{2} \\rho_0^A \\otimes \\sigma_0^B + \\frac{1}{2} \\rho_1^A \\otimes \\sigma_1^B.\n",
    "\\end{align*}\n",
    "Este estado es por tanto un estado separable y no está entrelazado."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c14c2ac3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "deltaAB =\n",
      " [[0.25 0.   0.25 0.  ]\n",
      " [0.   0.5  0.   0.  ]\n",
      " [0.25 0.   0.25 0.  ]\n",
      " [0.   0.   0.   0.  ]]\n"
     ]
    }
   ],
   "source": [
    "deltaAB = 1/2 * deltaAB_0 + 1/2 * deltaAB_1\n",
    "print(\"deltaAB =\\n\", str(deltaAB))"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Raw Cell Format",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
