Site Tools


hopf-fibration

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
hopf-fibration [May 16, 2026 at 22:11] Ivan Janevskihopf-fibration [August 22, 2026 at 15:22] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 # Hopf fibration # Hopf fibration
-**Hopf fibration** is a connection between state vector representation of a qubit $\lvert\psi\rangle = a\lvert 0\rangle + b\lvert 1\rangle$ and points on the Bloch sphere $(x, y, z)$. 
  
-$$\pi:\mathbb{C}^2\rightarrow\mathbb{R}^3\qquad \pi(\lvert\psi\rangle) = \langle\psi\lvert\sigma_i\lvert\psi\rangle $$+**The Hopf fibration** is a map from the three-sphere onto the two-sphere whose preimages are circles, written $S^1 \hookrightarrow S^3 \xrightarrow{\ h\ } S^2$. Every point of $S^2$ pulls back to a full circle in $S^3$, no two of those circles meet, and together they fill $S^3$ exactly once. It matters here because it is not an abstraction invented for its own sake: a single qubit state is a point of $S^3$, global phase is the circle, and the [[bloch-sphere|Bloch sphere]] is what is left over.
  
-More explicitly+\documentclass[border=6pt]{standalone} 
-$$ x = 2\mathfrak{Re}(a*b)$$+\usepackage{tikz-cd} 
 +\begin{document} 
 +\begin{tikzcd}[row sep=large, column sep=large] 
 +S^1 \arrow[r, hook] & S^3 \arrow[d, "h"] \\ 
 +                    & S^2 
 +\end{tikzcd} 
 +\end{document} 
 + 
 +## Fibrations, briefly 
 + 
 +A **fiber bundle** is a space that looks locally like a product but need not be one globally. Three piecesa total space $E$, a base $B$, and a fiber $F$, with a projection $\pi : E \to B$ such that every point of $B$ has a neighbourhood $U$ where $\pi^{-1}(U)$ looks like $U \times F$. 
 + 
 +The familiar case is the cylinder, $S^1 \times [0,1]$, which is a bundle over $S^1$ with fiber $[0,1]$ and is a product globally. The Möbius band is the same base and the same fiber and is **not** a product, which is the whole point of the definition: local triviality is cheap, global triviality is not. Draw both as a square whose left and right edges get glued, with the fibers as the vertical lines, and the entire difference is which way round the gluing goes. 
 + 
 +\documentclass[border=5pt]{standalone} 
 +\usepackage{tikz} 
 +\usetikzlibrary{arrows.meta} 
 +\begin{document} 
 +\begin{tikzpicture}[line cap=round, line join=round, >=Latex, scale=1.05] 
 +  % Both are the same square with the same fibers drawn in. The only difference 
 +  % is the direction of the arrows, which is how the two ends get glued. 
 +  \begin{scope} 
 +    \foreach \in {0.3,0.6,...,2.1} \draw[blue!55!black!45] (\x,0) -- (\x,1.4); 
 +    \draw[gray!65] (0,0) -- (2.4,0)  (0,1.4) -- (2.4,1.4); 
 +    \draw[blue!65!black, very thick, ->] (0,0) -- (0,1.4); 
 +    \draw[blue!65!black, very thick, ->] (2.4,0) -- (2.4,1.4); 
 +    \node[font=\small] at (1.2,-0.5) {cylinder $S^1\times[0,1]$}; 
 +  \end{scope} 
 +  \begin{scope}[xshift=3.9cm] 
 +    \foreach \x in {0.3,0.6,...,2.1} \draw[orange!75!black!45] (\x,0) -- (\x,1.4); 
 +    \draw[gray!65] (0,0) -- (2.4,0)  (0,1.4) -- (2.4,1.4); 
 +    \draw[orange!85!black, very thick, ->] (0,0) -- (0,1.4); 
 +    \draw[orange!85!black, very thick, ->] (2.4,1.4) -- (2.4,0); 
 +    \node[font=\small] at (1.2,-0.5) {M\"obius band}; 
 +  \end{scope} 
 +  \node[font=\scriptsize, gray!50!black] at (3.15,1.75) 
 +       {glue the ends; the arrows say which way}; 
 +\end{tikzpicture} 
 +\end{document} 
 + 
 +The Hopf fibration is the same story one dimension up, and it is the interesting case in exactly the same way the Möbius band is: $S^3$ is **not** $S^2 \times S^1$, though every small patch of it is. 
 + 
 +## The map 
 + 
 +Write $S^3$ as the unit sphere in $\CC^2$ rather than in $\RR^4$, which costs nothing and buys everything: 
 + 
 +$$S^3 = \left\{ (\alpha, \beta) \in \CC^2 \ :\ |\alpha|^2 + |\beta|^2 = 1 \right\}$$ 
 + 
 +The Hopf map sends such a pair to a point of $\RR^3$: 
 + 
 +$$h(\alpha,\beta) = \Big(\, 2\,\Re(\bar\alpha\beta),\ \ 2\,\Im(\bar\alpha\beta),\ \ |\alpha|^2 - |\beta|^2 \,\Big)$$ 
 + 
 +That the image lands on $S^2$ is a one-line check. With $u = 2\bar\alpha\beta$ and $v = |\alpha|^2-|\beta|^2$, 
 + 
 +$$|u|^2 + v^2 = 4|\alpha|^2|\beta|^2 + \big(|\alpha|^2-|\beta|^2\big)^2 = \big(|\alpha|^2+|\beta|^2\big)^2 = 1$$ 
 + 
 +In real coordinates $\alpha = x_1 + ix_2$, $\beta = x_3 + ix_4$ it is four quadratics: 
 + 
 +$$h(x) = \big(\,2(x_1x_3 + x_2x_4),\ \ 2(x_1x_4 - x_2x_3),\ \ x_1^2 + x_2^2 - x_3^2 - x_4^2\,\big)$$ 
 + 
 +## Why the fibers are circles 
 + 
 +Multiply both coordinates by the same unit complex number $e^{i\chi}$. Then $\bar\alpha\beta$ is unchanged, because $\overline{e^{i\chi}\alpha}\,e^{i\chi}\beta = e^{-i\chi}e^{i\chi}\bar\alpha\beta = \bar\alpha\beta$, and the moduli are unchanged too. So 
 + 
 +$$h(e^{i\chi}\alpha,\ e^{i\chi}\beta) = h(\alpha,\beta) \quad \text{for every } \chi$$ 
 + 
 +The set $\{(e^{i\chi}\alpha, e^{i\chi}\beta) : \chi \in [0,2\pi)\}$ is circle in $S^3$, and it is exactly one fiber. The converse takes slightly more work and is also true: if $h(\alpha,\beta) = h(\alpha',\beta')$ then the two differ by a common phase. So the fibers are precisely the orbits of the $U(1)$ action, and 
 + 
 +$$S^3 / U(1) \;\cong\; S^2$$ 
 + 
 +This is the group-theoretic statement of the same fact, and it is worth carrying: $S^3$ is the group $SU(2)$, the fiber is its $U(1)$ subgroup, and the base is the coset space. The unit quaternions are the same object again, with the fiber the circle of unit complex numbers sitting inside them. 
 + 
 +## Hopf coordinates 
 + 
 +Parametrise a point of $S^3$ by three angles: 
 + 
 +$$\alpha = \cos\tfrac{\theta}{2}\,e^{i\chi}, \qquad \beta = \sin\tfrac{\theta}{2}\,e^{i(\chi + \varphi)}$$ 
 + 
 +with $\theta \in [0,\pi]$, and $\varphi, \chi \in [0, 2\pi)$. Feeding this through $h$ gives 
 + 
 +$$h = \big(\sin\theta\cos\varphi,\ \sin\theta\sin\varphi,\ \cos\theta\big)$$ 
 + 
 +which is ordinary spherical coordinates on $S^2$. The base is $(\theta, \varphi)$ and $\chi$ is the fiber coordinate: it moves the point along its circle and never shows up downstairs. Anyone who has written $\lvert\psi\rangle = \cos\frac{\theta}{2}\lvert 0\rangle + e^{i\varphi}\sin\frac{\theta}{2}\lvert 1\rangle$ has already used these coordinates, with $\chi$ silently set to zero. 
 + 
 +The two letters are worth keeping apart, since this article is about the difference between them: $\chi$ moves within a fiber and is invisible, $\varphi$ moves the base point and is not. 
 + 
 +## Seeing it in three dimensions 
 + 
 +$S^3$ does not fit in $\RR^3$, so the standard move is **stereographic projection** from one point. Remove the pole $(0,0,0,1)$ and send 
 + 
 +$$\sigma(x_1,x_2,x_3,x_4) = \frac{1}{1 - x_4}\,(x_1,\ x_2,\ x_3)$$ 
 + 
 +Everything except the removed pole lands somewhere in $\RR^3$, circles stay circles, and angles are preserved. The one cost is that a circle through the removed pole becomes a straight line, which is a circle through infinity if that is a comfortable thing to say and an annoying special case if it is not. 
 + 
 +\documentclass[border=4pt]{standalone} 
 +\usepackage{amssymb} 
 +\usepackage{tikz} 
 +\usetikzlibrary{arrows.meta} 
 +\begin{document} 
 +\begin{tikzpicture}[line cap=round, line join=round, scale=1.5, >=Latex] 
 +  \draw[gray!45, thick] (-1.5,0) -- (2.7,0) node[right, black] {$\mathbb{R}^n$}; 
 +  \draw[blue!60!black, thick] (0,0) circle (1); 
 +  \fill[black] (0,1) circle (1.3pt) node[above left] {$N$}; 
 +  % x in the southern hemisphere: the ray from N crosses the plane on the way 
 +  \draw[orange!85!black, thick] (0,1) -- (0.643,-0.766); 
 +  \fill[orange!85!black] (0.643,-0.766) circle (1.3pt) node[below right] {$x$}; 
 +  \fill[orange!85!black] (0.364,0) circle (1.3pt) node[above right=-1pt] {$\sigma(x)$}; 
 +  % the closer to N, the further out it lands 
 +  \draw[teal!70!black, thick, dashed, ->] (0,1) -- (2.146,0); 
 +  \fill[teal!70!black] (0.766,0.643) circle (1.3pt); 
 +  \node[teal!70!black, font=\tiny, fill=white, inner sep=1pt] at (1.62,0.86) {closer to $N$, further out}; 
 +\end{tikzpicture} 
 +\end{document} 
 + 
 +Two fibers are worth knowing by heart, because they anchor every picture below. Take the projection point to be on the fiber over the south pole. Then: 
 + 
 + - the fiber over $\lvert 0\rangle$, the north pole, is the **unit circle in the $xy$-plane** 
 + - the fiber over $\lvert 1\rangle$, the south pole, is the **$z$-axis** 
 + 
 +A line threading a circle. They are linked, once, and they cannot be pulled apart. 
 + 
 +## One fiber 
 + 
 +Each base point $(\theta,\varphi)$ gives a circle, and here it is. Press play to set it moving, and drag to turn the picture, which works whether it is running or not. 
 + 
 +Every sketch on this page carries `controls="play"`, so they start paused. Five of them looping at sixty frames a second is five cores' worth of nothing much, and most of what there is to see holds still. 
 + 
 +<p5sketch width="440" height="360" controls="play"> 
 +    // one fiber of the Hopf map, stereographically projected 
 +    let phi = 0; 
 +    const R = 62; 
 + 
 +    function setup() { 
 +      createCanvas(sketchWidth, sketchHeight, WEBGL); 
 +    } 
 + 
 +    // a point of S^3 on the fiber over (theta, phi), then projected to R^3 
 +    function fiber(theta, phi, chi) { 
 +      const c = cos(theta / 2), s = sin(theta / 2); 
 +      const x1 = c * cos(chi),        x2 = c * sin(chi); 
 +      const x3 = s * cos(chi + phi),  x4 = s * sin(chi + phi); 
 +      const k = R / (1 - x4); 
 +      return [k * x1, k * x2, k * x3]; 
 +    } 
 + 
 +    function drawFiber(theta, phi) { 
 +      beginShape(); 
 +      for (let chi = 0; chi <= TWO_PI + 0.02; chi += 0.04) { 
 +        const p = fiber(theta, phi, chi); 
 +        vertex(p[0], p[1], p[2]); 
 +      } 
 +      endShape(); 
 +    } 
 + 
 +    function draw() { 
 +      background(18, 20, 26); 
 +      orbitControl(1, 1, 0); 
 +      rotateX(-0.5); 
 +      rotateZ(frameCount * 0.003); 
 + 
 +      const theta = 1.1; 
 +      phi += 0.012; 
 + 
 +      // the two fibers that anchor the picture 
 +      noFill(); 
 +      strokeWeight(1); 
 +      stroke(90, 100, 120); 
 +      drawFiber(0.001, 0);                       // over |0>: the unit circle 
 +      line(0, 0, -260, 0, 0, 260);               // over |1>: the z axis 
 + 
 +      // the moving fiber 
 +      stroke(255, 170, 60); 
 +      strokeWeight(2.5); 
 +      drawFiber(theta, phi); 
 +    } 
 + 
 +    // dragging still turns the picture while the animation is paused 
 +    function mouseDragged() { 
 +      if (!isLooping()) redraw(); 
 +    } 
 +</p5sketch> 
 + 
 +```javascript 
 +<p5sketch width="440" height="360" controls="play"> 
 +    // a point of S^3 on the fiber over (theta, phi), then projected to R^3 
 +    function fiber(theta, phi, chi) { 
 +      const c = cos(theta / 2), s = sin(theta / 2); 
 +      const x1 = c * cos(chi),        x2 = c * sin(chi); 
 +      const x3 = s * cos(chi + phi),  x4 = s * sin(chi + phi); 
 +      const k = R / (1 - x4); 
 +      return [k * x1, k * x2, k * x3]; 
 +    } 
 +</p5sketch> 
 +``` 
 + 
 +The grey circle and the grey line are the two anchor fibers. The orange one belongs to a base point at fixed latitude $\theta = 1.1$ going once around in $\varphi$, and it threads the grey circle every time. 
 + 
 +## Any two fibers are linked 
 + 
 +This is the part that makes the Hopf fibration more than a bookkeeping device. Take two distinct points of $S^2$, however close together. Their fibers are disjoint circles in $S^3$, and after projection they are two circles in $\RR^3$ with **linking number one**. Not merely tangled: they cannot be separated without cutting. 
 + 
 +\documentclass[border=4pt]{standalone} 
 +\usepackage{tikz} 
 +\begin{document} 
 +\begin{tikzpicture}[line cap=round, line join=round, scale=1.5] 
 +  % A link, not two overlapping circles: each strand is broken where it passes 
 +  % under the other. The circles meet at (0.625, +-0.781); orange goes over at 
 +  % the top crossing and under at the bottom one, which is linking number 1. 
 +  \draw[orange!85!black, line width=1.6pt] (1.25,0) circle (1); 
 +  \draw[white, line width=6pt] (0,0) circle (1); 
 +  \draw[blue!65!black, line width=1.6pt] (0,0) circle (1); 
 +  \begin{scope} 
 +    \clip (0.625,0.781) circle (0.34); 
 +    \draw[white, line width=6pt] (1.25,0) circle (1); 
 +    \draw[orange!85!black, line width=1.6pt] (1.25,0) circle (1); 
 +  \end{scope} 
 +  \node[blue!65!black] at (-0.72,1.02) {$h^{-1}(p)$}; 
 +  \node[orange!85!black] at (1.98,-1.02) {$h^{-1}(q)$}; 
 +\end{tikzpicture} 
 +\end{document} 
 + 
 +Two fibers, side by side. Turn it, or press play and let it turn itself, and the linking shows from every angle: 
 + 
 +<p5sketch width="440" height="340" controls="play"> 
 +    // two fibers over nearby base points are still linked once 
 +    const R = 58; 
 + 
 +    function setup() { 
 +      createCanvas(sketchWidth, sketchHeight, WEBGL); 
 +    } 
 + 
 +    function fiber(theta, phi, chi) { 
 +      const c = cos(theta / 2), s = sin(theta / 2); 
 +      const x1 = c * cos(chi),        x2 = c * sin(chi); 
 +      const x3 = s * cos(chi + phi),  x4 = s * sin(chi + phi); 
 +      const k = R / (1 - x4); 
 +      return [k * x1, k * x2, k * x3]; 
 +    } 
 + 
 +    function drawFiber(theta, phi) { 
 +      beginShape(); 
 +      for (let chi = 0; chi <= TWO_PI + 0.02; chi += 0.04) { 
 +        const p = fiber(theta, phi, chi); 
 +        vertex(p[0], p[1], p[2]); 
 +      } 
 +      endShape(); 
 +    } 
 + 
 +    function draw() { 
 +      background(18, 20, 26); 
 +      orbitControl(1, 1, 0); 
 +      rotateX(-0.45); 
 +      rotateZ(frameCount * 0.004); 
 + 
 +      noFill(); 
 +      strokeWeight(2.5); 
 + 
 +      stroke(90, 150, 240); 
 +      drawFiber(1.0, 0); 
 + 
 +      stroke(255, 150, 70); 
 +      drawFiber(1.9, 2.2); 
 +    } 
 + 
 +    function mouseDragged() { 
 +      if (!isLooping()) redraw(); 
 +    } 
 +</p5sketch> 
 + 
 +The two circles never touch, they are the preimages of two different points, and no amount of rotating finds an angle where they come apart. 
 + 
 +## Latitude circles become tori 
 + 
 +Fix $\theta$ and let $\varphi$ run all the way around. That is a circle of latitude on $S^2$, and its preimage is a circle of fibers, which is a **torus** in $S^3$. Projected into $\RR^3$ it is an ordinary torus of revolution, and the fibers lie on it as **Villarceau circles**: neither the tube circles nor the circles of revolution, but the diagonal ones that wind once around each way. 
 + 
 +<p5sketch width="460" height="380" controls="play"> 
 +    // the preimage of a circle of latitude is a torus, ruled by fibers 
 +    const R = 60; 
 + 
 +    function setup() { 
 +      createCanvas(sketchWidth, sketchHeight, WEBGL); 
 +    } 
 + 
 +    function fiber(theta, phi, chi) { 
 +      const c = cos(theta / 2), s = sin(theta / 2); 
 +      const x1 = c * cos(chi),        x2 = c * sin(chi); 
 +      const x3 = s * cos(chi + phi),  x4 = s * sin(chi + phi); 
 +      const k = R / (1 - x4); 
 +      return [k * x1, k * x2, k * x3]; 
 +    } 
 + 
 +    function drawFiber(theta, phi) { 
 +      beginShape(); 
 +      for (let chi = 0; chi <= TWO_PI + 0.02; chi += 0.05) { 
 +        const p = fiber(theta, phi, chi); 
 +        vertex(p[0], p[1], p[2]); 
 +      } 
 +      endShape(); 
 +    } 
 + 
 +    function draw() { 
 +      background(18, 20, 26); 
 +      orbitControl(1, 1, 0); 
 +      rotateX(-0.5); 
 +      rotateZ(frameCount * 0.0035); 
 + 
 +      const theta = 1.25; 
 +      const n = 28; 
 + 
 +      noFill(); 
 +      strokeWeight(1.6); 
 +      for (let i = 0; i < n; i++) { 
 +        const phi = TWO_PI * i / n; 
 +        stroke(120 + 110 * sin(phi), 150, 230 - 90 * sin(phi), 210); 
 +        drawFiber(theta, phi); 
 +      } 
 +    } 
 + 
 +    function mouseDragged() { 
 +      if (!isLooping()) redraw(); 
 +    } 
 +</p5sketch> 
 + 
 +Two facts fall out of the picture. Every one of those circles is linked with every other, so a torus here is not a bundle of parallel curves but a fully interlocked family. And the two anchor fibers from earlier are the degenerate ends: as $\theta \to 0$ the torus collapses onto the unit circle, and as $\theta \to \pi$ it collapses onto the $z$-axis. 
 + 
 +## The whole thing at once 
 + 
 +Stack several latitudes and the tori nest, one inside the next, filling $\RR^3$ and therefore filling $S^3$. 
 + 
 +<p5sketch width="460" height="400" controls="play"> 
 +    // several latitudes at once: nested tori filling S^3 
 +    const R = 58; 
 + 
 +    function setup() { 
 +      createCanvas(sketchWidth, sketchHeight, WEBGL); 
 +    } 
 + 
 +    function fiber(theta, phi, chi) { 
 +      const c = cos(theta / 2), s = sin(theta / 2); 
 +      const x1 = c * cos(chi),        x2 = c * sin(chi); 
 +      const x3 = s * cos(chi + phi),  x4 = s * sin(chi + phi); 
 +      const k = R / (1 - x4); 
 +      return [k * x1, k * x2, k * x3]; 
 +    } 
 + 
 +    function drawFiber(theta, phi) { 
 +      beginShape(); 
 +      for (let chi = 0; chi <= TWO_PI + 0.02; chi += 0.06) { 
 +        const p = fiber(theta, phi, chi); 
 +        vertex(p[0], p[1], p[2]); 
 +      } 
 +      endShape(); 
 +    } 
 + 
 +    function draw() { 
 +      background(16, 18, 24); 
 +      orbitControl(1, 1, 0); 
 +      rotateX(-0.55); 
 +      rotateZ(frameCount * 0.003); 
 + 
 +      const levels = [0.55, 1.0, 1.45, 1.9, 2.35]; 
 +      const cols = [ 
 +        [110, 200, 255], [120, 235, 190], [250, 220, 110], 
 +        [255, 150, 90],  [235, 110, 160] 
 +      ]; 
 + 
 +      noFill(); 
 +      strokeWeight(1.3); 
 +      for (let l = 0; l < levels.length; l++) { 
 +        stroke(cols[l][0], cols[l][1], cols[l][2], 170); 
 +        for (let i = 0; i < 16; i++) { 
 +          drawFiber(levels[l], TWO_PI * i / 16); 
 +        } 
 +      } 
 +    } 
 + 
 +    function mouseDragged() { 
 +      if (!isLooping()) redraw(); 
 +    } 
 +</p5sketch> 
 + 
 +Notice what is not happening: no fiber crosses another, and none is redundant. Every point of $\RR^3$ in the picture lies on exactly one circle. That is the fibration. 
 + 
 +## The qubit 
 + 
 +Now the reason this sits in a wiki about quantum computing rather than one about topology. 
 + 
 +A pure single-qubit state is $\lvert\psi\rangle = \alpha\lvert 0\rangle + \beta\lvert 1\rangle$ with $\alpha,\beta \in \CC$ and $|\alpha|^2+|\beta|^2 = 1$. That is not *like* a point of $S^3$. It **is** a point of $S^3$, the same equation written with different letters. 
 + 
 +[[global-phase|Global phase]] is unobservable: $\lvert\psi\rangle$ and $e^{i\chi}\lvert\psi\rangle$ give identical probabilities for every measurement, because every expectation value is a sandwich $\langle\psi\rvert A \lvert\psi\rangle$ and the two phases cancel. So the physically distinct states are not the points of $S^3$ but the circles, and the space of them is $S^3/U(1) = S^2$. The Bloch sphere is the base space of the Hopf fibration, and nothing else. 
 + 
 +The Bloch vector is the Hopf map spelled out in physics notation: 
 + 
 +$$\vec r = \big(\langle X\rangle, \langle Y\rangle, \langle Z\rangle\big) 
 += \big(2\Re(\bar\alpha\beta),\ 2\Im(\bar\alpha\beta),\ |\alpha|^2 - |\beta|^2\big) = h(\alpha,\beta)$$ 
 + 
 +Which is to say the three Pauli expectation values *are* the three components of $h$. The correspondence is not an analogy: 
 + 
 +^ Fibration ^ Qubit ^ 
 +| total space $S^3$ | normalised state vector $(\alpha,\beta)$ | 
 +| fiber $S^1$ | global phase $e^{i\chi}$ | 
 +| base $S^2$ | Bloch sphere, the observable state | 
 +| projection $h$ | $\vec r = (\langle X\rangle,\langle Y\rangle,\langle Z\rangle)$ | 
 +| $\theta,\varphi$ | polar and azimuthal Bloch angles | 
 +| structure group $U(1)$ | phase freedom | 
 + 
 +### Moving along the fiber changes nothing 
 + 
 +A global phase gate slides the state along its own fiber and leaves the Bloch vector exactly where it was. Below, the left panel is the fiber circle with the state travelling around it, and the right panel is the Bloch vector that results. Press play: the left panel moves and the right one does not. 
 + 
 +<p5sketch width="460" height="260" controls="play"> 
 +    // global phase moves the state along its fiber; the Bloch vector is fixed 
 +    let chi = 0; 
 +    const theta = 1.15, phi = 0.9; 
 + 
 +    function setup() { 
 +      createCanvas(sketchWidth, sketchHeight); 
 +      textFont('monospace', 11); 
 +    } 
 + 
 +    function draw() { 
 +      background(250); 
 +      chi += 0.02; 
 + 
 +      // left: the fiber, as a circle traversed by the phase 
 +      push(); 
 +      translate(width * 0.26, height * 0.52); 
 +      noFill(); 
 +      stroke(180); 
 +      circle(0, 0, 150); 
 +      stroke(120); 
 +      line(-95, 0, 95, 0); 
 +      line(0, -95, 0, 95); 
 +      fill(255, 150, 60); 
 +      noStroke(); 
 +      circle(75 * cos(chi), 75 * sin(chi), 13); 
 +      fill(60); 
 +      text('fiber: e^(i chi) |psi>', -68, 108); 
 +      pop(); 
 + 
 +      // right: the Bloch vector, which does not care 
 +      push(); 
 +      translate(width * 0.72, height * 0.52); 
 +      noFill(); 
 +      stroke(180); 
 +      circle(0, 0, 150); 
 +      ellipse(0, 0, 150, 52); 
 +      stroke(120); 
 +      line(0, -80, 0, 80); 
 +      line(-80, 0, 80, 0); 
 + 
 +      const bx = sin(theta) * cos(phi) * 75; 
 +      const by = -cos(theta) * 75; 
 +      stroke(60, 120, 220); 
 +      strokeWeight(2.5); 
 +      line(0, 0, bx, by); 
 +      noStroke(); 
 +      fill(60, 120, 220); 
 +      circle(bx, by, 11); 
 +      fill(60); 
 +      strokeWeight(1); 
 +      text('Bloch vector: fixed', -55, 108); 
 +      pop(); 
 +    } 
 +</p5sketch> 
 + 
 +The same statement in a circuit. A phase applied to the whole register is not a gate anyone can detect: 
 + 
 +\documentclass[border=4pt]{standalone} 
 +\usepackage{tikz} 
 +\usepackage{quantikz} 
 +\begin{document} 
 +\begin{quantikz} 
 +\lstick{$\ket{\psi}$} & \gate{e^{i\chi}} & \meter{} & \rstick{same statistics} 
 +\end{quantikz} 
 +\end{document} 
 + 
 +A **relative** phase is a different animal entirely. It moves $\varphi$, which is a base coordinate, so it moves the Bloch vector and is measurable. That is the difference between $S\lvert\psi\rangle$ mattering and $e^{i\chi}\lvert\psi\rangle$ not mattering, and the fibration is where the difference lives: one is motion in the base, the other is motion in the fiber. 
 + 
 +## Why it is not a product 
 + 
 +$S^3 \ne S^2 \times S^1$, and the linking is the reason. In a product $S^2 \times S^1$ the fibers $\{p\}\times S^1$ can be pulled apart: pick two points of $S^2$, connect them by nothing at all, and the two circles sit in separate slices, unlinked. In $S^3$ every pair of fibers is linked once, so no such splitting exists. 
 + 
 +The invariant that detects this is the **Hopf invariant**, and it is why the map is famous beyond geometry. Before it, $\pi_n(S^m)$ for $n > m$ was expected to vanish. The Hopf map is an element of 
 + 
 +$$\pi_3(S^2) \cong \ZZ$$ 
 + 
 +of infinite order, generating the group, and the linking number of two fibers is precisely the invariant that measures it. A map from a higher sphere onto a lower one that cannot be contracted to a point was a genuine surprise in 1931 and is the origin of a large amount of what followed. 
 + 
 +Fibrations of spheres by spheres of this kind exist for each of the four normed division algebras and, by a theorem of Adams, nowhere else: 
 + 
 +^ Algebra ^ Fibration ^ Dimensions ^ 
 +| $\RR$ | $S^0 \to S^1 \to S^1$ | $0, 1, 1$ | 
 +| $\CC$ | $S^1 \to S^3 \to S^2$ | $1, 3, 2$ | 
 +| $\mathbb{H}$ | $S^3 \to S^7 \to S^4$ | $3, 7, 4$ | 
 +| $\mathbb{O}$ | $S^7 \to S^{15} \to S^8$ | $7, 15, 8$ | 
 + 
 +The complex row is the one this page is about. The real row is the double cover of the circle by itself and is not very interesting. 
 + 
 +The quaternionic one, $S^3 \to S^7 \to S^4$, is the two-qubit story in the same way the complex one is the one-qubit story, and it is where entanglement enters the picture. 
 + 
 +## Where it turns up 
 + 
 + - **Qubits.** The [[bloch-sphere|Bloch sphere]] is the base, [[global-phase|global phase]] is the fiber. Any argument about what is and is not observable in a pure state is an argument about the fibration. 
 + - **Berry phase.** Transport a state around a loop in the base and it comes back rotated in the fiber. That rotation is the holonomy of a connection on this bundle, and for a spin one-half it is $-\Omega/2$, where $\Omega$ is the solid angle the loop encloses on the Bloch sphere. The geometry of the bundle is doing the bookkeeping, not the dynamics. 
 + - **Spinors and the belt trick.** $SU(2) \to SO(3)$ is a double cover, and a $2\pi$ rotation returning a spinor to minus itself is the same statement about $S^3$ that the fibration organises. 
 + - **Magnetic monopoles.** The Dirac monopole is a connection on a $U(1)$ bundle over the sphere surrounding it. Such bundles are classified by an integer, the Chern number, and the Hopf bundle is the case of charge one. That classification is why magnetic charge comes in quantised units at all, and it is a different integer from the $\pi_3(S^2)$ one above even though both are $\ZZ$. 
 + 
 +The mark \tikz \draw[orange!85!black, line width=1pt] (0,0) circle (0.5ex); is a fiber, \tikz \fill[blue!65!black] (0,0) circle (0.4ex); is a base point, and the whole subject is the claim that you cannot comb the first into the second without something interesting happening. 
 + 
 +## See also 
 + 
 + - [[bloch-sphere]] 
 + - [[global-phase]] 
 + - [[qubit]] 
 + - [[quantum-state]]
  
hopf-fibration.1778969496.md.gz · Last modified: by Ivan Janevski