Skip to content

iQuHACK/2026-IQM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "bc3996b1",
   "metadata": {},
   "source": [
    "# 2026 MIT iQuHACK 2026 IQM Challenge - Witness My Entanglement!\n",
    "\n",
    "*A dialogue between a cranky curmudgeon and an excitable quantum enthusiast as they leave a talk at a computing conference:*\n",
    "\n",
    "**Curmudgeon**: This quantum computing thing must be nonsense. My classical computers are made of protons, neutrons, and electrons just like quantum computers are. There's no magical fairy dust in a quantum computer, so there's no way that it could be more powerful than any classical one.\n",
    "\n",
    "**Quantum enthusiast**: Yes, the physical ingredients are the same, but classical computers ignore the fact that two quantum objects can be entangled. Quantum computers don't just notice quantum entanglement - they use it! That's the secret ingredient!\n",
    "\n",
    "**Curmudgeon**: Quantum entanglement? That \"spooky action at a distance\" thing I read about in my youth in a physical encyclopedia?\n",
    "\n",
    "*The quantum enthusiast spends a few moments explaining entanglement and that no, the world has moved on from Einstein's skepticism about entanglement.*\n",
    "\n",
    "**Curmudgeon**: Well that's some very pretty math. But you're telling me that a quantum computer has to actually create and control entanglement. That's never going to happen.\n",
    "\n",
    "**Quantum enthusiast**: It already has! We already know how to do it!\n",
    "\n",
    "**Curmudgeon**: I don't believe you. Prove it!\n",
    "\n",
    "**Quantum enthusiast**: You know, that's actually a fair point. Even if I handed you a couple of entangled qubits, how would you know that they were actually entangled?\n",
    "\n",
    "---\n",
    "\n",
    "Your task is to use experiments on IQM's quantum computers to build the most convincing case possible that:\n",
    "1) You can prove that, for some state of the quantum computer, entanglement must actually be present\n",
    "2) You can successfully do #1 for a wide range of qualitatively distinct states of the quantum computer \n",
    "3) You can entangle a large number of qubits (the more the better)\n",
    "\n",
    "Then present your case to us curmudgeons! Well, simulated curmudgeons. We do work for a quantum computing company after all.\n",
    "\n",
    "Note: there are many ways to achieve point 1. What will distinguish an adequate solution from an excellent solution is how well you can accomplish points 2 and 3.\n",
    "\n",
    "### Judging criteria\n",
    "\n",
    "1) Theoretical correctness. Does the experiment actually demonstrate that entanglement must be present? (20%)\n",
    "2) Sophistication of the implementation. Have you optimized your circuits for the performance/architecture of the quantum computer? (30%)\n",
    "3) Number of qubits entangled. (10-40%)\n",
    "4) Flexibility of the experiment. Have you shown that entanglement is present in many different (orthogonal) states? (10-40%)\n",
    "\n",
    "You can choose what fraction you want us to judge on #3 and #4. Minimum 10% for each criterion, adding up to 40%.\n",
    "\n",
    "Bonus points will be awarded (at our discretion) for:\n",
    "- Scalable solutions - would your experiment be feasible on a new generation of quantum computers with many hundreds or even thousands of qubits?\n",
    "- Experimentally identifying the most important reason you can't entangle more qubits\n",
    "- Mitigating any loopholes that allow your experimental results to occur without entanglement being present \n",
    "- Other particularly cool and surprising ideas\n",
    "\n",
    "### Submissions\n",
    "\n",
    "Submit your code and any other key results through [this Google form](https://docs.google.com/forms/d/e/1FAIpQLSdbaPjK0W9HkfjkZ8cLIQOBodTtTNrFFlBE-Q9X4waKg0TbWg/viewform?usp=dialog). Presentations start at 10:30 on Sunday in room 4-237.\n",
    "\n",
    "### Prizes\n",
    "\n",
    "Each member of the winning team will get:\n",
    "- A cryptographically verifiable certificate\n",
    "- $250 in extra IQM Resonance credits\n",
    "- A pile of IQM swag"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "080109f8",
   "metadata": {},
   "source": [
    "## Why is this problem important?\n",
    "\n",
    "This problem isn't just about convincing the skeptics. Entanglement is the \"secret sauce\" that gives quantum computing its biggest power boost, which means that running complex quantum algorithms will require creating large amounts of multipartite entanglement. In fact, some paradigms of quantum computing (like measurement-based quantum computing) actually assume that they can prepare a large, highly entangled quantum state before starting any algorithm.\n",
    "\n",
    "This means that demonstrating large amounts of controllable entanglement is a critical benchmark to assess the performance of quantum computers. A good quantum computer had better be able to entangle lots of qubits! This is particularly true as we progress towards fault-tolerant quantum computation - logical qubits generally consist of many entangled physical qubits, and then we need to be able to entangle those logical qubits.\n",
    "\n",
    "So what you're doing here is developing practical ways to quantitatively compare quantum computers' ability to create and maintain their most unique and important resource. That's a big deal!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "85585c93",
   "metadata": {},
   "source": [
    "## Background - Measuring entanglement\n",
    "\n",
    "Entanglement refers to quantum correlations that cannot be realized in a classical system, specifically, a \"local hidden variables theory.\"\n",
    "\n",
    "A popular way to describe entanglement is with the following (flimsy) argument. Imagine that Sam has prepared two qubits in the state\n",
    "$$\\ket{\\psi} = \\frac{1}{\\sqrt{2}}\\left(\\ket{01}-\\ket{10}\\right)$$\n",
    "Then Sam sends one qubit each to distant, widely separated observers Alice and Bob. When Alice measures her qubit, she has no idea what she will measure (0 or 1). But after doing so, she will instantaneously know the state of Bob's qubit, despite not having Bob's qubit anywhere near her! This \"spooky action at a distance\" demonstrates entanglement!\n",
    "\n",
    "Unfortunately, this argument is extremely weak. Imagine that instead of qubits, Sam prepared two boxes, one with an apple in it and one with an orange in it, then randomly sends one box to Alice and one to Bob. When Alice opens her box, she will discover which fruit she has, and will instantly know which fruit Bob has. So does this mean that the fruit is entangled? Of course not. Boxed fruit doesn't behave quantum mechanically.\n",
    "\n",
    "We need to do something more subtle to see why entanglement is special.\n",
    "\n",
    "### CHSH inequality\n",
    "\n",
    "One classic way to demonstrate that entanglement exists in quantum systems is through violation of the Clauser–Horne–Shimony–Holt (CHSH) inequality. \n",
    "\n",
    "Imagine that Sam sends pairs of objects to Alice and Bob, just as above. When Alice recieves an object, she can choose whether to measure either property $A_1$ or property $A_2$. Bob can choose whether to observe either property $B_1$ or property $B_2$. And all four properties can be either $\\pm 1$. Bob's properties may be the same as Alice's, correlated with Alice's, or totally unrelated.\n",
    "\n",
    "Assume that $A_1,A_2,B_1,B_2$ all actually have meaningful values for each object, and that Alice's measurements do not affect Bob's measurements (absence of entanglement).\n",
    "\n",
    "Then we can define a quantity\n",
    "$$S = A_1(B_1-B_2) + A_2(B_1+B_2)$$\n",
    "Clearly if $B_1=B_2$, then $S=\\pm 2 A_2$. And if $B_1 \\neq B_2$, then $S = \\pm 2 A_1$. So we conclude that $S$ is always equal to $\\pm 2$, so the average value $\\langle S \\rangle$ of $S$ must obey\n",
    "$$ \\left| \\left\\langle S \\right\\rangle \\right| \\leq 2$$\n",
    "This is the CHSH inequality. By being more careful about making statistical statements rather than statements about individual outcomes, it's not hard to generalize the argument above to when measuring $B_1$ affects the measurememnt of $B_2$. So the CHSH inequality only tells you something about how Alice's measurements are correlated with Bob's measurements.\n",
    "\n",
    "However, imagine that the objects are qubits, $A_1$ is a measurement in the $Z$ basis, and $A_2$ is a measurement in the $X$ basis. If Bob makes the same measurements, except his measurement bases are rotated 45 degrees clockwise in the $xz$-plane from Alice's, you can check that\n",
    "$$\\bra{\\psi} S \\ket{\\psi} = -2\\sqrt{2} < -2$$\n",
    "So the CHSH inequality is badly violated by quantum mechanics! This experiment has been performed in a lab with many different qubit types, and it is evidence that there are non-classical correlations between qubits.\n",
    "\n",
    "Entanglement tells us that the state of each qubit does not physically make sense; there is no such thing as \"the state of qubit 1\" and \"the state of qubit 2\" when entanglement is present. Instead, the only thing that makes sense is \"the combined state of qubits 1 and 2.\" Mathematically, this means that we cannot factor $\\ket{\\psi}$ into a product $\\ket{\\psi_1} \\otimes \\ket{\\psi_2}$ of states for each qubit separately.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "605fe96f",
   "metadata": {},
   "source": [
    "## Measuring CHSH inequality violation through quantum circuits\n",
    "\n",
    "We can observe CHSH violation by running quantum circuits on real devices:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "ec419d84",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/pty.py:95: RuntimeWarning: os.fork() was called. os.fork() is incompatible with multithreaded code, and JAX is multithreaded, so this will likely lead to a deadlock.\n",
      "  pid, fd = os.forkpty()\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: pip in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (25.3)\n",
      "Requirement already satisfied: iqm-client in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (33.0.3)\n",
      "Requirement already satisfied: numpy<3.0,>=1.26.4 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client) (2.4.1)\n",
      "Requirement already satisfied: packaging==24.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client) (24.1)\n",
      "Requirement already satisfied: pydantic<3.0,>=2.9.2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client) (2.12.5)\n",
      "Requirement already satisfied: requests==2.32.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client) (2.32.3)\n",
      "Requirement already satisfied: iqm-pulse<13,>=12.7.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client) (12.7.3)\n",
      "Requirement already satisfied: iqm-station-control-client<13,>=12.0.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client) (12.0.3)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests==2.32.3->iqm-client) (3.4.4)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests==2.32.3->iqm-client) (3.11)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests==2.32.3->iqm-client) (2.6.3)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests==2.32.3->iqm-client) (2026.1.4)\n",
      "Requirement already satisfied: iqm-data-definitions<3.0,>=2.18 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client) (2.22)\n",
      "Requirement already satisfied: python-rapidjson==1.20 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client) (1.20)\n",
      "Requirement already satisfied: jinja2==3.0.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client) (3.0.3)\n",
      "Requirement already satisfied: scipy<1.16,>=1.11.4 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client) (1.15.3)\n",
      "Requirement already satisfied: scipy-stubs in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client) (1.17.0.2)\n",
      "Requirement already satisfied: MarkupSafe>=2.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from jinja2==3.0.3->iqm-pulse<13,>=12.7.3->iqm-client) (3.0.3)\n",
      "Requirement already satisfied: protobuf<5.0,>=4.25.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-data-definitions<3.0,>=2.18->iqm-pulse<13,>=12.7.3->iqm-client) (4.25.8)\n",
      "Requirement already satisfied: types-protobuf in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-data-definitions<3.0,>=2.18->iqm-pulse<13,>=12.7.3->iqm-client) (6.32.1.20251210)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp<2.0,>=1.25.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: grpcio<2.0,>=1.65.4 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (1.76.0)\n",
      "Requirement already satisfied: PyYAML<7.0,>=6.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (6.0.3)\n",
      "Requirement already satisfied: types-requests in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (2.32.4.20260107)\n",
      "Requirement already satisfied: tqdm>=4.59.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (4.67.1)\n",
      "Requirement already satisfied: types-tqdm in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (4.67.0.20250809)\n",
      "Requirement already satisfied: iqm-exa-common<28,>=27.4.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client) (27.4.3)\n",
      "Requirement already satisfied: typing-extensions~=4.12 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from grpcio<2.0,>=1.65.4->iqm-station-control-client<13,>=12.0.3->iqm-client) (4.15.0)\n",
      "Requirement already satisfied: python-dotenv==0.21.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (0.21.1)\n",
      "Requirement already satisfied: xarray==2024.10.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (2024.10.0)\n",
      "Requirement already satisfied: ruamel-yaml==0.17.32 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (0.17.32)\n",
      "Requirement already satisfied: ruamel-yaml-clib==0.2.8 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (0.2.8)\n",
      "Requirement already satisfied: six==1.16.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.16.0)\n",
      "Requirement already satisfied: types-six in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.17.0.20251009)\n",
      "Requirement already satisfied: pandas>=2.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from xarray==2024.10.0->iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (3.0.0)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp-proto-grpc==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp-proto-http==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: deprecated>=1.2.6 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.3.1)\n",
      "Requirement already satisfied: googleapis-common-protos~=1.52 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.72.0)\n",
      "Requirement already satisfied: opentelemetry-api~=1.15 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp-proto-common==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-proto==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-sdk~=1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (1.27.0)\n",
      "Requirement already satisfied: importlib-metadata<=8.4.0,>=6.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-api~=1.15->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (8.4.0)\n",
      "Requirement already satisfied: zipp>=0.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from importlib-metadata<=8.4.0,>=6.0->opentelemetry-api~=1.15->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (3.23.0)\n",
      "Requirement already satisfied: opentelemetry-semantic-conventions==0.48b0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-sdk~=1.27.0->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (0.48b0)\n",
      "Requirement already satisfied: annotated-types>=0.6.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pydantic<3.0,>=2.9.2->iqm-client) (0.7.0)\n",
      "Requirement already satisfied: pydantic-core==2.41.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pydantic<3.0,>=2.9.2->iqm-client) (2.41.5)\n",
      "Requirement already satisfied: typing-inspection>=0.4.2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pydantic<3.0,>=2.9.2->iqm-client) (0.4.2)\n",
      "Requirement already satisfied: wrapt<3,>=1.10 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from deprecated>=1.2.6->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client) (2.0.1)\n",
      "Requirement already satisfied: python-dateutil>=2.8.2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pandas>=2.1->xarray==2024.10.0->iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client) (2.9.0.post0)\n",
      "Requirement already satisfied: optype<0.16,>=0.14.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from optype[numpy]<0.16,>=0.14.0->scipy-stubs->iqm-pulse<13,>=12.7.3->iqm-client) (0.15.0)\n",
      "Requirement already satisfied: numpy-typing-compat<20251207,>=20250818.1.25 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from optype[numpy]<0.16,>=0.14.0->scipy-stubs->iqm-pulse<13,>=12.7.3->iqm-client) (20251206.2.4)\n",
      "Requirement already satisfied: qrisp[iqm] in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (0.7.19)\n",
      "Requirement already satisfied: numpy>=2.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (2.4.1)\n",
      "Requirement already satisfied: sympy<=1.13 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (1.13.0)\n",
      "Requirement already satisfied: qiskit>=0.44.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (2.3.0)\n",
      "Requirement already satisfied: matplotlib>=3.5.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (3.10.8)\n",
      "Requirement already satisfied: scipy>=1.10.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (1.15.3)\n",
      "Requirement already satisfied: numba in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (0.63.1)\n",
      "Requirement already satisfied: networkx in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (3.6.1)\n",
      "Requirement already satisfied: tqdm in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (4.67.1)\n",
      "Requirement already satisfied: dill in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (0.4.1)\n",
      "Requirement already satisfied: flask<2.3.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (2.2.5)\n",
      "Requirement already satisfied: waitress in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (3.0.2)\n",
      "Requirement already satisfied: pyyaml in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (6.0.3)\n",
      "Requirement already satisfied: requests in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (2.32.3)\n",
      "Requirement already satisfied: psutil in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (7.2.2)\n",
      "Requirement already satisfied: jax==0.7.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (0.7.1)\n",
      "Requirement already satisfied: jaxlib==0.7.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (0.7.1)\n",
      "Requirement already satisfied: iqm-client[qiskit] in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qrisp[iqm]) (33.0.3)\n",
      "Requirement already satisfied: ml_dtypes>=0.5.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from jax==0.7.1->qrisp[iqm]) (0.5.4)\n",
      "Requirement already satisfied: opt_einsum in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from jax==0.7.1->qrisp[iqm]) (3.4.0)\n",
      "Requirement already satisfied: Werkzeug>=2.2.2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from flask<2.3.0->qrisp[iqm]) (3.1.5)\n",
      "Requirement already satisfied: Jinja2>=3.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from flask<2.3.0->qrisp[iqm]) (3.0.3)\n",
      "Requirement already satisfied: itsdangerous>=2.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from flask<2.3.0->qrisp[iqm]) (2.2.0)\n",
      "Requirement already satisfied: click>=8.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from flask<2.3.0->qrisp[iqm]) (8.3.1)\n",
      "Requirement already satisfied: mpmath<1.4,>=1.1.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from sympy<=1.13->qrisp[iqm]) (1.3.0)\n",
      "Requirement already satisfied: MarkupSafe>=2.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from Jinja2>=3.0->flask<2.3.0->qrisp[iqm]) (3.0.3)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (1.3.3)\n",
      "Requirement already satisfied: cycler>=0.10 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (0.12.1)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (4.61.1)\n",
      "Requirement already satisfied: kiwisolver>=1.3.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (1.4.9)\n",
      "Requirement already satisfied: packaging>=20.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (24.1)\n",
      "Requirement already satisfied: pillow>=8 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (12.1.0)\n",
      "Requirement already satisfied: pyparsing>=3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (3.3.2)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from matplotlib>=3.5.1->qrisp[iqm]) (2.9.0.post0)\n",
      "Requirement already satisfied: six>=1.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib>=3.5.1->qrisp[iqm]) (1.16.0)\n",
      "Requirement already satisfied: rustworkx>=0.15.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qiskit>=0.44.0->qrisp[iqm]) (0.17.1)\n",
      "Requirement already satisfied: stevedore>=3.0.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qiskit>=0.44.0->qrisp[iqm]) (5.6.0)\n",
      "Requirement already satisfied: typing-extensions in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from qiskit>=0.44.0->qrisp[iqm]) (4.15.0)\n",
      "Requirement already satisfied: pydantic<3.0,>=2.9.2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (2.12.5)\n",
      "Requirement already satisfied: iqm-pulse<13,>=12.7.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (12.7.3)\n",
      "Requirement already satisfied: iqm-station-control-client<13,>=12.0.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (12.0.3)\n",
      "Collecting qiskit>=0.44.0 (from qrisp[iqm])\n",
      "  Downloading qiskit-2.1.2-cp39-abi3-macosx_11_0_arm64.whl.metadata (12 kB)\n",
      "Collecting qiskit-aer<0.18,>=0.13.1 (from iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm])\n",
      "  Downloading qiskit_aer-0.17.2-cp312-cp312-macosx_11_0_arm64.whl.metadata (8.3 kB)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests->qrisp[iqm]) (3.4.4)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests->qrisp[iqm]) (3.11)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests->qrisp[iqm]) (2.6.3)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from requests->qrisp[iqm]) (2026.1.4)\n",
      "Requirement already satisfied: iqm-data-definitions<3.0,>=2.18 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (2.22)\n",
      "Requirement already satisfied: python-rapidjson==1.20 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.20)\n",
      "Requirement already satisfied: scipy-stubs in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.17.0.2)\n",
      "Requirement already satisfied: protobuf<5.0,>=4.25.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-data-definitions<3.0,>=2.18->iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (4.25.8)\n",
      "Requirement already satisfied: types-protobuf in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-data-definitions<3.0,>=2.18->iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (6.32.1.20251210)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp<2.0,>=1.25.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: grpcio<2.0,>=1.65.4 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.76.0)\n",
      "Requirement already satisfied: types-requests in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (2.32.4.20260107)\n",
      "Requirement already satisfied: types-tqdm in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (4.67.0.20250809)\n",
      "Requirement already satisfied: iqm-exa-common<28,>=27.4.3 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (27.4.3)\n",
      "Requirement already satisfied: python-dotenv==0.21.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.21.1)\n",
      "Requirement already satisfied: xarray==2024.10.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (2024.10.0)\n",
      "Requirement already satisfied: ruamel-yaml==0.17.32 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.17.32)\n",
      "Requirement already satisfied: ruamel-yaml-clib==0.2.8 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.2.8)\n",
      "Requirement already satisfied: types-six in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.17.0.20251009)\n",
      "Requirement already satisfied: pandas>=2.1 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from xarray==2024.10.0->iqm-exa-common<28,>=27.4.3->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (3.0.0)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp-proto-grpc==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp-proto-http==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: deprecated>=1.2.6 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.3.1)\n",
      "Requirement already satisfied: googleapis-common-protos~=1.52 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.72.0)\n",
      "Requirement already satisfied: opentelemetry-api~=1.15 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-exporter-otlp-proto-common==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-proto==1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: opentelemetry-sdk~=1.27.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (1.27.0)\n",
      "Requirement already satisfied: importlib-metadata<=8.4.0,>=6.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-api~=1.15->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (8.4.0)\n",
      "Requirement already satisfied: zipp>=0.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from importlib-metadata<=8.4.0,>=6.0->opentelemetry-api~=1.15->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (3.23.0)\n",
      "Requirement already satisfied: opentelemetry-semantic-conventions==0.48b0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from opentelemetry-sdk~=1.27.0->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.48b0)\n",
      "Requirement already satisfied: annotated-types>=0.6.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pydantic<3.0,>=2.9.2->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.7.0)\n",
      "Requirement already satisfied: pydantic-core==2.41.5 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pydantic<3.0,>=2.9.2->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (2.41.5)\n",
      "Requirement already satisfied: typing-inspection>=0.4.2 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from pydantic<3.0,>=2.9.2->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.4.2)\n",
      "Requirement already satisfied: wrapt<3,>=1.10 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from deprecated>=1.2.6->opentelemetry-exporter-otlp-proto-grpc==1.27.0->opentelemetry-exporter-otlp<2.0,>=1.25.0->iqm-station-control-client<13,>=12.0.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (2.0.1)\n",
      "Requirement already satisfied: llvmlite<0.47,>=0.46.0dev0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from numba->qrisp[iqm]) (0.46.0)\n",
      "Collecting numpy>=2.0 (from qrisp[iqm])\n",
      "  Using cached numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl.metadata (62 kB)\n",
      "Requirement already satisfied: optype<0.16,>=0.14.0 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from optype[numpy]<0.16,>=0.14.0->scipy-stubs->iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (0.15.0)\n",
      "Requirement already satisfied: numpy-typing-compat<20251207,>=20250818.1.25 in /opt/homebrew/Caskroom/miniforge/base/envs/py312/lib/python3.12/site-packages (from optype[numpy]<0.16,>=0.14.0->scipy-stubs->iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm]) (20251206.2.4)\n",
      "INFO: pip is looking at multiple versions of numpy-typing-compat to determine which version is compatible with other requirements. This could take a while.\n",
      "Collecting numpy-typing-compat<20251207,>=20250818.1.25 (from optype[numpy]<0.16,>=0.14.0->scipy-stubs->iqm-pulse<13,>=12.7.3->iqm-client[qiskit]; extra == \"iqm\"->qrisp[iqm])\n",
      "  Using cached numpy_typing_compat-20251206.2.3-py3-none-any.whl.metadata (8.0 kB)\n",
      "Downloading qiskit-2.1.2-cp39-abi3-macosx_11_0_arm64.whl (6.8 MB)\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m6.8/6.8 MB\u001b[0m \u001b[31m458.6 kB/s\u001b[0m  \u001b[33m0:00:15\u001b[0m eta \u001b[36m0:00:01\u001b[0m\n",
      "\u001b[?25hDownloading qiskit_aer-0.17.2-cp312-cp312-macosx_11_0_arm64.whl (2.1 MB)\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.1/2.1 MB\u001b[0m \u001b[31m485.6 kB/s\u001b[0m  \u001b[33m0:00:04\u001b[0m eta \u001b[36m0:00:01\u001b[0m\n",
      "\u001b[?25hUsing cached numpy-2.3.5-cp312-cp312-macosx_14_0_arm64.whl (5.1 MB)\n",
      "Downloading numpy_typing_compat-20251206.2.3-py3-none-any.whl (6.3 kB)\n",
      "Installing collected packages: numpy, numpy-typing-compat, qiskit, qiskit-aer\n",
      "\u001b[2K  Attempting uninstall: numpy\n",
      "\u001b[2K    Found existing installation: numpy 2.4.1\n",
      "\u001b[2K    Uninstalling numpy-2.4.1:\n",
      "\u001b[2K      Successfully uninstalled numpy-2.4.1\n",
      "\u001b[2K  Attempting uninstall: numpy-typing-compat━━━━━\u001b[0m \u001b[32m0/4\u001b[0m [numpy]\n",
      "\u001b[2K    Found existing installation: numpy-typing-compat 20251206.2.4mpy]\n",
      "\u001b[2K    Uninstalling numpy-typing-compat-20251206.2.4:[32m0/4\u001b[0m [numpy]\n",
      "\u001b[2K      Successfully uninstalled numpy-typing-compat-20251206.2.4numpy]\n",
      "\u001b[2K  Attempting uninstall: qiskit━━━━━━━━━━━━━━\u001b[0m \u001b[32m0/4\u001b[0m [numpy]\n",
      "\u001b[2K    Found existing installation: qiskit 2.3.0[0m \u001b[32m0/4\u001b[0m [numpy]\n",
      "\u001b[2K    Uninstalling qiskit-2.3.0:━━━━━━━━━━━━━━\u001b[0m \u001b[32m0/4\u001b[0m [numpy]\n",
      "\u001b[2K      Successfully uninstalled qiskit-2.3.0━\u001b[0m \u001b[32m0/4\u001b[0m [numpy]\n",
      "\u001b[2K   \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m4/4\u001b[0m [qiskit-aer]4\u001b[0m [qiskit-aer]\n",
      "\u001b[1A\u001b[2KSuccessfully installed numpy-2.3.5 numpy-typing-compat-20251206.2.3 qiskit-2.1.2 qiskit-aer-0.17.2\n"
     ]
    }
   ],
   "source": [
    "!pip install --upgrade pip\n",
    "!pip install iqm-client\n",
    "!pip install \"qrisp[iqm]\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "16c595a0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Simulated result:  -2.8284800000000003                                               \u001b[2K\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Progress in queue:   0%|          | 0/1 [00:04<?, ?it/s]\n",
      "Progress in queue:   0%|          | 0/1 [00:06<?, ?it/s]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Quantum computer result:  -2.454\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from qrisp import *\n",
    "from qrisp.operators import Z\n",
    "\n",
    "def CHSH_measurement(A,B):\n",
    "    # Implements a circuit for calculating an expectation values in <S>\n",
    "\n",
    "    #prepare a singlet state\n",
    "    singlet = QuantumVariable(2)\n",
    "    h(singlet[0])\n",
    "    cx(singlet[0],singlet[1])\n",
    "    x(singlet[1])\n",
    "    z(singlet[0])\n",
    "\n",
    "    # If Alice chooses measurement A2, measure in the X basis. Otherwise use the Z basis.\n",
    "    if A==2:\n",
    "        h(singlet[0])\n",
    "    \n",
    "    # Same for Bob, but we have to rotate his measurement basis first\n",
    "    ry(-np.pi/4, singlet[1])\n",
    "    if B==2:\n",
    "        h(singlet[1])\n",
    "    \n",
    "    return singlet\n",
    "\n",
    "def ZZ(circ,sim=True):\n",
    "    if sim:\n",
    "        results = circ.get_measurement()\n",
    "    else:\n",
    "        results = circ.get_measurement(backend=quantum_computer)\n",
    "    return results['00']+results['11']-results['01']-results['10']\n",
    "\n",
    "CHSH_sim = ZZ(CHSH_measurement(1,1))-ZZ(CHSH_measurement(1,2))+ZZ(CHSH_measurement(2,1))+ZZ(CHSH_measurement(2,2))\n",
    "print('Simulated result: ',CHSH_sim)\n",
    "\n",
    "from qrisp.interface import IQMBackend\n",
    "quantum_computer = IQMBackend(\n",
    "    api_token = input(\"IQM Resonance API token\"),\n",
    "        device_instance = \"garnet\") # Change this to change which device you run on\n",
    "\n",
    "CHSH_qc = ZZ(CHSH_measurement(1,1),False)-ZZ(CHSH_measurement(1,2),False)+ZZ(CHSH_measurement(2,1),False)+ZZ(CHSH_measurement(2,2),False)\n",
    "\n",
    "print(\"Quantum computer result: \", CHSH_qc)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84d1308f",
   "metadata": {},
   "source": [
    "Indeed, the result on the real quantum computer was less than $-2$, illustrating that entanglement must be present."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "43384f62",
   "metadata": {},
   "source": [
    "### Multi-qubit entanglement\n",
    "\n",
    "CHSH and its generalizations, the *Bell inequalities*, tell you that entanglement is present between two qubits. However, this is not the only form of entanglement, and this challenge is really about *multipartite entanglement*.\n",
    "\n",
    "Another classic example is the Greenberger–Horne–Zeilinger (GHZ) state of three qubits:\n",
    "$$\\ket{\\text{GHZ}} = \\frac{1}{\\sqrt{2}}\\left(\\ket{000}+\\ket{111}\\right)$$\n",
    "\n",
    "In this case, there is no way to factor $\\ket{\\text{GHZ}}$ into the product of a state for each qubit $\\ket{\\psi_1} \\otimes \\ket{\\psi_2} \\otimes \\ket{\\psi_3}$. But even more strongly, we cannot factor out *any* qubit's state; we can't write $\\ket{\\psi_{12}} \\otimes \\ket{\\psi_3}$ or any generalization thereof. This is called *multipartite entanglement*, describing correlations that are unique to many entangled qubits, not just two entangled qubits. Multipartite entanglement means that there is no way to meaningfully say that *any subset* of the qubits has its own well-defined state; the only well-defined state is the state of all the qubits together.\n",
    "\n",
    "Compare the GHZ state to the state\n",
    "$$\\ket{\\text{fake GHZ}} = \\frac{1}{2}\\left(\\ket{000}+\\ket{001}+\\ket{110}+\\ket{111}\\right)$$\n",
    "(which actually has a pretty big overlap with the true GHZ state!). It is easy to see that\n",
    "$$\\ket{\\text{fake GHZ}} = \\frac{1}{\\sqrt{2}}\\left(\\ket{00}+\\ket{11}\\right) \\otimes \\frac{1}{\\sqrt{2}}\\left(\\ket{0}+\\ket{1}\\right)$$\n",
    "The first two qubits are entangled, but the last one is not entangled with anything (although it's in a superposition state). So this state is not multipartite entangled; it only has entanglement between the first two qubits.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bdf19eaf",
   "metadata": {},
   "source": [
    "## Other ideas on how to demonstrate entanglement\n",
    "\n",
    "There are a number of ways to demonstrate entanglement using quantum circuits. For example, you could implement:\n",
    "- Generalizations of the CHSH/Bell inequalities\n",
    "- Quantum games\n",
    "- Entanglement witnesses\n",
    "\n",
    "You do not need to develop a new theoretical method. Your work should focus on finding and choosing an appropriate method, implementing it, and optimizing your implementation."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4394c790",
   "metadata": {},
   "source": [
    "# Getting set up on Resonance\n",
    "\n",
    "Take a look at the Connecting To Resonance tutorial in the challenge's Github repo to learn how to set up your Python environment, make a Resonance account, connect to Resonance in your preferred framework, and manage jobs on the quantum computer.\n",
    "\n",
    "If you have any problems, IQM mentors Danny and Kristine are here to help! Visit our table or reach out to us on the hackathon Discord!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c19468ca",
   "metadata": {},
   "source": [
    "# Things to be aware of when running jobs on Resonance\n",
    "\n",
    "- Before you run jobs, we recommend checking the queue on the Resonance website. Usually at least one of the machines has a short queue. \n",
    "- The most recent performance metrics of all three Resonance machines are available on the Resonance website.\n",
    "- Limits on shot counts and circuits per job are also listed on the Resonance website.\n",
    "- If for any reason you run out of credits, get in touch with an IQM mentor and we can work with you."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78f0a13d",
   "metadata": {},
   "source": [
    "## Useful resources\n",
    "\n",
    "- Quantum Computation and Quantum Information by Nielsen and Chuang - classic textbook\n",
    "- [IQM Academy](https://iqmacademy.com/) - lessons and tutorials on quantum computing, including Jupyter notebook running on IQM Resonance\n",
    "- [Qrisp documentation](https://qrisp.eu/index.html)\n",
    "- [IQM documentation](https://docs.meetiqm.com/) - details about IQM Resonance and interacting with IQM machines"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "06366074",
   "metadata": {},
   "source": [
    "# The non-technical stuff - stay engaged!\n",
    "\n",
    "We believe quantum hackathons are more than just competitions — they’re spaces to:\n",
    "- learn from each other   \n",
    "- and turn rough ideas into real-world impact   \n",
    "- engange with tomorrow's real-world innovation\n",
    "\n",
    "Whether you’re here to win, learn, network, or just ship something cool over a short burst of focused time — you’re in the right place.\n",
    "Please get in touch with IQM mentors Danny and Kristine on Discord!\n",
    "\n",
    "--- \n",
    "\n",
    "## Giveaways \n",
    "\n",
    "We have T-shirts! Come talk to us at our booth!\n",
    "\n",
    "## Catch us on social media!\n",
    "\n",
    "Please tag #IQM and $iQuHACK on [LinkedIn](https://www.linkedin.com/) and talk to us about your about your experience with IQM Resonance!\n",
    "\n",
    "Join the [IQM Discord Channel](https://discord.gg/F38bwqPYJ4)) and connect with other Resonance users and quantum enthusiasts!\n",
    "\n",
    "---\n",
    "\n",
    "## Important links\n",
    "\n",
    "\n",
    "#### [IQM Resonance](https://resonance.meetiqm.com/)\n",
    "\n",
    "IQM Resonance is our quantum computing cloud platform that gives you access to IQM’s quantum hardware to design and run quantum programs. It supports multiple programming frameworks, offers thorough insights on our QPU specifications and your quantum jobs. Tools like the open-source [Qrisp](https://www.qrisp.eu) SDK for development and the pulse-level access package PulLA give you full control over the stack. \n",
    "\n",
    "#### [IQM Academy](https://www.iqmacademy.com/)\n",
    "\n",
    "IQM Academy is our learning and teaching platform, where you will find plenty of material to boost your quantum know-how. This includes amazing notebooks in different SDKs that you can adjust and run out of the box, tutorials on our QPUs and and resources on algorithm development. \n",
    "\n",
    "#### [IQM Discord Channel](https://discord.gg/F38bwqPYJ4)\n",
    "\n",
    "The IQM Discord channel is our community platform, where we will inform you about all upcoming community events and enable you to reach out to us. We plan to run long-term challenges like bug-hunts and feature sprints with prizes!\n",
    "You are the IQM community - connect with other quantum enthusiasts!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51e6caa0",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py312",
   "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.12.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}

About

IQM iQuHACK 2026 In-Person Challenge

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors