{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "a4cd38e2", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:05.646941Z", "iopub.status.busy": "2024-03-26T19:00:05.646667Z", "iopub.status.idle": "2024-03-26T19:00:05.649383Z", "shell.execute_reply": "2024-03-26T19:00:05.648971Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# Copyright 2024 Keysight Technologies Inc." ] }, { "cell_type": "raw", "id": "d2b27d8b", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "Example: Randomized Compilation with different Compilation Options\n", "==================================================================\n", "\n", "Randomized Compiling in |True-Q| can be configured in various ways. For example,\n", "the :doc:`rc_with_markers` example shows how the user can specify which cycles\n", "in a circuit are hard cycles and thus subject to the random twirls that the\n", ":py:meth:`~trueq.randomly_compile` inserts around those hard cycles.\n", "Three other important configuration options include:\n", "\n", "#. :ref:`Measurement randomization through additional Paulis`\n", " An effective way to reduce readout bias is to randomize the measurements by\n", " performing a random Pauli operation just before each measurement instruction.\n", " This can be added to Randomized Compiling by specifying the ``compile_paulis``\n", " argument.\n", "#. :ref:`Randomized Compiling for non-Clifford entangling gates`\n", " Randomized Compiling can be used for circuits that contain hard cycles with\n", " gates which are not from the Clifford group by specifying the ``entangler``\n", " argument.\n", "#. :ref:`Specifying the action on idle qubits`\n", " In systems with large single-qubit errors it might be desirable to not introduce\n", " any additional single-qubit gates on what would otherwise be idle qubits. This\n", " compilation option can be specified through the\n", " :py:class:`~trueq.compilation.Compiler` passes:\n", " :py:class:`~trueq.compilation.RCCycle` and\n", " :py:class:`~trueq.compilation.RCLocal`\\.\n", "\n", " The following examples show how these configuration options work in practice.\n", "\n", ".. note::\n", " Randomized Compiling produces a new circuit collection after each call,\n", " so the output of this example will be different if it's executed again." ] }, { "cell_type": "code", "execution_count": 2, "id": "d338f3f6", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:05.651248Z", "iopub.status.busy": "2024-03-26T19:00:05.650984Z", "iopub.status.idle": "2024-03-26T19:00:07.943458Z", "shell.execute_reply": "2024-03-26T19:00:07.942937Z" } }, "outputs": [], "source": [ "import numpy as np\n", "\n", "import trueq as tq\n", "import trueq.compilation as tqc\n", "from trueq.algorithms import qft" ] }, { "cell_type": "raw", "id": "d2596874", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. _rc_compile_pauli:\n", "\n", "Measurement Randomization through Additional Paulis\n", "---------------------------------------------------\n", "\n", "To remove readout bias, we can randomize measurements using the keyword argument\n", "``compile_paulis`` of the :py:meth:`~trueq.randomly_compile` function. This argument\n", "is set to ``False`` by default because it changes the measurement outcomes which can\n", "confuse new users.\n", "When set to ``True``, a single-qubit cycle of randomly selected Paulis (or Weyls in\n", "the case of qudits) will be added right before each measurement operation in a\n", "randomly compiled circuit and merged into any preceding single-qubit gate cycle. Take\n", "a look at the corresponding compiler pass :py:class:`~trueq.compilation.CompilePaulis`\n", "for more information.\n", "\n", "Let's walk through a quick example. We begin by creating a simple circuit to play with\n", "and generate a randomly compiled version of that circuit:" ] }, { "cell_type": "code", "execution_count": 3, "id": "a8d4129f", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:07.947256Z", "iopub.status.busy": "2024-03-26T19:00:07.946094Z", "iopub.status.idle": "2024-03-26T19:00:07.972435Z", "shell.execute_reply": "2024-03-26T19:00:07.972007Z" } }, "outputs": [ { "data": { "text/html": [ "
0 1 2 3 H CX CX H CX CX 1 M M M M
" ], "text/plain": [ "DisplayWrapper( 0 1 2 3 13 Z Z Z 2 CX CX Z ID 6 ID 3 CX CX X X ID X 1 M M M M " ], "text/plain": [ "DisplayWrapper(" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# instantiate a simulator and run the original and the RC circuit\n", "sim = tq.Simulator()\n", "\n", "original_result = sim.sample(circuit, n_shots=np.inf)\n", "rc_result = sim.sample(rc_circuit, n_shots=np.inf)\n", "\n", "tq.visualization.plot_results(\n", " original_result,\n", " rc_result,\n", " labels=[\"Original Circuit\", \"RC Circuit with compiled Paulis\"],\n", ")" ] }, { "cell_type": "raw", "id": "4c179341", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "The Pauli operators that were added to the RC circuit are stored in the circuit's\n", ":py:attr:`~trueq.Circuit.key` attribute as a :py:class:`~trueq.math.weyl.Weyls`\n", "instance:" ] }, { "cell_type": "code", "execution_count": 6, "id": "ca498820", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:08.190373Z", "iopub.status.busy": "2024-03-26T19:00:08.190003Z", "iopub.status.idle": "2024-03-26T19:00:08.193204Z", "shell.execute_reply": "2024-03-26T19:00:08.192793Z" } }, "outputs": [ { "data": { "text/plain": [ "Key(compiled_pauli=Weyls('ZZXZ'), protocol='RC', twirl=Twirl({(0,): 'P', (1,): 'P', (2,): 'P', (3,): 'P'}, dim=2))" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rc_circuit.key" ] }, { "cell_type": "raw", "id": "416449a7", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "To recover the original bitstrings, we can apply the\n", ":py:meth:`~trueq.Results.decompiled_results` method to the result with the\n", "``compiled_pauli`` key from the circuit:" ] }, { "cell_type": "code", "execution_count": 7, "id": "e2a0fed9", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:08.195157Z", "iopub.status.busy": "2024-03-26T19:00:08.194828Z", "iopub.status.idle": "2024-03-26T19:00:08.384122Z", "shell.execute_reply": "2024-03-26T19:00:08.383688Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk4AAAFUCAYAAADS/LOVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABRP0lEQVR4nO3deVhUZf8/8PcAsriwuCJKgiGKC5KiiLtCgmVJLqnZo5BpmqSGu5lAWphpD/nk0ubWN5cWH9sMTQx7NMp9ww1MxYXFDVBAEPj8/uA3J0ZQD8PAjPh+XddcMmfOnM99H2HOe865zzkaEREQERER0UOZGbsBRERERI8KBiciIiIilRiciIiIiFRicCIiIiJSicGJiIiISCUGJyIiIiKVGJyIiIiIVGJwIiIiIlLJwtgNMEVFRUW4cuUK6tSpA41GY+zmEBERUSUSEdy6dQtOTk4wM3vwPiUGpzJcuXIFzs7Oxm4GERERVaGLFy+iadOmD5yHwakMderUAVC8Am1tbY3cGiIiIqpMWVlZcHZ2Vrb/D8LgVAbt4TlbW1sGJyIioseEmuE5HBxOREREpBKDExEREZFKDE5EREREKjE4EREREanE4ERERESkEoMTERERkUomEZyWLVsGFxcXWFtbw8fHB3v37r3vvJ999hl69OgBBwcHODg4wN/fv9T8wcHB0Gg0Oo/AwMDK7gYRERFVc0YPTps2bUJYWBjCw8Nx8OBBtG/fHgEBAUhPTy9z/ri4OIwYMQK//fYb4uPj4ezsjH79+uHy5cs68wUGBiIlJUV5bNiwoSq6Q0RERNWYRkTEmA3w8fFBp06d8PHHHwMovk+cs7Mz3njjDcyaNeuh7y8sLISDgwM+/vhjjBo1CkDxHqeMjAxs2bJFrzZlZWXBzs4OmZmZvAAmERFRNVee7b5Rrxyen5+PAwcOYPbs2co0MzMz+Pv7Iz4+XtUycnJycPfuXdStW1dnelxcHBo2bAgHBwf07dsXCxYsQL169cpcRl5eHvLy8pTnWVlZevRGvcsZubiZna9q3vqF6XC0yH74jDXrAfa8v56W2nXsUMsSTXANyLn+8IVyHRNVG/yMqHxq17Hq7RxgEuvYqMHp2rVrKCwsRKNGjXSmN2rUCKdOnVK1jJkzZ8LJyQn+/v7KtMDAQAwaNAiurq44e/Ys5syZg/79+yM+Ph7m5uallhEVFYXIyMiKdUalyxm58F+yC7l3Cx86rxOuIdZqGqBREbJq2AAT9xn9F8oUlGcdN69xEzuspsGsIPfhC+Y6JqoW+BlR+dSu43Jt5wCTWMeP9L3qFi5ciI0bNyIuLg7W1tbK9OHDhys/t2vXDp6ennjyyScRFxcHPz+/UsuZPXs2wsLClOfam/1VhpvZ+ci9W4hp/dzhXLfmA+e9c+EgbA7lI9V7OhyfaHn/GTMuADvnF38j4h+s6nV88UYOfvl1G8zMc4G+bwP2ze6/UK5jomqDnxGVT+06Vr2dA0xmHRs1ONWvXx/m5uZIS0vTmZ6WlgZHR8cHvnfx4sVYuHAhduzYAU9PzwfO27x5c9SvXx9JSUllBicrKytYWVmVvwMV4Fy3Jtwa1n7gPFczisPg3TpPAA0e8gtFpahZxwr7ZlzHRI8ZfkZUvoet40dxO2fUs+osLS3RsWNHxMbGKtOKiooQGxsLX1/f+75v0aJFmD9/PmJiYuDt7f3QOpcuXcL169fRuHFjg7SbiIiIHk9GvxxBWFgYPvvsM6xduxYnT57EhAkTkJ2djZCQEADAqFGjdAaPv//++3j77bexatUquLi4IDU1Fampqbh9+zYA4Pbt25g+fTr+/PNPnD9/HrGxsRg4cCDc3NwQEBBglD4SERFR9WD0MU7Dhg3D1atXMW/ePKSmpsLLywsxMTHKgPHk5GSYmf2T71asWIH8/HwMGTJEZznh4eGIiIiAubk5jh49irVr1yIjIwNOTk7o168f5s+fX+WH44iIiKh6MXpwAoDQ0FCEhoaW+VpcXJzO8/Pnzz9wWTY2Nti2bZuBWkZERET0D6MfqiMiIiJ6VDA4EREREanE4ERERESkEoMTERERkUoMTkREREQqMTgRERERqcTgRERERKQSgxMRERGRSgxORERERCoxOBERERGpxOBEREREpBKDExEREZFKDE5EREREKjE4EREREanE4ERERESkEoMTERERkUoMTkREREQqMTgRERERqcTgRERERKQSgxMRERGRSgxORERERCoxOBERERGpxOBEREREpBKDExEREZFKDE5EREREKjE4EREREanE4ERERESkEoMTERERkUoMTkREREQqMTgRERERqcTgRERERKQSgxMRERGRSgxORERERCoxOBERERGpxOBEREREpBKDExEREZFKDE5EREREKjE4ERER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YO3atfj++++Vm5iXNaSBiCoHgxMRlcuNGzewbds2vP7666X2ADk6OmLkyJHYtGkTRESZvnjxYrRv3x6HDh3C22+/XWqZ586dw5AhQxAUFIQjR47gtdde0wlf93P27Fls2bIFP/30E3766Sfs2rULCxcuVF7Pzs5GWFgY9u/fj9jYWJiZmeGFF15AUVGRXn0XEfzvf//DqVOndC4jERoaivj4eGzcuBFHjx7F0KFDERgYiMTERADFQTMvLw+///47jh07hvfff1/va3dNmzYNL774os6NzLt27arXsoio/HiojojKJTExESICDw+PMl/38PDAzZs3cfXqVTRs2BAA0LdvX0ydOlWZ5/z58zrv+eSTT9CyZUt88MEHAICWLVvi+PHjePfddx/YlqKiIqxZswZ16tQBAPzrX/9CbGys8r7BgwfrzL9q1So0aNAAJ06cUM7EVWP58uX4/PPPkZ+fj7t378La2hqTJk0CUHzm7+rVq5GcnAwnJycAxeEmJiYGq1evxnvvvYfk5GQMHjwY7dq1A1B8UV591a5dGzY2NsjLyyv34U4iqjjucSIivZTco/Qw3t7eD3z99OnT6NSpk860zp07P3S5Li4uSmgCgMaNGyM9PV15npiYiBEjRqB58+awtbWFi4sLgOKwUx4jR47E4cOHsWfPHvTv3x9vvfWWspfn2LFjKCwshLu7O2rXrq08du3apRwWnDRpEhYsWIBu3bohPDwcR48eLVd9IjId3ONEROXi5uYGjUaDkydP4oUXXij1+smTJ+Hg4IAGDRoo02rVqlUpbalRo4bOc41Go3MY7rnnnkOzZs3w2WefwcnJCUVFRWjbti3y88t3qQc7Ozu4ubkBAL7++mu4ubmhS5cu8Pf3x+3bt2Fubo4DBw6Uuom49nDcq6++ioCAAPz888/Yvn07oqKisGTJErzxxhswMzMrFULv3r1brvYRUdXhHiciKpd69erh6aefxvLly5Gbm6vzWmpqKr766isMGzasXKfqt2zZEvv379eZtm/fvgq18/r16zh9+jTmzp0LPz8/5RBiRdWuXRuTJ0/GtGnTICJ46qmnUFhYiPT0dLi5uek8Sh5Kc3Z2xvjx47F582ZMnToVn332GQCgQYMGuHXrFrKzs5V5H3a9JktLS96ChMhIGJyIqNw+/vhj5OXlISAgAL///jsuXryImJgYPP30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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "compiled_paulis = rc_circuit.key.compiled_pauli\n", "\n", "rc_result_decompiled = rc_result.decompiled_results(compiled_paulis)\n", "\n", "tq.visualization.plot_results(\n", " original_result,\n", " rc_result_decompiled,\n", " labels=[\"Original Result\", \"RC Result decompiled\"],\n", ")" ] }, { "cell_type": "raw", "id": "2aeb351b", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "When averaging over the results of multiple RC circuits in a collection, the\n", ":py:meth:`~trueq.CircuitCollection.sum_results` function can automatically decompile\n", "the results. This behavior can be adjusted by changing the value of the\n", "``decompile_paulis`` argument. By default, it is set to ``True`` which in most cases\n", "yields the desirable outcome:" ] }, { "cell_type": "code", "execution_count": 8, "id": "efea007d", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:08.386045Z", "iopub.status.busy": "2024-03-26T19:00:08.385756Z", "iopub.status.idle": "2024-03-26T19:00:08.419012Z", "shell.execute_reply": "2024-03-26T19:00:08.418584Z" } }, "outputs": [ { "data": { "text/plain": [ "Results({'0011': 0.23133333333333334, '0000': 0.262, '1111': 0.2533333333333333, '1100': 0.2533333333333333})" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# run all RC circuits on the simulator\n", "sim.run(rc_circuits)\n", "\n", "# average the decompiled results\n", "rc_circuits.sum_results(decompile_paulis=True).normalized()" ] }, { "cell_type": "raw", "id": "02bfc500", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ "As you can see, the averaged results contain only the bitstrings that were in the\n", "original set of results, since the result of every RC circuit in the collection has\n", "been decompiled." ] }, { "cell_type": "raw", "id": "0a4dfdad", "metadata": { "raw_mimetype": "text/restructuredtext" }, "source": [ ".. _rc_non_cliff:\n", "\n", "Randomized Compiling for non-Clifford Entangling Gates\n", "------------------------------------------------------\n", "\n", "The :py:meth:`trueq.randomly_compile` function by default assumes that all hard\n", "cycles in the input circuit consist purely of Clifford gates. This is because under\n", "the standard Pauli twirl, the correction gates for the twirl gate can always be\n", "expressed as single-qubit gates which can be compiled into neighboring easy cycles\n", "such that the overall circuit depth is maintained :cite:`Wallman2016`\\.\n", "\n", "It is possible to twirl a cycle that has non-Clifford gates in two ways.\n", "One solution is to customize the set of twirling gates.\n", "The other approach, as shown here, is to use |True-Q|\\'s built-in\n", ":py:class:`~trueq.compilation.Compiler` to convert the cycle into a Clifford-based\n", "representation. This can be done either implicitly by specifying the ``entangler``\n", "argument of the :py:meth:`trueq.randomly_compile` function, or explicitly through\n", "defining a custom :py:class:`~trueq.compilation.Compiler`\\. Let's take a look at both\n", "options.\n", "\n", "As a concrete example, consider the Quantum Fourier Transform (QFT) circuit, that is\n", "commonly expressed in terms of the :math:`CROT` gate (where\n", ":math:`CROT(\\phi):=\\exp(i \\phi |11 \\rangle \\langle 11|)`):" ] }, { "cell_type": "code", "execution_count": 9, "id": "60f57f32", "metadata": { "execution": { "iopub.execute_input": "2024-03-26T19:00:08.420867Z", "iopub.status.busy": "2024-03-26T19:00:08.420589Z", "iopub.status.idle": "2024-03-26T19:00:08.442376Z", "shell.execute_reply": "2024-03-26T19:00:08.441940Z" } }, "outputs": [ { "data": { "text/html": [ "
0 1 2 3 Key: Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0, 1) Name: Gate Locally Equivalent: Non-Clifford Generators: ZZ: -45.00 ZI: 45.00 IZ: 45.00 1.00 1.00 1.00 1.00j Labels: (0, 2) Name: Gate Locally Equivalent: Non-Clifford Generators: ZZ: -22.50 ZI: 22.50 IZ: 22.50 1.00 1.00 1.00 0.71 0.71j Labels: (0, 3) Name: Gate Locally Equivalent: Non-Clifford Generators: ZZ: -11.25 ZI: 11.25 IZ: 11.25 1.00 1.00 1.00 0.92 0.38j Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (1, 2) Name: Gate Locally Equivalent: Non-Clifford Generators: ZZ: -45.00 ZI: 45.00 IZ: 45.00 1.00 1.00 1.00 1.00j Labels: (1, 3) Name: Gate Locally Equivalent: Non-Clifford Generators: ZZ: -22.50 ZI: 22.50 IZ: 22.50 1.00 1.00 1.00 0.71 0.71j Labels: (2,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (2, 3) Name: Gate Locally Equivalent: Non-Clifford Generators: ZZ: -45.00 ZI: 45.00 IZ: 45.00 1.00 1.00 1.00 1.00j Labels: (3,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0, 3) Name: Gate.swap Aliases: Gate.swap Locally Equivalent: SWAP Generators: YY: 90.00 XX: 90.00 ZZ: 90.00 1.00 1.00 1.00 1.00 SW SW Labels: (1, 2) Name: Gate.swap Aliases: Gate.swap Locally Equivalent: SWAP Generators: YY: 90.00 XX: 90.00 ZZ: 90.00 1.00 1.00 1.00 1.00 SW SW
" ], "text/plain": [ "DisplayWrapper( 0 1 2 3 Key: twirl: Paulis on [0, 1, 2, 3] protocol: RC Labels: (0,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: -127.28 X: -127.28 0.50 0.50j 0.50 0.50j 0.50 0.50j -0.50 -0.50j H Labels: (2,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (3,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X 1 Labels: (0, 1) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Z: 84.92 X: 35.18 Y: 35.18 0.65 0.65j 0.27 -0.27j 0.27 0.27j -0.65 0.65j Labels: (1,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z 2 Labels: (0, 1) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: 143.46 Y: 143.46 Z: 59.42 0.15 -0.35j 0.35 -0.85j 0.85 0.35j -0.35 -0.15j Labels: (1,) Name: Gate Generators: Y: -225.71 X: -93.49 Z: 93.49 -0.71 0.71 -0.50 0.50j -0.50 0.50j Labels: (2,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.50 0.50j 0.50 0.50j -0.50 -0.50j 0.50 0.50j 6 Labels: (3,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y 3 Labels: (0, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Y: 114.93 X: -114.93 Z: -22.86 -0.14 0.14j -0.69 -0.69j -0.69 0.69j 0.14 0.14j Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (2,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 Labels: (3,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y 4 Labels: (0, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: -144.66 Y: -144.66 Z: 96.66 0.11 -0.54j -0.16 0.82j -0.82 -0.16j -0.54 -0.11j Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (2,) Name: Gate Generators: Y: 183.18 Z: -122.39 X: -122.39 -0.27 0.65j -0.27 0.65j 0.71 -0.71 Labels: (3,) Name: Gate Generators: Y: 84.92 Z: -35.18 X: -35.18 0.71j -0.50 -0.50j 0.71j 0.50 0.50j 5 Labels: (0, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Z: 89.68 X: -8.83 Y: -8.83 0.70 -0.70j 0.07 0.07j -0.07 0.07j 0.70 0.70j Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (2,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (3,) Name: Gate.sx Aliases: Gate.sx Gate.cliff5 Generators: X: 90.00 0.71 -0.71j -0.71j 0.71 SX 6 Labels: (0, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: -205.14 Z: 109.65 Y: 109.65 -0.71 0.71j 0.59 0.39j -0.39 0.59j Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (2,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.50 0.50j 0.50 0.50j -0.50 -0.50j 0.50 0.50j 6 Labels: (3,) Name: Gate Generators: Z: -93.30 X: 93.30 Y: 49.87 0.71 -0.71 -0.39 -0.59j -0.39 -0.59j 7 Labels: (1, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (1,) Name: Gate Generators: Y: -100.84 X: -100.84 Z: 41.77 -0.27 -0.27j 0.65 -0.65j 0.65 0.65j 0.27 -0.27j Labels: (2,) Name: Gate.sx Aliases: Gate.sx Gate.cliff5 Generators: X: 90.00 0.71 -0.71j -0.71j 0.71 SX Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z 8 Labels: (1, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (1,) Name: Gate Generators: X: 143.46 Y: 143.46 Z: 59.42 0.15 -0.35j 0.35 -0.85j 0.85 0.35j -0.35 -0.15j Labels: (2,) Name: Gate Generators: Z: -100.84 X: -100.84 Y: -41.77 -0.50 0.50j -0.50 0.50j -0.71 0.71 Labels: (3,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: -127.28 X: -127.28 0.50 0.50j 0.50 0.50j 0.50 0.50j -0.50 -0.50j H 9 Labels: (1, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (1,) Name: Gate Generators: Z: 88.74 X: -17.65 Y: -17.65 0.69 0.69j -0.14 0.14j -0.14 -0.14j -0.69 0.69j Labels: (2,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 10 Labels: (1, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate Generators: X: 78.48 Y: -52.44 Z: -52.44 0.27 0.65j 0.65 -0.27j -0.71j 0.71 Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate Generators: X: 112.50 -0.11 0.54j 0.82 0.16j 0.82 0.16j -0.11 0.54j 11 Labels: (2, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (1,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (2,) Name: Gate Generators: Y: -100.84 X: -100.84 Z: 41.77 -0.27 -0.27j 0.65 -0.65j 0.65 0.65j 0.27 -0.27j Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 12 Labels: (2, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate Generators: Y: -100.84 Z: 100.84 X: -41.77 0.50 -0.50j 0.50 0.50j -0.71 0.71j Labels: (3,) Name: Gate Generators: X: 135.00 0.15 0.35j 0.85 -0.35j 0.85 -0.35j 0.15 0.35j 13 Labels: (0, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: Z: -127.28 X: 127.28 0.71 -0.71 -0.71 -0.71 13 Labels: (1,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (2,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (3,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: X: -127.28 Y: -127.28 0.71 0.71j -0.71 0.71j 10 14 Labels: (0, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.50 0.50j 0.50 0.50j -0.50 -0.50j 0.50 0.50j 6 Labels: (1,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID Labels: (2,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (3,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: X: -127.28 Y: -127.28 0.71 0.71j -0.71 0.71j 10 15 Labels: (0, 3) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (3,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 16 Labels: (1, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: -127.28 X: -127.28 0.50 0.50j 0.50 0.50j 0.50 0.50j -0.50 -0.50j H Labels: (2,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: X: -127.28 Y: -127.28 0.71 0.71j -0.71 0.71j 10 Labels: (3,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X 17 Labels: (1, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (1,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.50 0.50j 0.50 0.50j -0.50 -0.50j 0.50 0.50j 6 Labels: (2,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: X: -127.28 Y: -127.28 0.71 0.71j -0.71 0.71j 10 Labels: (3,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID 18 Labels: (1, 2) Name: cx Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (1,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 Labels: (2,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 Labels: (3,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X " ], "text/plain": [ "DisplayWrapper( 0 1 2 3 Key: Labels: (0,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 0.71 -0.71j -0.71 0.71j Z Labels: (1,) Name: Gate.sy Aliases: Gate.sy Gate.cliff7 Generators: Y: 90.00 0.50 0.50j -0.50 -0.50j 0.50 0.50j 0.50 0.50j SY Labels: (0, 1) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Y: -100.84 X: -100.84 Z: 41.77 -0.27 -0.27j 0.65 -0.65j 0.65 0.65j 0.27 -0.27j Labels: (1,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (0, 1) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Y: -143.46 X: -143.46 Z: 59.42 -0.35 -0.15j 0.85 0.35j -0.35 0.85j -0.15 0.35j Labels: (2,) Name: Gate.sy Aliases: Gate.sy Gate.cliff7 Generators: Y: 90.00 0.50 0.50j -0.50 -0.50j 0.50 0.50j 0.50 0.50j SY Labels: (0, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Y: -114.93 X: -114.93 Z: 22.86 -0.14 -0.14j 0.69 -0.69j 0.69 0.69j 0.14 -0.14j Labels: (2,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (0, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: -144.66 Y: -144.66 Z: 96.66 -0.54 -0.11j 0.82 0.16j -0.16 0.82j -0.11 0.54j Labels: (3,) Name: Gate Generators: Y: 84.92 Z: 35.18 X: 35.18 0.50 0.50j -0.71j 0.50 0.50j 0.71j Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: -121.36 Y: -121.36 Z: 11.95 -0.07 -0.07j 0.70 -0.70j 0.70 0.70j 0.07 -0.07j Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate Generators: Z: 100.84 X: 100.84 Y: -41.77 0.50 -0.50j 0.50 -0.50j -0.71j 0.71j Labels: (2,) Name: Gate Generators: X: -67.50 0.82 0.16j -0.11 0.54j -0.11 0.54j 0.82 0.16j Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate Generators: Y: -100.84 X: -100.84 Z: 41.77 -0.27 -0.27j 0.65 -0.65j 0.65 0.65j 0.27 -0.27j Labels: (2,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate Generators: Y: -143.46 X: -143.46 Z: 59.42 -0.35 -0.15j 0.85 0.35j -0.35 0.85j -0.15 0.35j Labels: (3,) Name: Gate Generators: X: -123.75 0.45 -0.14j 0.26 0.84j 0.26 0.84j 0.45 -0.14j Labels: (1, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate Generators: Y: -114.93 X: -114.93 Z: 22.86 -0.14 -0.14j 0.69 -0.69j 0.69 0.69j 0.14 -0.14j Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (1, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (2,) Name: Gate Generators: Z: 100.84 X: 100.84 Y: -41.77 0.50 -0.50j 0.50 -0.50j -0.71j 0.71j Labels: (3,) Name: Gate Generators: X: -67.50 0.82 0.16j -0.11 0.54j -0.11 0.54j 0.82 0.16j Labels: (2, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (2,) Name: Gate Generators: Y: -100.84 X: -100.84 Z: 41.77 -0.27 -0.27j 0.65 -0.65j 0.65 0.65j 0.27 -0.27j Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (2, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: -82.04 Y: -43.85 Z: 43.85 0.59 0.39j -0.39 0.59j -0.71 0.71j Labels: (3,) Name: Gate Generators: X: 135.00 0.15 0.35j 0.85 -0.35j 0.85 -0.35j 0.15 0.35j Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.71 0.71 -0.71 0.71 6 Labels: (3,) Name: Gate.s Aliases: Gate.s Gate.sz Gate.cliff9 Generators: Z: 90.00 0.71 -0.71j 0.71 0.71j S Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: X: -127.28 Z: -127.28 0.71j 0.71j 0.71j -0.71j H Labels: (3,) Name: Gate.cliff8 Aliases: Gate.cliff8 Generators: Z: -90.00 0.71 0.71j 0.71 -0.71j 8 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate Generators: Y: -85.50 Z: 85.50 X: -57.13 0.65 -0.27j 0.27 0.65j -0.71 0.71j Labels: (2,) Name: Gate Generators: Y: -100.84 Z: 100.84 X: -41.77 0.50 -0.50j 0.50 0.50j -0.71 0.71j Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.71 0.71 -0.71 0.71 6 Labels: (2,) Name: Gate.s Aliases: Gate.s Gate.sz Gate.cliff9 Generators: Z: 90.00 0.71 -0.71j 0.71 0.71j S Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: X: -127.28 Z: -127.28 0.71j 0.71j 0.71j -0.71j H Labels: (2,) Name: Gate.cliff8 Aliases: Gate.cliff8 Generators: Z: -90.00 0.71 0.71j 0.71 -0.71j 8 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (1,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 0.71 0.71j 0.71j 0.71 4 Labels: (2,) Name: Gate.sx Aliases: Gate.sx Gate.cliff5 Generators: X: 90.00 -0.71j -0.71 -0.71 -0.71j SX Labels: (3,) Name: Gate.sx Aliases: Gate.sx Gate.cliff5 Generators: X: 90.00 -0.71j -0.71 -0.71 -0.71j SX " ], "text/plain": [ "DisplayWrapper( 0 1 2 3 Key: twirl: Paulis on [0, 1, 2, 3] protocol: RC Labels: (0,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID Labels: (1,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: X: 127.28 Z: -127.28 0.50 0.50j -0.50 -0.50j -0.50 -0.50j -0.50 -0.50j 13 Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z 1 Labels: (0, 1) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Y: -143.46 X: 143.46 Z: 59.42 -0.27 -0.27j 0.65 -0.65j -0.65 -0.65j -0.27 0.27j Labels: (1,) Name: Gate.cliff15 Aliases: Gate.cliff15 Generators: Z: -127.28 Y: 127.28 0.71j -0.71 0.71 -0.71j 15 Labels: (2,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z 2 Labels: (0, 1) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Z: -84.92 Y: 35.18 X: 35.18 -0.35 0.85j 0.15 -0.35j 0.35 0.15j 0.85 0.35j Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z Labels: (2,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: X: -127.28 Z: -127.28 0.50 0.50j 0.50 0.50j 0.50 0.50j -0.50 -0.50j H Labels: (3,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID 3 Labels: (0, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: 114.93 Y: 114.93 Z: 22.86 0.14 -0.14j -0.69 -0.69j 0.69 -0.69j 0.14 0.14j Labels: (1,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (2,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z 4 Labels: (0, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Z: 183.18 Y: 122.39 X: 122.39 -0.82 -0.16j -0.54 -0.11j 0.11 -0.54j -0.16 0.82j Labels: (1,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (2,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (3,) Name: Gate Generators: Z: -100.84 X: 100.84 Y: -41.77 0.50 0.50j -0.71j -0.50 -0.50j -0.71j 5 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: X: 121.36 Y: -121.36 Z: -11.95 0.07 0.07j 0.70 -0.70j -0.70 -0.70j 0.07 -0.07j Labels: (1,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 6 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (1,) Name: Gate Generators: Y: 84.92 Z: -35.18 X: 35.18 0.50 -0.50j -0.50 0.50j -0.71j -0.71j Labels: (2,) Name: Gate Generators: X: 112.50 -0.11 0.54j 0.82 0.16j 0.82 0.16j -0.11 0.54j Labels: (3,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X 7 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate Generators: Y: -100.84 X: -100.84 Z: 41.77 -0.27 -0.27j 0.65 -0.65j 0.65 0.65j 0.27 -0.27j Labels: (2,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 Labels: (3,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID 8 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (1,) Name: Gate Generators: Y: -143.46 X: -143.46 Z: 59.42 -0.35 -0.15j 0.85 0.35j -0.35 0.85j -0.15 0.35j Labels: (2,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z Labels: (3,) Name: Gate Generators: X: 123.75 0.45 -0.14j -0.26 -0.84j -0.26 -0.84j 0.45 -0.14j 9 Labels: (1, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID Labels: (1,) Name: Gate Generators: X: 114.93 Y: -114.93 Z: -22.86 0.14 0.14j 0.69 -0.69j -0.69 -0.69j 0.14 -0.14j Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 10 Labels: (1, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate Generators: Z: -100.84 X: 100.84 Y: 41.77 0.71j -0.71j 0.50 -0.50j 0.50 -0.50j Labels: (3,) Name: Gate Generators: X: 112.50 -0.11 0.54j 0.82 0.16j 0.82 0.16j -0.11 0.54j 11 Labels: (2, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z Labels: (2,) Name: Gate Generators: Z: -84.92 Y: -35.18 X: 35.18 0.65 -0.65j -0.27 -0.27j -0.27 0.27j -0.65 -0.65j Labels: (3,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 12 Labels: (2, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate Generators: Y: 144.82 Z: -144.82 X: 77.41 0.71j -0.71 0.39 -0.59j -0.59 -0.39j Labels: (1,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (2,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID Labels: (3,) Name: Gate Generators: X: 135.00 0.15 0.35j 0.85 -0.35j 0.85 -0.35j 0.15 0.35j 13 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: X: -127.28 Z: -127.28 0.50 0.50j 0.50 0.50j 0.50 0.50j -0.50 -0.50j H Labels: (1,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.cliff8 Aliases: Gate.cliff8 Generators: Z: -90.00 0.71 -0.71j -0.71 -0.71j 8 14 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: X: -127.28 Z: -127.28 0.50 0.50j 0.50 0.50j 0.50 0.50j -0.50 -0.50j H Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z Labels: (2,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID Labels: (3,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: Y: -127.28 X: -127.28 0.71 0.71j -0.71 0.71j 10 15 Labels: (0, 3) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate Generators: Y: 85.50 Z: 85.50 X: 57.13 0.65 -0.27j -0.27 -0.65j 0.71 0.71j Labels: (2,) Name: Gate Generators: X: -84.92 Z: 35.18 Y: -35.18 0.71j -0.71 -0.50 -0.50j -0.50 0.50j Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z 16 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (1,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: 270.00 -0.71 -0.71 0.71 -0.71 6 Labels: (2,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: Y: -127.28 X: -127.28 0.71 0.71j -0.71 0.71j 10 Labels: (3,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 0.71 -0.71j 0.71 -0.71j ID 17 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X Labels: (1,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: X: 127.28 Z: -127.28 0.50 0.50j -0.50 -0.50j -0.50 -0.50j -0.50 -0.50j 13 Labels: (2,) Name: Gate.cliff10 Aliases: Gate.cliff10 Generators: Y: -127.28 X: -127.28 0.71 0.71j -0.71 0.71j 10 Labels: (3,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: -180.00 -1.00 -1.00 X 18 Labels: (1, 2) Name: CX Aliases: Gate.cx Gate.cnot Parameters: Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 Labels: (1,) Name: Gate.cliff4 Aliases: Gate.cliff4 Generators: X: -90.00 -0.71j 0.71 0.71 -0.71j 4 Labels: (2,) Name: Gate.cliff14 Aliases: Gate.cliff14 Generators: Y: -127.28 Z: -127.28 0.71j 0.71 -0.71 -0.71j 14 Labels: (3,) Name: Gate.cliff15 Aliases: Gate.cliff15 Generators: Z: -127.28 Y: 127.28 0.71j -0.71 0.71 -0.71j 15 " ], "text/plain": [ "DisplayWrapper( 0 1 2 3 Key: Labels: (0,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (3,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H Labels: (0, 1) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1, 2) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (2, 3) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX " ], "text/plain": [ "DisplayWrapper( 0 1 2 3 Key: twirl: Paulis on [0, 1, 2, 3] protocol: RC Labels: (0,) Name: Gate.cliff13 Aliases: Gate.cliff13 Generators: Z: 127.28 X: -127.28 0.71 -0.71 -0.71 -0.71 13 Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.cliff6 Aliases: Gate.cliff6 Generators: Y: -90.00 0.71 0.71 -0.71 0.71 6 1 Labels: (0, 1) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: -180.00 1.00 -1.00 Z Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: -180.00 1.00 -1.00 Z Labels: (3,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y 2 Labels: (1, 2) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: -180.00 1.00 -1.00 Z Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (3,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID 3 Labels: (2, 3) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (1,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: -180.00 1.00 -1.00 Z Labels: (2,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (3,) Name: Gate.id Aliases: Gate.id Gate.i Gate.cliff0 Locally Equivalent: Identity Generators: I: 0.00 1.00 1.00 ID " ], "text/plain": [ "DisplayWrapper( 0 1 2 3 Key: protocol: RC twirling_group: P Labels: (0,) Name: Gate.sy Aliases: Gate.sy Gate.cliff7 Generators: Y: 90.00 0.71 -0.71 0.71 0.71 SY Labels: (1,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (3,) Name: Gate.h Aliases: Gate.h Gate.f Gate.cliff12 Generators: Z: 127.28 X: 127.28 0.71 0.71 0.71 -0.71 H 1 Labels: (0, 1) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (0,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (1,) Name: Gate.x Aliases: Gate.x Gate.cliff1 Generators: X: 180.00 1.00 1.00 X Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y 2 Labels: (1, 2) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (1,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.z Aliases: Gate.z Gate.cliff3 Generators: Z: 180.00 1.00 -1.00 Z 3 Labels: (2, 3) Name: Gate.cx Aliases: Gate.cx Gate.cnot Locally Equivalent: CNOT Generators: ZX: -90.00 IX: 90.00 ZI: 90.00 1.00 1.00 1.00 1.00 CX CX Labels: (2,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y Labels: (3,) Name: Gate.y Aliases: Gate.y Gate.cliff2 Generators: Y: -180.00 1.00 -1.00 Y " ], "text/plain": [ "DisplayWrapper(