Skip to content
The Lumenary
Advanced undergraduateUndergraduate 125 min

Matrix groups and continuous symmetry

Rotations, reflections, boosts and spins form groups that are also spaces. Quaternions turn rotations of space into arithmetic, a rotation by 360°360° secretly differs from doing nothing, and the exponential map turns curves of symmetries into matrices you can add.

Formally verified · 17 LeanComputationally tested · 2 PythonAI-drafted · awaiting human reviewMathematically reviewed: Awaiting human review
MotivationH

Symmetries that come in families

Put a book flat on a table. Turn it a quarter turn about a vertical axis, then a quarter turn about the axis pointing towards you. Start again and do the same two turns in the opposite order. The book ends up in two different positions. Rotations of the plane can be done in any order — they are just angles, and angles add — but rotations of space cannot.

Rotations are not isolated symmetries like the six symmetries of an equilateral triangle. They come in continuous families: you can turn a little, or a little more, and the rotations near the identity look like a small piece of three-dimensional space. A drone's flight controller, written perhaps by a robotics team in Bengaluru or Lagos, must store and combine such rotations hundreds of times a second without drifting, and almost all of them use quaternions, four numbers per rotation, rather than 3×33 \times 3 matrices or three angles. A physicist adds a stranger fact: rotating an electron's state through 360°360° multiplies it by −1-1, and only a rotation through 720°720° brings it back.

These are all statements about matrix groups: groups of invertible matrices that are at the same time geometric spaces, so that we can speak of paths, of tangent vectors and of size. This lesson studies the most important ones and the bridge between their algebra and their geometry, the matrix exponential.

IntuitionH

Groups that are also spaces

The rotations of the plane are the matrices R(θ)=(cos⁡θ−sin⁡θsin⁡θcos⁡θ)R(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{pmatrix}. As θ\theta varies they trace out a circle inside the four-dimensional space of 2×22 \times 2 matrices, and R(θ)R(φ)=R(θ+φ)R(\theta)R(\varphi) = R(\theta + \varphi): the group law is addition of angles. The velocity of the curve θ↦R(θ)\theta \mapsto R(\theta) at θ=0\theta = 0 is the matrix J=(0−110)J = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix} — an "infinitesimal rotation" — and the whole circle can be recovered from it as R(θ)=exp⁡(θJ)R(\theta) = \exp(\theta J), where exp⁡\exp is the familiar power series with matrices in it.

The same idea works for every matrix group GG. Curves in GG through the identity have velocity vectors, and these form a vector space, the Lie algebra g\mathfrak g — the linearisation of GG. The exponential map goes back from g\mathfrak g to GG. Linear algebra in g\mathfrak g then tells us about the group: the dimension of g\mathfrak g is the number of parameters of GG, and the failure of GG to be commutative is measured by the bracket [X,Y]=XY−YX[X, Y] = XY - YX in g\mathfrak g.

The rotations of space form a three-dimensional group SO(3)SO(3). It is covered twice by the group of unit quaternions, which is the three-dimensional sphere S3S^3. Shrinking a path of rotations from 720°720° down to nothing is possible; from 360°360° it is not. That topological fact is the electron's sign.

DefinitionsH

Definitions

Definition— matrix group

GLn(R)GL_n(\R) and GLn(C)GL_n(\C) are the groups of invertible n×nn \times n real or complex matrices, viewed as open subsets of Rn2\R^{n^2} and Cn2\C^{n^2}. A matrix group (or linear Lie group) is a subgroup of GLnGL_n that is a closed subset of it. Topological words — continuous, compact, connected, path — refer to this topology.

Definition— the classical groups

  • SLn(k)={A:det⁡A=1}SL_n(k) = \{ A : \det A = 1 \}, the special linear group (k=Rk = \R or C\C).
  • O(n)={A∈GLn(R):ATA=I}O(n) = \{ A \in GL_n(\R) : A^{\mathsf T}A = I \}, the orthogonal group, and SO(n)={A∈O(n):det⁡A=1}SO(n) = \{ A \in O(n) : \det A = 1 \}, the rotation group.
  • U(n)={A∈GLn(C):A∗A=I}U(n) = \{ A \in GL_n(\C) : A^*A = I \} with A∗=A‾TA^* = \overline A^{\mathsf T}, the unitary group, and SU(n)={A∈U(n):det⁡A=1}SU(n) = \{ A \in U(n) : \det A = 1 \}.
  • The Euclidean group E(n)E(n) of isometries x↦Ax+bx \mapsto Ax + b of Rn\R^n (A∈O(n)A \in O(n), b∈Rnb \in \R^n), realised as the matrices (Ab01)\begin{pmatrix} A & b \\ 0 & 1 \end{pmatrix} acting on vectors (x1)\begin{pmatrix} x \\ 1 \end{pmatrix}.

Definition— quaternions

The quaternions H\mathbb H are the real vector space with basis 1,i,j,k1, i, j, k and the associative multiplication determined by Hamilton's rules i2=j2=k2=ijk=−1i^2 = j^2 = k^2 = ijk = -1 (so ij=k=−jiij = k = -ji, jk=i=−kjjk = i = -kj, ki=j=−ikki = j = -ik). For q=a+bi+cj+dkq = a + bi + cj + dk, the conjugate is qˉ=a−bi−cj−dk\bar q = a - bi - cj - dk and ∣q∣2=qqˉ=a2+b2+c2+d2|q|^2 = q\bar q = a^2 + b^2 + c^2 + d^2. A quaternion is pure if a=0a = 0; we identify the pure quaternions with R3\R^3.

Definition— matrix exponential and one-parameter subgroup

For a square matrix XX, exp⁡X=∑k≥0Xk/k!=I+X+X2/2+…\exp X = \sum_{k \ge 0} X^k / k! = I + X + X^2/2 + \dots. A one-parameter subgroup of GG is a continuous homomorphism φ:(R,+)→G\varphi : (\R, +) \to G, that is, φ(s+t)=φ(s)φ(t)\varphi(s + t) = \varphi(s)\varphi(t).

Definition— Lie algebra

The Lie algebra of a matrix group GG is g={X:exp⁡(tX)∈G for all t∈R}\mathfrak g = \{ X : \exp(tX) \in G \text{ for all } t \in \R \}, equipped with the bracket [X,Y]=XY−YX[X, Y] = XY - YX. We write so(n)\mathfrak{so}(n), sln\mathfrak{sl}_n, u(n)\mathfrak u(n), su(n)\mathfrak{su}(n) for the Lie algebras of the classical groups.

Worked examplesH

Examples and non-examples

Example— The circle group, three times

SO(2)={R(θ)}SO(2) = \{ R(\theta) \} is a circle. So is U(1)={z∈C:∣z∣=1}U(1) = \{ z \in \C : |z| = 1 \}, and the map eiθ↦R(θ)e^{i\theta} \mapsto R(\theta) is an isomorphism of groups that is also a homeomorphism: multiplying by eiθe^{i\theta} is rotating by θ\theta. Both are commutative. O(2)O(2) is SO(2)SO(2) together with the reflections (cos⁡θsin⁡θsin⁡θ−cos⁡θ)\begin{pmatrix} \cos\theta & \sin\theta \\ \sin\theta & -\cos\theta \end{pmatrix} (determinant −1-1): two disjoint circles.

Example— Exponentials you can compute by hand

  • exp⁡(θJ)=R(θ)\exp(\theta J) = R(\theta): since J2=−IJ^2 = -I, the even terms give cos⁡θ I\cos\theta \, I and the odd terms sin⁡θ J\sin\theta \, J.
  • exp⁡(0t00)=(1t01)\exp\begin{pmatrix} 0 & t \\ 0 & 0 \end{pmatrix} = \begin{pmatrix} 1 & t \\ 0 & 1 \end{pmatrix}, a shear: the series stops because the matrix squares to 00.
  • exp⁡(0tt0)=(cosh⁡tsinh⁡tsinh⁡tcosh⁡t)\exp\begin{pmatrix} 0 & t \\ t & 0 \end{pmatrix} = \begin{pmatrix} \cosh t & \sinh t \\ \sinh t & \cosh t \end{pmatrix}, a "hyperbolic rotation" preserving x2−y2x^2 - y^2 — a Lorentz boost in one space dimension.
  • exp⁡(diag⁡(a,b))=diag⁡(ea,eb)\exp(\operatorname{diag}(a, b)) = \operatorname{diag}(e^a, e^b), and exp⁡(PXP−1)=Pexp⁡(X)P−1\exp(PXP^{-1}) = P\exp(X)P^{-1}, so diagonalisable matrices are exponentiated by exponentiating eigenvalues.

Example— A non-compact connected group, and an element that is not an exponential

SL2(R)SL_2(\R) contains diag⁡(t,1/t)\operatorname{diag}(t, 1/t) for every t>0t > 0, so it is unbounded and not compact. It is connected: every A∈SL2(R)A \in SL_2(\R) factors (Gram–Schmidt on the columns) as A=QRA = QR with Q∈SO(2)Q \in SO(2) and R=(ab01/a)R = \begin{pmatrix} a & b \\ 0 & 1/a \end{pmatrix}, a>0a > 0, and both factors can be slid continuously to II. Yet exp⁡:sl2(R)→SL2(R)\exp : \mathfrak{sl}_2(\R) \to SL_2(\R) is not surjective: A=(−110−1)A = \begin{pmatrix} -1 & 1 \\ 0 & -1 \end{pmatrix} is not exp⁡X\exp X for any real XX. Indeed, det⁡A=1\det A = 1 forces tr⁡X=0\operatorname{tr} X = 0 (Theorem 7(e) below), so XX has eigenvalues ±μ\pm\mu with μ2=−det⁡X\mu^2 = -\det X. If μ\mu is real and non-zero, exp⁡X\exp X has positive eigenvalues e±μe^{\pm\mu}; if μ=0\mu = 0, XX is nilpotent and exp⁡X=I+X\exp X = I + X has eigenvalue 11; if μ=iν\mu = i\nu is imaginary, XX is diagonalisable over C\C, so exp⁡X\exp X is too — but AA is a Jordan block, not diagonalisable. No case gives AA.

Example— Groups that are not matrix groups in the sense above

The subgroup {exp⁡(tX):t∈R}\{ \exp(tX) : t \in \R \} of the torus U(1)×U(1)U(1) \times U(1), with X=diag⁡(i,i2)X = \operatorname{diag}(i, i\sqrt2), is a line winding densely around the torus: it is a subgroup but not closed, so we do not call it a matrix group. (Its closure is the whole torus.) Closedness is what makes the Lie algebra well behaved; von Neumann proved in 1929 that closed subgroups of GLnGL_n are automatically smooth manifolds.

ProofH

Orthogonal groups: compactness, components and Euler's theorem

Theorem— Proposition 1 (what orthogonal means)

For a real n×nn \times n matrix AA, the following are equivalent: (a) ATA=IA^{\mathsf T}A = I; (b) (Av)⋅(Aw)=v⋅w(Av) \cdot (Aw) = v \cdot w for all v,wv, w; (c) the columns of AA are orthonormal. Every A∈O(n)A \in O(n) has det⁡A=±1\det A = \pm 1, and O(n)O(n) is a group.

Proof

(a) ⇒ (b): (Av)⋅(Aw)=vTATAw=v⋅w(Av) \cdot (Aw) = v^{\mathsf T}A^{\mathsf T}Aw = v \cdot w. (b) ⇒ (c): the columns are AeiAe_i, and Aei⋅Aej=ei⋅ejAe_i \cdot Ae_j = e_i \cdot e_j. (c) ⇒ (a): the (i,j)(i, j) entry of ATAA^{\mathsf T}A is (column ii) ⋅\cdot (column jj). Taking determinants in (a), (det⁡A)2=det⁡ATdet⁡A=1(\det A)^2 = \det A^{\mathsf T} \det A = 1. If A,B∈O(n)A, B \in O(n) then (AB)TAB=BTATAB=I(AB)^{\mathsf T}AB = B^{\mathsf T}A^{\mathsf T}AB = I, and A−1=ATA^{-1} = A^{\mathsf T} is orthogonal.

∎

Theorem— Proposition 2 (compactness and components)

O(n)O(n) and SO(n)SO(n) are compact. O(n)O(n) is not connected: it is the disjoint union of the closed sets SO(n)SO(n) and {det⁡=−1}\{ \det = -1 \}. U(n)U(n) and SU(n)SU(n) are compact; GLnGL_n and SLnSL_n (n≥2n \geq 2) are not.

Proof

O(n)O(n) is the preimage of II under the continuous map A↦ATAA \mapsto A^{\mathsf T}A, hence closed, and its entries satisfy ∣aij∣≤1|a_{ij}| \le 1 because the columns are unit vectors, so it is bounded; by Heine–Borel it is compact. SO(n)SO(n) is a closed subset of it. The determinant is continuous on O(n)O(n) with values in {1,−1}\{1, -1\}, so the two level sets are disjoint, closed and non-empty: O(n)O(n) is disconnected, and no path of orthogonal matrices joins a reflection to II. The same argument with A∗AA^*A shows U(n)U(n) and SU(n)SU(n) are compact. Finally diag⁡(t,1/t,1,…,1)∈SLn(R)\operatorname{diag}(t, 1/t, 1, \dots, 1) \in SL_n(\R) is unbounded.

∎

Theorem— Proposition 3 (connectedness)

SO(n)SO(n), U(n)U(n) and SU(n)SU(n) are path-connected.

Proof

U(n)U(n). A unitary matrix is normal, so by the complex spectral theorem (see advanced linear algebra) A=Pdiag⁡(eiθ1,…,eiθn)P∗A = P \operatorname{diag}(e^{i\theta_1}, \dots, e^{i\theta_n}) P^* with PP unitary. The path t↦Pdiag⁡(eitθ1,…,eitθn)P∗t \mapsto P \operatorname{diag}(e^{it\theta_1}, \dots, e^{it\theta_n})P^*, t∈[0,1]t \in [0, 1], runs inside U(n)U(n) from II to AA. If det⁡A=1\det A = 1 we may choose the θj\theta_j with ∑θj=0\sum \theta_j = 0, and then the path stays in SU(n)SU(n).

SO(n)SO(n). An orthogonal AA is normal with eigenvalues on the unit circle, in conjugate pairs e±iθe^{\pm i\theta}. If v=x+iyv = x + iy is an eigenvector for eiθe^{i\theta} with θ∉{0,π}\theta \notin \{0, \pi\}, then span⁡(x,y)\operatorname{span}(x, y) is an AA-invariant plane on which AA acts as a rotation by θ\theta; the real form of the spectral theorem gives an orthonormal basis (columns of P∈O(n)P \in O(n)) in which AA is block diagonal with blocks R(θj)R(\theta_j), 11 and −1-1. Since det⁡A=1\det A = 1 the −1-1s come in pairs, and a pair diag⁡(−1,−1)=R(π)\operatorname{diag}(-1, -1) = R(\pi) is a rotation block too. Shrinking every angle θj\theta_j to 00 gives a path in SO(n)SO(n) from AA to II.

∎

So orientation is topological: the two components of O(n)O(n) (and of GLn(R)GL_n(\R), by Gram–Schmidt) are told apart by the sign of the determinant. Here is the summary, including results stated without proof.

groupdimensioncompactconnected
GLn(R)GL_n(\R)n2n^2nono (two components)
SLn(R)SL_n(\R), n≥2n \ge 2n2−1n^2 - 1noyes
O(n)O(n)n(n−1)/2n(n-1)/2yesno (two components)
SO(n)SO(n)n(n−1)/2n(n-1)/2yesyes
U(n)U(n)n2n^2yesyes
SU(n)SU(n)n2−1n^2 - 1yesyes
E(n)E(n)n(n+1)/2n(n+1)/2nono (two components)

Theorem— Theorem 4 (Euler's rotation theorem)

Every A∈SO(3)A \in SO(3) is a rotation about some axis: there is a unit vector uu with Au=uAu = u, and AA rotates the plane u⊥u^\perp by an angle θ\theta with 1+2cos⁡θ=tr⁡A1 + 2\cos\theta = \operatorname{tr} A.

Proof

Since AAT=IAA^{\mathsf T} = I and det⁡A=1\det A = 1,

det⁡(A−I)=det⁡(A(I−AT))=det⁡(I−AT)=det⁡((I−A)T)=det⁡(I−A)=(−1)3det⁡(A−I).\det(A - I) = \det\big(A(I - A^{\mathsf T})\big) = \det(I - A^{\mathsf T}) = \det\big((I - A)^{\mathsf T}\big) = \det(I - A) = (-1)^3\det(A - I).

So det⁡(A−I)=0\det(A - I) = 0 and there is a unit vector uu with Au=uAu = u. As AA preserves dot products, it maps u⊥u^\perp to itself; its restriction is an orthogonal map of a plane with determinant 11 (the determinant of AA in a basis u,v,wu, v, w is 1⋅det⁡(A∣u⊥)1 \cdot \det(A|_{u^\perp})), hence a rotation R(θ)R(\theta). In that basis A=diag⁡(1,R(θ))A = \operatorname{diag}(1, R(\theta)) and tr⁡A=1+2cos⁡θ\operatorname{tr} A = 1 + 2\cos\theta.

∎

Notice where the dimension entered: (−1)3=−1(-1)^3 = -1. In SO(2)SO(2) the rotation R(π/2)R(\pi/2) fixes no non-zero vector, and in SO(4)SO(4) the matrix diag⁡(R(θ),R(φ))\operatorname{diag}(R(\theta), R(\varphi)) fixes none either. A surprising corollary: the composite of two rotations of space about different axes is again a rotation about a single axis. And the order matters: with RxR_x and RzR_z the quarter turns about the xx- and zz-axes, RxRz≠RzRxR_xR_z \ne R_zR_x, so SO(3)SO(3) is not commutative, while SO(2)SO(2) is.

ProofH

Quaternions, SU(2) and the double cover

Theorem— Proposition 5 (unit quaternions)

∣pq∣=∣p∣∣q∣|pq| = |p||q| for all quaternions, so the unit quaternions form a group, which as a space is the sphere S3⊂R4S^3 \subset \R^4. The map

a+bi+cj+dk  ⟼  (a+bi−c−dic−dia−bi)a + bi + cj + dk \;\longmapsto\; \begin{pmatrix} a + bi & -c - di \\ c - di & a - bi \end{pmatrix}

is an injective ring homomorphism H→M2(C)\mathbb H \to M_2(\C) with det⁡=∣q∣2\det = |q|^2, and it identifies the unit quaternions with SU(2)SU(2).

Proof

A direct computation shows pq‾=qˉ pˉ\overline{pq} = \bar q\,\bar p, so ∣pq∣2=pq qˉ pˉ=p∣q∣2pˉ=∣p∣2∣q∣2|pq|^2 = pq\,\bar q\,\bar p = p|q|^2\bar p = |p|^2|q|^2 (real numbers commute with everything). So products and inverses (q−1=qˉq^{-1} = \bar q) of unit quaternions are unit quaternions. The images of i,j,ki, j, k are (i00−i)\begin{pmatrix} i & 0 \\ 0 & -i \end{pmatrix}, (0−110)\begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix} and (0−i−i0)\begin{pmatrix} 0 & -i \\ -i & 0 \end{pmatrix}; one checks that they satisfy Hamilton's rules, so the map is a ring homomorphism, and it is injective since the four matrices are independent. Writing α=a+bi\alpha = a + bi and β=c−di\beta = c - di, the image is (α−βˉβαˉ)\begin{pmatrix} \alpha & -\bar\beta \\ \beta & \bar\alpha \end{pmatrix}, with determinant ∣α∣2+∣β∣2=∣q∣2|\alpha|^2 + |\beta|^2 = |q|^2; such a matrix with ∣α∣2+∣β∣2=1|\alpha|^2 + |\beta|^2 = 1 is unitary (its columns are orthonormal). Conversely, if A=(αγβδ)∈SU(2)A = \begin{pmatrix} \alpha & \gamma \\ \beta & \delta \end{pmatrix} \in SU(2) then A−1=A∗A^{-1} = A^* reads (δ−γ−βα)=(αˉβˉγˉδˉ)\begin{pmatrix} \delta & -\gamma \\ -\beta & \alpha \end{pmatrix} = \begin{pmatrix} \bar\alpha & \bar\beta \\ \bar\gamma & \bar\delta \end{pmatrix}, so δ=αˉ\delta = \bar\alpha and γ=−βˉ\gamma = -\bar\beta.

∎

Theorem— Theorem 6 (the double cover SU(2) → SO(3))

For a unit quaternion qq define ρ(q):R3→R3\rho(q) : \R^3 \to \R^3 by ρ(q)v=qvqˉ\rho(q)v = qv\bar q, on pure quaternions vv. Then ρ\rho is a surjective homomorphism from the unit quaternions (≅SU(2)\cong SU(2)) onto SO(3)SO(3), with kernel {±1}\{\pm 1\}. Explicitly, if uu is a unit pure quaternion, then ρ(cos⁡θ2+sin⁡θ2 u)\rho\big(\cos\tfrac\theta2 + \sin\tfrac\theta2\,u\big) is the rotation by θ\theta about the axis uu.

Proof

ρ(q)∈O(3)\rho(q) \in O(3). The real part of qvqˉqv\bar q is ∣q∣2|q|^2 times the real part of vv (a polynomial identity), so pure quaternions go to pure quaternions; ρ(q)\rho(q) is linear, and ∣qvqˉ∣=∣q∣∣v∣∣qˉ∣=∣v∣|qv\bar q| = |q||v||\bar q| = |v|, so it preserves lengths, hence (by polarisation) dot products.

Homomorphism. ρ(pq)v=pqvqˉpˉ=ρ(p)ρ(q)v\rho(pq)v = pqv\bar q\bar p = \rho(p)\rho(q)v, using pq‾=qˉpˉ\overline{pq} = \bar q \bar p.

The axis and angle. For pure quaternions u,wu, w one has uw=−u⋅w+u×wuw = -u \cdot w + u \times w. Let uu be a unit pure quaternion, c=cos⁡θ2c = \cos\frac\theta2, s=sin⁡θ2s = \sin\frac\theta2, and q=c+suq = c + su. Then qq commutes with uu, so ρ(q)u=u\rho(q)u = u. If w⊥uw \perp u is a unit pure quaternion, put w′=u×w=uww' = u \times w = uw, so that wu=−w′wu = -w' and w′u=ww'u = w. Then

qwqˉ=(c+su) w (c−su)=c2w+2cs w′−s2w=cos⁡θ w+sin⁡θ (u×w),qw\bar q = (c + su)\,w\,(c - su) = c^2 w + 2cs\,w' - s^2 w = \cos\theta\, w + \sin\theta\, (u \times w),

which is the rotation by θ\theta about uu. In particular det⁡ρ(q)=1\det \rho(q) = 1, and since every unit quaternion has the form c+suc + su, ρ\rho lands in SO(3)SO(3); by Euler's theorem every element of SO(3)SO(3) is such a rotation, so ρ\rho is onto.

Kernel. ρ(q)=I\rho(q) = I means qv=vqqv = vq for all pure vv; commuting with ii, jj and kk forces qq to be real, so q=±1q = \pm 1.

∎

So SO(3)≅S3/{±1}SO(3) \cong S^3/\{\pm 1\}: a rotation is a pair of antipodal unit quaternions. As θ\theta runs from 00 to 2π2\pi, the rotations ρ(qθ)\rho(q_\theta) make a closed loop in SO(3)SO(3), but the quaternions qθ=cos⁡θ2+sin⁡θ2uq_\theta = \cos\frac\theta2 + \sin\frac\theta2 u run from 11 to −1-1: half a great circle of S3S^3. Only at θ=4π\theta = 4\pi does qθq_\theta return to 11. This is the 360°360° versus 720°720° of the motivation, and it shows that SO(3)SO(3) has a loop that cannot be shrunk while its double has none: π1(SO(3))≅Z/2\pi_1(SO(3)) \cong \Z/2 (see the fundamental group).

ProofH

The exponential map and one-parameter subgroups

Fix any submultiplicative matrix norm (∥XY∥≤∥X∥∥Y∥\|XY\| \le \|X\|\|Y\|), for instance the operator norm. Then ∥Xk/k!∥≤∥X∥k/k!\|X^k/k!\| \le \|X\|^k/k!, so the series for exp⁡X\exp X converges absolutely for every XX.

Theorem— Theorem 7 (properties of exp)

For square matrices XX, YY and invertible PP:

(a) if XY=YXXY = YX then exp⁡(X+Y)=exp⁡Xexp⁡Y\exp(X + Y) = \exp X \exp Y; (b) exp⁡X\exp X is invertible with inverse exp⁡(−X)\exp(-X); (c) exp⁡(PXP−1)=Pexp⁡(X)P−1\exp(PXP^{-1}) = P\exp(X)P^{-1} and (exp⁡X)T=exp⁡(XT)(\exp X)^{\mathsf T} = \exp(X^{\mathsf T}); (d) t↦exp⁡(tX)t \mapsto \exp(tX) is a one-parameter subgroup with ddtexp⁡(tX)=Xexp⁡(tX)\frac{d}{dt}\exp(tX) = X\exp(tX), so its tangent vector at t=0t = 0 is XX; (e) det⁡(exp⁡X)=etr⁡X\det(\exp X) = e^{\operatorname{tr} X}.

Proof

(a) For commuting X,YX, Y the binomial theorem holds, and multiplying absolutely convergent series term by term,

exp⁡Xexp⁡Y=∑m∑j+l=mXjYlj! l!=∑m(X+Y)mm!=exp⁡(X+Y).\exp X \exp Y = \sum_{m} \sum_{j + l = m} \frac{X^j Y^l}{j!\,l!} = \sum_m \frac{(X + Y)^m}{m!} = \exp(X + Y).

(b) XX and −X-X commute, so exp⁡Xexp⁡(−X)=exp⁡0=I\exp X \exp(-X) = \exp 0 = I. (c) (PXP−1)k=PXkP−1(PXP^{-1})^k = PX^kP^{-1} and (XT)k=(Xk)T(X^{\mathsf T})^k = (X^k)^{\mathsf T}, term by term. (d) sXsX and tXtX commute, so (a) gives the homomorphism property; differentiating the power series term by term (allowed for power series) gives ∑k≥1tk−1Xk/(k−1)!=Xexp⁡(tX)\sum_{k \ge 1} t^{k-1}X^k/(k-1)! = X\exp(tX). (e) Over C\C write X=PTP−1X = PTP^{-1} with TT upper triangular (Schur, or Jordan form). Powers of TT are upper triangular with diagonal entries tiikt_{ii}^k, so exp⁡T\exp T is upper triangular with diagonal etiie^{t_{ii}}, and det⁡exp⁡X=det⁡exp⁡T=∏etii=etr⁡T=etr⁡X\det \exp X = \det \exp T = \prod e^{t_{ii}} = e^{\operatorname{tr} T} = e^{\operatorname{tr} X}.

∎

Theorem— Theorem 8 (every one-parameter subgroup is exponential)

If φ:R→GLn\varphi : \R \to GL_n is a continuous homomorphism, then there is a unique matrix XX with φ(t)=exp⁡(tX)\varphi(t) = \exp(tX) for all tt.

Proof

First we show φ\varphi is differentiable. Since φ(0)=I\varphi(0) = I and φ\varphi is continuous, B=1ε∫0εφ(s) dsB = \frac1\varepsilon\int_0^\varepsilon \varphi(s)\,ds is close to II, hence invertible, for small ε>0\varepsilon > 0. Now φ(t) εB=∫0εφ(t+s) ds=∫tt+εφ(s) ds\varphi(t)\,\varepsilon B = \int_0^\varepsilon \varphi(t + s)\,ds = \int_t^{t + \varepsilon}\varphi(s)\,ds, which is differentiable in tt by the fundamental theorem of calculus; multiplying by (εB)−1(\varepsilon B)^{-1} shows φ\varphi is differentiable. Differentiating φ(t+s)=φ(t)φ(s)\varphi(t + s) = \varphi(t)\varphi(s) in ss at s=0s = 0 gives φ′(t)=φ(t)X\varphi'(t) = \varphi(t)X with X=φ′(0)X = \varphi'(0). Then ψ(t)=φ(t)exp⁡(−tX)\psi(t) = \varphi(t)\exp(-tX) has ψ′=φXexp⁡(−tX)−φXexp⁡(−tX)=0\psi' = \varphi X\exp(-tX) - \varphi X \exp(-tX) = 0 (as XX commutes with exp⁡(−tX)\exp(-tX)), so ψ≡ψ(0)=I\psi \equiv \psi(0) = I. Uniqueness: X=φ′(0)X = \varphi'(0).

∎

The flow of x′ = Jx is exp(tJ): rotations

Arrows show where the system moves next. Click to start a trajectory, or choose an example.

Examples

x′ = −y, y′ = x

darker, longer arrows = faster forward in time backward in timeequilibrium (hollow = stable or centre)

Click the plane to start a trajectory, or type a start point below.

Start point

Trajectories: 3. They are numerical approximations (fourth-order Runge–Kutta), not exact formulas. The latest trajectory closes up: it is a periodic orbit.

Linear systemA = [0−110]

T = 0, D = 1, T² − 4D = −4; λ = 0 ± 1i

Equilibrium at (0, 0): centre: closed orbits around it

TDD = T²/4
Trace T and determinant D: below the T-axis, saddles; above the dashed parabola D = T²/4, spirals; between them, nodes; on the upper D-axis, centres. Left of the D-axis is stable, right is unstable.
ProofH

Lie algebras: the tangent space at the identity

Theorem— Theorem 9 (classical Lie algebras)

(a) so(n)=o(n)={X:XT=−X}\mathfrak{so}(n) = \mathfrak o(n) = \{ X : X^{\mathsf T} = -X \}, of dimension n(n−1)/2n(n-1)/2. (b) sln={X:tr⁡X=0}\mathfrak{sl}_n = \{ X : \operatorname{tr} X = 0 \}. (c) u(n)={X:X∗=−X}\mathfrak u(n) = \{ X : X^* = -X \} and su(n)={X∈u(n):tr⁡X=0}\mathfrak{su}(n) = \{ X \in \mathfrak u(n) : \operatorname{tr} X = 0 \}. (d) In each case g\mathfrak g is exactly the set of velocity vectors γ′(0)\gamma'(0) of differentiable curves γ\gamma in GG with γ(0)=I\gamma(0) = I.

Proof

(a) If XT=−XX^{\mathsf T} = -X then (exp⁡tX)Texp⁡tX=exp⁡(−tX)exp⁡(tX)=I(\exp tX)^{\mathsf T}\exp tX = \exp(-tX)\exp(tX) = I by Theorem 7(b, c), and det⁡exp⁡(tX)=ettr⁡X=1\det \exp(tX) = e^{t \operatorname{tr} X} = 1 since a skew matrix has zero diagonal. Conversely, let γ\gamma be a differentiable curve in O(n)O(n) with γ(0)=I\gamma(0) = I and γ′(0)=X\gamma'(0) = X — for example γ(t)=exp⁡(tX)\gamma(t) = \exp(tX) when X∈o(n)X \in \mathfrak o(n), by Theorem 7(d). Differentiating γ(t)Tγ(t)=I\gamma(t)^{\mathsf T}\gamma(t) = I at t=0t = 0 by the product rule gives XT+X=0X^{\mathsf T} + X = 0. A skew matrix is determined by its n(n−1)/2n(n-1)/2 entries above the diagonal. (b) By Theorem 7(e), det⁡exp⁡(tX)=1\det\exp(tX) = 1 for all tt if and only if ttr⁡X∈2πiZt\operatorname{tr} X \in 2\pi i\Z for all tt, i.e. tr⁡X=0\operatorname{tr} X = 0. (c) is (a) with X∗X^* in place of XTX^{\mathsf T}, combined with (b). (d) is the curve argument above for O(n)O(n) and U(n)U(n); for SLnSL_n, differentiate det⁡γ(t)=1\det\gamma(t) = 1 using ddtdet⁡γ(t)∣t=0=tr⁡γ′(0)\frac{d}{dt}\det\gamma(t)\big|_{t=0} = \operatorname{tr}\gamma'(0) when γ(0)=I\gamma(0) = I.

∎

Two facts complete the picture; we state them with references. For any matrix group, g\mathfrak g is a real vector space closed under the bracket. Closure under addition follows from the Lie product formula exp⁡(X+Y)=lim⁡m→∞(exp⁡Xmexp⁡Ym)m\exp(X + Y) = \lim_{m \to \infty}\big(\exp\frac Xm \exp\frac Ym\big)^m; closure under the bracket follows by differentiating the curve t↦exp⁡(tX) Yexp⁡(−tX)t \mapsto \exp(tX)\,Y\exp(-tX) in g\mathfrak g at t=0t = 0, which gives XY−YXXY - YX (Hall, Lie Groups, Lie Algebras, and Representations, chapters 2–3). And the bracket measures non-commutativity to second order: exp⁡(tX)exp⁡(tY)=exp⁡(t(X+Y)+t22[X,Y]+O(t3))\exp(tX)\exp(tY) = \exp\big(t(X + Y) + \tfrac{t^2}{2}[X, Y] + O(t^3)\big), the start of the Baker–Campbell–Hausdorff formula, which the first experiment checks numerically.

Example— Infinitesimal rotations and the cross product

A skew 3×33 \times 3 matrix is Xv=(0−v3v2v30−v1−v2v10)X_v = \begin{pmatrix} 0 & -v_3 & v_2 \\ v_3 & 0 & -v_1 \\ -v_2 & v_1 & 0 \end{pmatrix} for a unique v∈R3v \in \R^3, and Xvw=v×wX_v w = v \times w. One checks [Xu,Xv]=Xu×v[X_u, X_v] = X_{u \times v}: the Lie algebra so(3)\mathfrak{so}(3) is R3\R^3 with the cross product. exp⁡(θXu)\exp(\theta X_u), for a unit vector uu, is the rotation by θ\theta about uu (Rodrigues' formula exp⁡(θXu)=I+sin⁡θ Xu+(1−cos⁡θ)Xu2\exp(\theta X_u) = I + \sin\theta\,X_u + (1 - \cos\theta)X_u^2, from Xu3=−XuX_u^3 = -X_u), so by Euler's theorem exp⁡:so(3)→SO(3)\exp : \mathfrak{so}(3) \to SO(3) is surjective. A spinning top's angular velocity is a vector in so(3)\mathfrak{so}(3). Similarly su(2)\mathfrak{su}(2) has basis i2σ1,i2σ2,i2σ3\tfrac{i}{2}\sigma_1, \tfrac i2\sigma_2, \tfrac i2\sigma_3 (Pauli matrices) with the same brackets up to sign, and the derivative of ρ\rho is an isomorphism su(2)≅so(3)\mathfrak{su}(2) \cong \mathfrak{so}(3) — the double cover is a local isomorphism.

Formal mathematicsF

Matrix groups in Lean and Mathlib

Mathlib defines Matrix.orthogonalGroup n R, Matrix.specialOrthogonalGroup, Matrix.unitaryGroup and Matrix.specialUnitaryGroup as submonoids of matrices carrying a group structure, the exponential NormedSpace.exp, and the quaternions ℍ[ℝ]. Proposition 1, the determinant, and the commutativity of SO(2)SO(2):

orthogonal_preserves_dotLean 4Proved here from basic factsFormally verified
/-- **Orthogonal matrices preserve the dot product**, hence lengths and angles: if `AᵀA = I`
then `(A v) · (A w) = v · (Aᵀ A w) = v · w`. -/
theorem orthogonal_preserves_dot {n : Type*} [Fintype n] [DecidableEq n] {A : Matrix n n ℝ}
    (hA : Aᵀ * A = 1) (v w : n → ℝ) : (A *ᵥ v) ⬝ᵥ (A *ᵥ w) = v ⬝ᵥ w := by
  rw [dotProduct_mulVec, ← mulVec_transpose, mulVec_mulVec, hA, one_mulVec]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
mem_orthogonal_group_iffLean 4Applies a library theoremFormally verified
/-- Mathlib's `Matrix.orthogonalGroup n ℝ` is exactly the set of real matrices with `AᵀA = I`
(`Matrix.mem_orthogonalGroup_iff'`). It is a group under multiplication, with inverse `Aᵀ`. -/
theorem mem_orthogonal_group_iff {n : Type*} [Fintype n] [DecidableEq n] (A : Matrix n n ℝ) :
    A ∈ Matrix.orthogonalGroup n ℝ ↔ Aᵀ * A = 1 :=
  Matrix.mem_orthogonalGroup_iff' n ℝ
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
det_orthogonalLean 4Proved here from basic factsFormally verified
/-- **An orthogonal matrix has determinant `1` or `−1`**: `det A ² = det Aᵀ · det A =
det (AᵀA) = det I = 1`. The two values label the two connected components of `O(n)`. -/
theorem det_orthogonal {n : Type*} [Fintype n] [DecidableEq n] {A : Matrix n n ℝ}
    (hA : Aᵀ * A = 1) : A.det = 1 ∨ A.det = -1 := by
  have h : (Aᵀ * A).det = 1 := by rw [hA, det_one]
  rw [det_mul, det_transpose] at h
  exact mul_self_eq_one_iff.mp h
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
rotation_mem_so2Lean 4Proved here from basic factsFormally verified
/-- The rotation matrix `R(θ)` lies in `SO(2)`, using Mathlib's description of `SO(2)` as the
matrices `!![a, b; c, d]` with `a = d`, `b = −c`, `a² + b² = 1` and the identity
`cos² θ + sin² θ = 1`. -/
theorem rotation_mem_so2 (θ : ℝ) :
    !![Real.cos θ, -Real.sin θ; Real.sin θ, Real.cos θ] ∈
      Matrix.specialOrthogonalGroup (Fin 2) ℝ := by
  rw [Matrix.of_mem_specialOrthogonalGroup_fin_two_iff]
  refine ⟨rfl, rfl, ?_⟩
  rw [neg_sq]
  exact Real.cos_sq_add_sin_sq θ
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
so2_commLean 4Proved here from basic factsFormally verified
/-- **`SO(2)` is commutative.** Every element has the form `!![a, −c; c, a]`, and two such
matrices commute — rotations of the plane can be done in either order. -/
theorem so2_comm (A B : Matrix (Fin 2) (Fin 2) ℝ) (hA : A ∈ Matrix.specialOrthogonalGroup (Fin 2) ℝ)
    (hB : B ∈ Matrix.specialOrthogonalGroup (Fin 2) ℝ) : A * B = B * A := by
  rw [Matrix.mem_specialOrthogonalGroup_fin_two_iff] at hA hB
  obtain ⟨ha1, ha2, -⟩ := hA
  obtain ⟨hb1, hb2, -⟩ := hB
  ext i j
  fin_cases i <;> fin_cases j <;> simp only [Matrix.mul_apply, Fin.sum_univ_two] <;>
    simp only [Fin.zero_eta, Fin.mk_one, ha1, ha2, hb1, hb2] <;> ring
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor

The book experiment, and Euler's theorem with the lesson's determinant argument:

so3_not_commLean 4Proved here from basic factsFormally verified
/-- **`SO(3)` is not commutative.** The quarter turns about the `x`-axis and the `z`-axis
(both orthogonal with determinant `1`) give different results in the two orders: turn a book
a quarter turn forwards and then a quarter turn clockwise, then try the other order. -/
theorem so3_not_comm :
    let Rx : Matrix (Fin 3) (Fin 3) ℝ := !![1, 0, 0; 0, 0, -1; 0, 1, 0]
    let Rz : Matrix (Fin 3) (Fin 3) ℝ := !![0, -1, 0; 1, 0, 0; 0, 0, 1]
    (Rxᵀ * Rx = 1 ∧ Rx.det = 1) ∧ (Rzᵀ * Rz = 1 ∧ Rz.det = 1) ∧ Rx * Rz ≠ Rz * Rx := by
  intro Rx Rz
  refine ⟨⟨?_, ?_⟩, ⟨?_, ?_⟩, ?_⟩
  · ext i j
    fin_cases i <;> fin_cases j <;> simp [Rx, Matrix.mul_apply, Fin.sum_univ_three]
  · simp [Rx, Matrix.det_fin_three]
  · ext i j
    fin_cases i <;> fin_cases j <;> simp [Rz, Matrix.mul_apply, Fin.sum_univ_three]
  · simp [Rz, Matrix.det_fin_three]
  · intro h
    have h01 := congrFun (congrFun h 0) 1
    simp [Rx, Rz, Matrix.mul_apply, Fin.sum_univ_three] at h01
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
euler_rotation_detLean 4Proved here from basic factsFormally verified
/-- **Euler's rotation theorem, algebraic core**: for `A ∈ SO(3)`, `det (A − I) = 0`. The proof
is the lesson's: `det (A − I) = det (A (I − Aᵀ)) = det (I − A)ᵀ = det (I − A) = (−1)³ det (A − I)`,
so `det (A − I)` equals its own negative. The odd dimension `3` is essential. -/
theorem euler_rotation_det {A : Matrix (Fin 3) (Fin 3) ℝ} (hA : Aᵀ * A = 1) (hdet : A.det = 1) :
    (A - 1).det = 0 := by
  have hA' : A * Aᵀ = 1 := mul_eq_one_comm.mp hA
  have key : (A - 1).det = -(A - 1).det :=
    calc (A - 1).det = (A * (1 - Aᵀ)).det := by rw [mul_sub, mul_one, hA']
      _ = (1 - Aᵀ).det := by rw [det_mul, hdet, one_mul]
      _ = ((1 - A)ᵀ).det := by rw [transpose_sub, transpose_one]
      _ = (1 - A).det := det_transpose _
      _ = (-(A - 1)).det := by rw [neg_sub]
      _ = -(A - 1).det := by rw [det_neg]; norm_num
  linarith
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
euler_rotation_axisLean 4Proved here from basic factsFormally verified
/-- **Every rotation of ℝ³ has an axis**: a non-zero vector `v` with `A v = v`. From
`det (A − I) = 0` and Mathlib's `Matrix.exists_mulVec_eq_zero_iff` (a square matrix has a
non-zero kernel vector exactly when its determinant vanishes). -/
theorem euler_rotation_axis {A : Matrix (Fin 3) (Fin 3) ℝ} (hA : Aᵀ * A = 1) (hdet : A.det = 1) :
    ∃ v : Fin 3 → ℝ, v ≠ 0 ∧ A *ᵥ v = v := by
  obtain ⟨v, hv0, hv⟩ := Matrix.exists_mulVec_eq_zero_iff.mpr (euler_rotation_det hA hdet)
  refine ⟨v, hv0, ?_⟩
  rw [sub_mulVec, one_mulVec, sub_eq_zero] at hv
  exact hv
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor

The exponential: skew-symmetric matrices exponentiate into O(n)O(n), t↦exp⁡(tX)t \mapsto \exp(tX) is a homomorphism with tangent vector XX, and conversely every tangent vector to O(n)O(n) at II is skew. The last theorem is Theorem 9(a)'s curve argument, with Mathlib's product rule for derivatives; derivatives of matrix-valued functions need a norm, and the operator norm is used (all norms on a finite-dimensional space give the same derivatives).

exp_skew_orthogonalLean 4Proved here from basic factsFormally verified
/-- **`exp` maps skew-symmetric matrices into `O(n)`.** If `Xᵀ = −X` then
`(exp X)ᵀ (exp X) = exp (Xᵀ) exp X = exp (−X) exp X = (exp X)⁻¹ exp X = I`. Uses Mathlib's
`Matrix.exp_transpose`, `Matrix.exp_neg` and the invertibility of `exp X`. -/
theorem exp_skew_orthogonal {n : Type*} [Fintype n] [DecidableEq n] {X : Matrix n n ℝ}
    (hX : Xᵀ = -X) : (NormedSpace.exp X)ᵀ * NormedSpace.exp X = 1 := by
  rw [← Matrix.exp_transpose, hX, Matrix.exp_neg]
  exact Matrix.nonsing_inv_mul _ ((Matrix.isUnit_iff_isUnit_det _).mp (Matrix.isUnit_exp X))
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
one_parameter_subgroupLean 4Proved here from basic factsFormally verified
/-- **`t ↦ exp (t X)` is a one-parameter subgroup**: `exp ((s + t) X) = exp (s X) exp (t X)`.
The matrices `s X` and `t X` commute, so Mathlib's `Matrix.exp_add_of_commute` applies. (For
non-commuting `X`, `Y` the identity `exp (X + Y) = exp X exp Y` fails.) -/
theorem one_parameter_subgroup {n : Type*} [Fintype n] [DecidableEq n] (X : Matrix n n ℝ)
    (s t : ℝ) :
    NormedSpace.exp ((s + t) • X) = NormedSpace.exp (s • X) * NormedSpace.exp (t • X) := by
  rw [add_smul]
  exact Matrix.exp_add_of_commute _ _ ((Commute.refl X).smul_left s |>.smul_right t)
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
exp_tangentLean 4Applies a library theoremFormally verified
open scoped Matrix.Norms.Operator in
/-- **The tangent vector of `t ↦ exp (t X)` at `t = 0` is `X`.** This is Mathlib's
`hasDerivAt_exp_smul_const`. Derivatives need a norm on matrices; we use Mathlib's operator norm
(`Matrix.Norms.Operator`), but all norms on a finite-dimensional space give the same derivative. -/
theorem exp_tangent {n : Type*} [Fintype n] [DecidableEq n] (X : Matrix n n ℝ) :
    HasDerivAt (fun t : ℝ => NormedSpace.exp (t • X)) X 0 := by
  have h := hasDerivAt_exp_smul_const (𝕂 := ℝ) X 0
  rw [zero_smul, NormedSpace.exp_zero, one_mul] at h
  exact h
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
tangent_skewLean 4Proved here from basic factsFormally verified
open scoped Matrix.Norms.Operator in
/-- **Tangent vectors to `O(n)` at the identity are skew-symmetric.** If `γ` is a curve of
orthogonal matrices with `γ 0 = I` and velocity `X` at `0`, differentiate `γ(t)ᵀ γ(t) = I` with
the product rule: `Xᵀ · I + I · X = 0`. Together with `exp_skew_orthogonal` this identifies the
Lie algebra of `O(n)` (and of `SO(n)`) with the skew-symmetric matrices. -/
theorem tangent_skew {n : Type*} [Fintype n] [DecidableEq n] (γ : ℝ → Matrix n n ℝ)
    (X : Matrix n n ℝ) (hγ : HasDerivAt γ X 0) (h0 : γ 0 = 1) (horth : ∀ t, (γ t)ᵀ * γ t = 1) :
    Xᵀ + X = 0 := by
  have hT : HasDerivAt (fun t => (γ t)ᵀ) Xᵀ 0 := by
    have hL := (Matrix.transposeLinearEquiv n n ℝ ℝ).toContinuousLinearEquiv.toContinuousLinearMap.hasFDerivAt (x := γ 0)
    exact HasFDerivAt.comp_hasDerivAt (0 : ℝ) hL hγ
  have hprod := hT.mul hγ
  have hconst : HasDerivAt (fun t => (γ t)ᵀ * γ t) 0 0 := by
    have : (fun t => (γ t)ᵀ * γ t) = fun _ => (1 : Matrix n n ℝ) := funext horth
    rw [this]
    exact hasDerivAt_const _ _
  have := hprod.unique hconst
  simpa [h0] using this
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor

Quaternions and SU(2)SU(2): points of S3S^3 give elements of SU(2)SU(2), the norm is multiplicative, and conjugation by a unit quaternion is an isometry of the pure quaternions with ρ(−q)=ρ(q)\rho(-q) = \rho(q):

su2_memLean 4Proved here from basic factsFormally verified
/-- **Points of the 3-sphere give elements of `SU(2)`.** If `|a|² + |b|² = 1` then
`!![a, −b̄; b, ā]` is unitary with determinant `1`. (Conversely every element of `SU(2)` has this
form, which identifies `SU(2)` with the unit sphere `S³ ⊂ ℂ² = ℝ⁴` and with the unit
quaternions `a + b j`; that converse is not formalised here.) -/
theorem su2_mem (a b : ℂ) (h : Complex.normSq a + Complex.normSq b = 1) :
    !![a, -(starRingEnd ℂ) b; b, (starRingEnd ℂ) a] ∈ Matrix.specialUnitaryGroup (Fin 2) ℂ := by
  rw [Matrix.mem_specialUnitaryGroup_iff, Matrix.mem_unitaryGroup_iff]
  have h' : a * (starRingEnd ℂ) a + b * (starRingEnd ℂ) b = 1 := by
    rw [Complex.mul_conj, Complex.mul_conj, ← Complex.ofReal_add, h, Complex.ofReal_one]
  refine ⟨?_, ?_⟩
  · ext i j
    fin_cases i <;> fin_cases j <;>
      simp [Matrix.mul_apply, Fin.sum_univ_two, Matrix.star_apply] <;>
      first | ring1 | linear_combination h'
  · simp [Matrix.det_fin_two]
    linear_combination h'
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
quat_norm_mulLean 4Applies a library theoremFormally verified
/-- **The quaternion norm is multiplicative**: `|p q|² = |p|² |q|²` (Euler's four-square
identity in disguise). So the unit quaternions form a group — the 3-sphere `S³` with a
group law. Mathlib: `Quaternion.normSq` is a monoid-with-zero homomorphism, so `map_mul`. -/
theorem quat_norm_mul (p q : Quaternion ℝ) :
    Quaternion.normSq (p * q) = Quaternion.normSq p * Quaternion.normSq q :=
  map_mul Quaternion.normSq p q
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
quat_conj_pureLean 4Proved here from basic factsFormally verified
/-- **Conjugation preserves pure quaternions.** Identify `ℝ³` with the quaternions of real part
`0`. If `v` is pure, so is `q v q̄` (where `q̄ = star q`); in fact its real part is
`|q|² · Re v`, a polynomial identity checked by `simp` and `ring`. -/
theorem quat_conj_pure (q v : Quaternion ℝ) (hv : v.re = 0) : (q * v * star q).re = 0 := by
  simp [hv]
  ring
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
quat_conj_normLean 4Proved here from basic factsFormally verified
/-- **Conjugation by a unit quaternion preserves length**: `|q v q̄|² = |q|² |v|² |q̄|² = |v|²`.
So `v ↦ q v q̄` is an orthogonal map of `ℝ³` — the rotation `ρ(q)` of the lesson. -/
theorem quat_conj_norm (q v : Quaternion ℝ) (hq : Quaternion.normSq q = 1) :
    Quaternion.normSq (q * v * star q) = Quaternion.normSq v := by
  rw [map_mul, map_mul, Quaternion.normSq_star, hq]
  ring
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor
quat_neg_sameLean 4Proved here from basic factsFormally verified
/-- **`q` and `−q` give the same rotation**: `(−q) v (−q)̄ = q v q̄`, since the two signs cancel.
This is the "two-to-one" in the double cover `SU(2) → SO(3)`: its kernel contains `±1`. -/
theorem quat_neg_same (q v : Quaternion ℝ) : (-q) * v * star (-q) = q * v * star q := by
  rw [star_neg, neg_mul, mul_neg, neg_mul, neg_neg]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/MatrixGroups.leanTry it in the Lean web editor

What is and is not formalised. Independent: Proposition 1 and the determinant, SO(2)SO(2) commutative and SO(3)SO(3) not, Euler's theorem (the axis), exp⁡(so(n))⊆O(n)\exp(\mathfrak{so}(n)) \subseteq O(n), the one-parameter subgroup law, tangent vectors to O(n)O(n) are skew, S3→SU(2)S^3 \to SU(2), and the isometry and sign properties of ρ\rho. From Mathlib: the description of O(n)O(n), the tangent vector of exp⁡(tX)\exp(tX), and ∣pq∣=∣p∣∣q∣|pq| = |p||q|. Not formalised: compactness and connectedness (Propositions 2 and 3), the trace formula for the angle, surjectivity and the kernel of ρ\rho, Theorem 8, and det⁡exp⁡X=etr⁡X\det \exp X = e^{\operatorname{tr} X} — which Mathlib's matrix-exponential file lists as a result still to be added. The Lean exercises ask for det⁡A=±1\det A = \pm1 and ρ(−q)=ρ(q)\rho(-q) = \rho(q).

ComputationC

Exponentials numerically, quaternions exactly

The first program sums the exponential series (scaling XX down by a power of 22, summing, then squaring back up). It checks exp⁡(θJ)=R(θ)\exp(\theta J) = R(\theta), that exponentials of skew matrices are rotations, and det⁡exp⁡X=etr⁡X\det\exp X = e^{\operatorname{tr} X}, and then measures the Baker–Campbell–Hausdorff correction: exp⁡(tX)exp⁡(tY)\exp(tX)\exp(tY) differs from exp⁡(t(X+Y))\exp(t(X + Y)) by a term of order t2t^2 that the bracket t22[X,Y]\tfrac{t^2}{2}[X, Y] removes.

The matrix exponential: rotations, determinants and the bracketPythonNumerical approximationComputationally tested
"""The matrix exponential: rotations, det(exp X) = e^(tr X), and the bracket.

exp(X) = sum X^k / k! is computed here from its power series (with scaling and
squaring, exp(X) = exp(X / 2^s)^(2^s), to keep the series short and accurate).
The experiment checks numerically that

* exp(theta J) is the rotation matrix R(theta), for J = [[0, -1], [1, 0]];
* exp of a skew-symmetric 3 x 3 matrix is orthogonal with determinant 1;
* det(exp X) = e^(tr X) for random matrices (a theorem, not yet in Mathlib);
* exp(X + Y) differs from exp(X) exp(Y) when XY != YX, and for small t
  exp(tX) exp(tY) = exp(t(X + Y) + t^2 [X, Y] / 2 + O(t^3)), the first
  Baker-Campbell-Hausdorff correction. The error orders t^2 and t^3 are read
  off from t = 0.1 and t = 0.01.

Floating-point evidence about specific matrices.
"""

import math

import numpy as np

def expm(x, terms=20):
    """exp(x) for a square matrix, by scaling and squaring a Taylor series."""
    x = np.asarray(x, dtype=float)
    norm = np.abs(x).sum(axis=1).max()
    s = max(0, int(math.ceil(math.log2(norm))) + 1) if norm > 0 else 0
    y = x / 2 ** s
    result = np.eye(len(x))
    term = np.eye(len(x))
    for k in range(1, terms + 1):
        term = term @ y / k
        result = result + term
    for _ in range(s):
        result = result @ result
    return result

def rotation(theta):
    """The rotation matrix R(theta) of the plane."""
    c, s = math.cos(theta), math.sin(theta)
    return np.array([[c, -s], [s, c]])

def skew(a, b, c):
    """The skew-symmetric matrix with (a, b, c) above the diagonal."""
    return np.array([[0.0, a, b], [-a, 0.0, c], [-b, -c, 0.0]])

def bracket(x, y):
    """The commutator [X, Y] = XY - YX."""
    return x @ y - y @ x

def bch_errors(x, y, t):
    """(|exp(tX)exp(tY) - exp(t(X+Y))|, same with the t^2 [X,Y]/2 term)."""
    lhs = expm(t * x) @ expm(t * y)
    first = np.abs(lhs - expm(t * (x + y))).max()
    second = np.abs(lhs - expm(t * (x + y) + t * t * bracket(x, y) / 2)).max()
    return float(first), float(second)

def main():
    j = np.array([[0.0, -1.0], [1.0, 0.0]])
    err = max(np.abs(expm(th * j) - rotation(th)).max()
              for th in np.linspace(-7, 7, 29))
    print("1. exp(theta J) = R(theta) for 29 angles in [-7, 7]:"
          f" max error {err:.1e}")
    rng = np.random.default_rng(2024)
    worst_orth = worst_det = 0.0
    for _ in range(50):
        q = expm(skew(*rng.uniform(-3, 3, 3)))
        worst_orth = max(worst_orth, np.abs(q.T @ q - np.eye(3)).max())
        worst_det = max(worst_det, abs(np.linalg.det(q) - 1))
    print("2. exp(skew) for 50 random skew-symmetric X:")
    print(f"   max |Q^T Q - I| = {worst_orth:.1e}, max |det Q - 1| ="
          f" {worst_det:.1e}")
    rel = 0.0
    for _ in range(50):
        x = rng.normal(size=(4, 4))
        lhs, rhs = np.linalg.det(expm(x)), math.exp(np.trace(x))
        rel = max(rel, abs(lhs - rhs) / rhs)
    print("3. det(exp X) = e^(tr X) for 50 random 4 x 4 X:"
          f" max relative error {rel:.1e}")
    x = np.array([[0.0, 1.0], [0.0, 0.0]])
    y = np.array([[0.0, 0.0], [1.0, 0.0]])
    gap = np.abs(expm(x + y) - expm(x) @ expm(y)).max()
    print("4. X = [[0, 1], [0, 0]], Y = [[0, 0], [1, 0]] do not commute:")
    print(f"   max |exp(X + Y) - exp(X) exp(Y)| = {gap:.3f}")
    print("   t       without [X,Y]/2   with [X,Y]/2")
    for t in (0.1, 0.01):
        e1, e2 = bch_errors(x, y, t)
        print(f"   {t:<6}  {e1:.2e}          {e2:.2e}")
    print("   (errors shrink like t^2 without the bracket, like t^3 with it)")
    print()
    print("Epistemic status: floating-point computations with a truncated "
          "series.\nThey are numerical evidence for these matrices only. "
          "exp(skew) in SO(n)\nand the one-parameter subgroup law are proved "
          "in the lesson (and in\nLean); det(exp X) = e^(tr X) and the BCH "
          "expansion are theorems proved\nin the references.")

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.

These are floating-point checks, accurate to about 10−1410^{-14}, on finitely many matrices. The second program avoids rounding altogether by using quaternions with rational coordinates, such as (1+2i+2j+4k)/5(1 + 2i + 2j + 4k)/5. It verifies exactly that ρ(q)\rho(q) is orthogonal with determinant 11, that ρ(−q)=ρ(q)\rho(-q) = \rho(q) and ρ(pq)=ρ(p)ρ(q)\rho(pq) = \rho(p)\rho(q), and that rotations need not commute. It then checks exhaustively that the 2424 Hurwitz units ±1,±i,±j,±k,12(±1±i±j±k)\pm1, \pm i, \pm j, \pm k, \frac12(\pm1 \pm i \pm j \pm k) form a group mapping two-to-one onto 1212 rotations: the rotation group of a regular tetrahedron, doubled into the "binary tetrahedral group".

Unit quaternions as rotations, in exact arithmeticPythonExact computationExhaustive finite checkComputationally tested
"""Unit quaternions as rotations, checked in exact rational arithmetic.

A unit quaternion q acts on pure quaternions v = xi + yj + zk by v -> q v q*,
and the lesson shows this is a rotation rho(q) of R^3 with rho(q) = rho(-q).
For quaternions with rational coordinates everything is exact, so the program
can verify, with no rounding at all, that

* rho(q) is orthogonal with determinant 1 for several rational unit q;
* rho(-q) = rho(q) and rho(pq) = rho(p) rho(q) (a two-to-one homomorphism);
* rho(p) rho(q) != rho(q) rho(p): rotations of space do not commute;
* q = (1 + i + j + k)/2 is a 120-degree turn permuting the coordinate axes;
* the 24 Hurwitz units (+-1, +-i, +-j, +-k, (+-1 +-i +-j +-k)/2) are closed
  under multiplication and map onto exactly 12 rotations - the rotation group
  of a regular tetrahedron - each hit by exactly two quaternions.

These are exact, exhaustive checks of finitely many cases.
"""

import math
from fractions import Fraction
from itertools import product

def qmul(p, q):
    """Hamilton's product of quaternions given as (a, b, c, d) = a+bi+cj+dk."""
    a1, b1, c1, d1 = p
    a2, b2, c2, d2 = q
    return (a1 * a2 - b1 * b2 - c1 * c2 - d1 * d2,
            a1 * b2 + b1 * a2 + c1 * d2 - d1 * c2,
            a1 * c2 - b1 * d2 + c1 * a2 + d1 * b2,
            a1 * d2 + b1 * c2 - c1 * b2 + d1 * a2)

def conj(q):
    """The quaternion conjugate a - bi - cj - dk."""
    return (q[0], -q[1], -q[2], -q[3])

def norm_sq(q):
    """|q|^2 = a^2 + b^2 + c^2 + d^2."""
    return sum(x * x for x in q)

def rho(q):
    """The 3 x 3 matrix (rows) of v -> q v q* on pure quaternions."""
    cols = []
    for e in [(0, 1, 0, 0), (0, 0, 1, 0), (0, 0, 0, 1)]:
        cols.append(qmul(qmul(q, e), conj(q))[1:])
    return tuple(tuple(cols[j][i] for j in range(3)) for i in range(3))

def matmul(a, b):
    """Product of 3 x 3 matrices given as tuples of rows."""
    return tuple(tuple(sum(a[i][k] * b[k][j] for k in range(3))
                       for j in range(3)) for i in range(3))

def transpose(a):
    return tuple(tuple(a[j][i] for j in range(3)) for i in range(3))

def det3(a):
    """Determinant of a 3 x 3 matrix."""
    return (a[0][0] * (a[1][1] * a[2][2] - a[1][2] * a[2][1])
            - a[0][1] * (a[1][0] * a[2][2] - a[1][2] * a[2][0])
            + a[0][2] * (a[1][0] * a[2][1] - a[1][1] * a[2][0]))

IDENTITY = ((1, 0, 0), (0, 1, 0), (0, 0, 1))

def frac_q(*xs, den=1):
    return tuple(Fraction(x, den) for x in xs)

def show(q):
    """Compact text for a rational quaternion, e.g. '(1, 2, 2, 4)/5'."""
    den = 1
    for x in q:
        den = den * x.denominator // math.gcd(den, x.denominator)
    body = ", ".join(str(int(x * den)) for x in q)
    return f"({body})" + (f"/{den}" if den > 1 else "")

def hurwitz_units():
    """The 24 unit quaternions with all coordinates in Z or all in Z + 1/2."""
    units = []
    for i in range(4):
        for s in (1, -1):
            q = [Fraction(0)] * 4
            q[i] = Fraction(s)
            units.append(tuple(q))
    for signs in product((1, -1), repeat=4):
        units.append(tuple(Fraction(s, 2) for s in signs))
    return units

def main():
    samples = [frac_q(1, 1, 1, 1, den=2), frac_q(3, 4, 0, 0, den=5),
               frac_q(1, 2, 2, 4, den=5), frac_q(2, 1, 4, 2, den=5)]
    print("Rational unit quaternions q = (a, b, c, d) = a + bi + cj + dk:")
    print("   " + ", ".join(show(q) for q in samples))
    ok = all(norm_sq(q) == 1 and
             matmul(transpose(rho(q)), rho(q)) == IDENTITY and
             det3(rho(q)) == 1 and
             rho(tuple(-x for x in q)) == rho(q) for q in samples)
    print("rho(q) orthogonal, det 1, and rho(-q) = rho(q) for all:", ok)
    hom = all(rho(qmul(p, q)) == matmul(rho(p), rho(q))
              for p in samples for q in samples)
    print("rho(pq) = rho(p) rho(q) for all 16 pairs:", hom)
    p, q = samples[1], samples[2]
    print("rho(p) rho(q) = rho(q) rho(p) for p, q above:",
          matmul(rho(p), rho(q)) == matmul(rho(q), rho(p)))
    r = rho(samples[0])
    print("rho((1 + i + j + k)/2) =", [[int(x) for x in row] for row in r])
    print("   (x -> y -> z -> x: a 120-degree turn about (1, 1, 1))")
    print()
    units = hurwitz_units()
    closed = all(qmul(a, b) in units for a in units for b in units)
    rotations = {}
    for u in units:
        rotations.setdefault(rho(u), []).append(u)
    print(f"Hurwitz units: {len(units)} quaternions,"
          f" closed under multiplication: {closed}")
    print(f"distinct rotations rho(u): {len(rotations)};"
          " quaternions per rotation:",
          sorted({len(v) for v in rotations.values()}))
    print()
    print("Epistemic status: exact rational arithmetic, so each 'True' is an\n"
          "exact verification for the quaternions listed (and an exhaustive\n"
          "check over the 24 Hurwitz units). That rho is a two-to-one\n"
          "homomorphism from all unit quaternions onto SO(3) is the theorem\n"
          "proved in the lesson.")

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Explore

Explore: one-parameter subgroups and the two components of O(2)

Each phase portrait below is the flow x(t)=exp⁡(tX)x(0)\mathbf x(t) = \exp(tX)\mathbf x(0) of a one-parameter subgroup, for three different XX with trace 00, so every flow lies in SL2(R)SL_2(\R). The rotation generator above gave circles (a compact subgroup, SO(2)SO(2)). The symmetric generator (0110)\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} gives the hyperbolic rotations, which preserve x2−y2x^2 - y^2: orbits are hyperbolas, and the subgroup is a line, not a circle. Click to start new trajectories and compare.

Hyperbolic rotations: X = [[0, 1], [1, 0]]

Arrows show where the system moves next. Click to start a trajectory, or choose an example.

Examples

x′ = y, y′ = x

darker, longer arrows = faster forward in time backward in timeequilibrium (hollow = stable or centre)

Click the plane to start a trajectory, or type a start point below.

Start point

Trajectories: 4. They are numerical approximations (fourth-order Runge–Kutta), not exact formulas.

Linear systemA = [0110]

T = 0, D = −1, T² − 4D = 4; λ = −1, 1

Equilibrium at (0, 0): saddle (unstable)

TDD = T²/4
Trace T and determinant D: below the T-axis, saddles; above the dashed parabola D = T²/4, spirals; between them, nodes; on the upper D-axis, centres. Left of the D-axis is stable, right is unstable.

Multiplication by a unit complex number ww is a rotation, so U(1)≅SO(2)U(1) \cong SO(2). Drag ww around the unit circle and watch z↦wzz \mapsto wz turn zz by the angle of ww without changing its length.

U(1): multiplying by a unit complex number rotates

Drag z and w. Adding puts arrows end to end; multiplying multiplies lengths and adds angles.

18.4°60°78.4°zwzw

Drag the points, or focus one with Tab and use the arrow keys (hold Shift for small steps).

z =+i
w =+i
NumberModulusArgument
z1.5 + 0.5i1.58118.4°0.322 rad
w0.5 + 0.866i160°π/3
zw0.317 + 1.549i1.58178.4°1.369 rad

Lengths multiply: 1.581 × 1 = 1.581

Angles add: 18.4° + 60° = 78.4°

Multiplying by w stretches by |w| and turns by arg w: lengths multiply and angles add.

Finally, O(2)O(2) has two components. Pick the rotation preset and play the morph from II: the flag turns but never flips. Pick the reflection preset and play again: on the way from II to a reflection the determinant must pass through 00, leaving the group — there is no path inside O(2)O(2).

Two components of O(2)

Rotations (det 1) and reflections (det −1): watch the determinant during the morph from I.

Your own matrix
Ae₁Ae₂
  • image of the grid
  • image of the unit square
  • image of the flag
  • before the transformation
Entries of the matrix A
A =

The columns of A are the images of e₁ = (1, 0) and e₂ = (0, 1): Ae₁ = (0.866, 0.5), Ae₂ = (−0.5, 0.866)

det A = ad − bc = 1

The unit square (area 1) becomes a parallelogram of area |det A| = 1. Since det A > 0, orientation is preserved.

Invariant lines (real eigenvectors)

λ = 0.866 ± 0.5i

No real eigenvectors: A turns every direction, so no line through 0 stays put. The eigenvalues are complex. In fact A is a rotation by 30°.

Exercises

Exercises

1. Matrix groups and continuous symmetry

Warm-upHuman

Which of these real 3×33 \times 3 matrices lie in SO(3)SO(3)? (Choose all that apply.)

Choose all that apply

2. Matrix groups and continuous symmetry

Warm-upHuman

A rotation A∈SO(3)A \in SO(3) has tr⁡A=0\operatorname{tr} A = 0. Through what angle θ∈[0°,180°]\theta \in [0°, 180°] does it rotate, in degrees?

3. Matrix groups and continuous symmetry

CoreHuman

What is the dimension of the rotation group SO(5)SO(5) (equivalently of its Lie algebra so(5)\mathfrak{so}(5))?

4. Matrix groups and continuous symmetry

CoreHuman

Which of these matrix groups are compact? (Choose all that apply.)

Choose all that apply

5. Matrix groups and continuous symmetry

CoreHuman

The proof of Euler's theorem shows det⁡(A−I)=−det⁡(A−I)\det(A - I) = -\det(A - I) for A∈SO(3)A \in SO(3). Which step uses that the dimension is odd?

Choose one

6. Matrix groups and continuous symmetry

CoreHuman

The unit quaternion qθ=cos⁡θ2+sin⁡θ2 kq_\theta = \cos\frac\theta2 + \sin\frac\theta2\,k induces the rotation ρ(qθ)\rho(q_\theta) by θ\theta about the zz-axis. As θ\theta increases from 0°0° to 360°360°, the rotation returns to the identity. What is the real part of qθq_\theta at θ=360°\theta = 360°?

7. Matrix groups and continuous symmetry

CoreFormal

The Lean theorem exp_skew_orthogonal concludes (NormedSpace.exp X)ᵀ * NormedSpace.exp X = 1 for a real square matrix X. Which hypothesis makes it true?

Choose one

8. Matrix groups and continuous symmetry

StretchHuman

For which pairs is exp⁡(X+Y)=exp⁡Xexp⁡Y\exp(X + Y) = \exp X \exp Y? Here N=(0100)N = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix}, N′=(0010)N' = \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix}, J=(0−110)J = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}, E=(1000)E = \begin{pmatrix} 1 & 0 \\ 0 & 0 \end{pmatrix}. (Choose all that apply.)

Choose all that apply

9. Matrix groups and continuous symmetry

StretchComputational

Implement Hamilton's product qmul(p, q) for quaternions given as tuples (a, b, c, d) meaning a+bi+cj+dka + bi + cj + dk, and rotate(q, v) returning the vector part of q v qˉq\,v\,\bar q for a unit quaternion q and a vector v = (x, y, z) (identified with the pure quaternion xi+yj+zkxi + yj + zk).

Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Common misconceptionsH

Common misconceptions

Misconception

"exp⁡(X+Y)=exp⁡Xexp⁡Y\exp(X + Y) = \exp X \exp Y for all matrices." This holds when XY=YXXY = YX (Theorem 7(a)), but not in general: for X=(0100)X = \begin{pmatrix} 0 & 1 \\ 0 & 0 \end{pmatrix} and Y=(0010)Y = \begin{pmatrix} 0 & 0 \\ 1 & 0 \end{pmatrix} the two sides differ by about 0.540.54 in one entry (first experiment). The discrepancy is governed by the bracket [X,Y][X, Y] — non-commutativity of the group shows up as non-additivity of exp⁡\exp.

Misconception

"Rotations of space commute, like rotations of the plane." SO(2)SO(2) is commutative because its elements are just angles, but SO(3)SO(3) is not: the book experiment, the Lean theorem so3_not_comm, and the bracket [Xu,Xv]=Xu×v≠0[X_u, X_v] = X_{u \times v} \ne 0 all show it. Two rotations about the same axis do commute.

Misconception

"Every orthogonal 3×33 \times 3 matrix is a rotation." Only those with determinant 11. The matrix −I-I (the point reflection v↦−vv \mapsto -v) is orthogonal with determinant −1-1; it is not a rotation about any axis and lies in the other component of O(3)O(3). In fact O(3)=SO(3)×{±I}O(3) = SO(3) \times \{\pm I\}.

Misconception

"A rotation by 360°360° is the identity, so nothing can tell it from doing nothing." In SO(3)SO(3) it is the identity. But the path of rotations from 0°0° to 360°360° is a loop that cannot be shrunk to a point in SO(3)SO(3), and in SU(2)SU(2) it lifts to a path from 11 to −1-1. Spin-12\tfrac12 particles are described by SU(2)SU(2), which is why their states change sign; the belt trick is the everyday version.

Misconception

"For a connected matrix group, every element is an exponential." True for compact connected groups such as SO(n)SO(n) and U(n)U(n) (a theorem; for SO(3)SO(3) it is Euler's theorem with Rodrigues' formula), but false for SL2(R)SL_2(\R), which is connected but contains (−110−1)\begin{pmatrix} -1 & 1 \\ 0 & -1 \end{pmatrix}, not an exponential (worked example). The images of exp⁡\exp always generate a connected group.

Misconception

"The Lie algebra is a group of matrices too." It is a vector space with the bracket, not a group under multiplication: the product of two skew-symmetric matrices is usually not skew, and so(n)\mathfrak{so}(n) does not contain II. Its elements are velocities, not symmetries.

ViewpointsH

Many ways of seeing

Topology— SO(3) is real projective space; the Hopf fibration

Theorem 6 identifies SO(3)SO(3) with S3/{±1}S^3/\{\pm 1\}, the real projective space RP3\R P^3. Another picture: a rotation is an axis uu and an angle θ∈[0,π]\theta \in [0, \pi], i.e. the point θu\theta u of the closed ball of radius π\pi, with antipodal boundary points identified (a rotation by π\pi about uu equals one about −u-u). Since S3S^3 is simply connected and the covering S3→SO(3)S^3 \to SO(3) has two sheets, π1(SO(3))≅Z/2\pi_1(SO(3)) \cong \Z/2: the 360°360° loop is non-trivial and its double is trivial. More generally π1(SO(n))≅Z/2\pi_1(SO(n)) \cong \Z/2 for n≥3n \ge 3, and the universal cover is the spin group Spin(n)\mathrm{Spin}(n). The map S3→S2S^3 \to S^2, q↦qiqˉq \mapsto qi\bar q, sends a unit quaternion to the image of ii under its rotation; each fibre is a circle, giving the Hopf fibration S1→S3→S2S^1 \to S^3 \to S^2, which showed (Hopf, 1931) that π3(S2)≅Z\pi_3(S^2) \cong \Z. See algebraic topology.

Geometry— Klein's programme: geometries are group actions

In Felix Klein's Erlangen programme (1872) a geometry is a space with a group acting on it, and its theorems are the properties invariant under the group. Euclidean geometry is Rn\R^n with E(n)E(n); spherical geometry is S2S^2 with SO(3)SO(3), and S2=SO(3)/SO(2)S^2 = SO(3)/SO(2) because SO(3)SO(3) acts transitively with the rotations about the north pole as stabiliser; the hyperbolic plane is SL2(R)/SO(2)SL_2(\R)/SO(2) (see non-Euclidean geometry), and projective geometry is governed by PGL3PGL_3 (see projective geometry). A compact matrix group carries a Riemannian metric invariant under left and right multiplication, and for it the one-parameter subgroups t↦exp⁡(tX)t \mapsto \exp(tX) are precisely the geodesics through II. See transformation geometry and Lie groups.

Algebra— Linearisation and representations

The passage G⇝gG \rightsquigarrow \mathfrak g replaces a non-linear object by a linear one with a bilinear bracket satisfying antisymmetry and the Jacobi identity [X,[Y,Z]]+[Y,[Z,X]]+[Z,[X,Y]]=0[X, [Y, Z]] + [Y, [Z, X]] + [Z, [X, Y]] = 0. Lie's theorems say that for simply connected groups nothing is lost: homomorphisms of such groups correspond exactly to homomorphisms of Lie algebras. That is why SU(2)SU(2) and SO(3)SO(3), with isomorphic Lie algebras, differ only through π1\pi_1. The compact simple Lie algebras were classified by Killing and Cartan into four infinite families (su(n)\mathfrak{su}(n), so(2n+1)\mathfrak{so}(2n+1), sp(n)\mathfrak{sp}(n), so(2n)\mathfrak{so}(2n)) and five exceptions (g2,f4,e6,e7,e8\mathfrak g_2, \mathfrak f_4, \mathfrak e_6, \mathfrak e_7, \mathfrak e_8). A representation is a homomorphism G→GL(V)G \to GL(V); SU(2)SU(2) has exactly one irreducible representation in each dimension n+1n + 1 (on homogeneous polynomials of degree nn in two variables), while only the odd-dimensional ones factor through SO(3)SO(3). See representation theory.

Analysis— Linear differential equations and averaging over a group

x(t)=exp⁡(tA)x0\mathbf x(t) = \exp(tA)\mathbf x_0 solves x′=Ax\mathbf x' = A\mathbf x (Theorem 7(d)), and Theorem 8 is a uniqueness theorem for such flows. The flow preserves a quadratic form QQ exactly when AA lies in the Lie algebra of the orthogonal group of QQ: skew-symmetric AA give rotations, (0110)\begin{pmatrix} 0 & 1 \\ 1 & 0 \end{pmatrix} gives the hyperbolas of the visualisation (see ordinary differential equations). Compactness has a powerful analytic consequence: a compact group carries a unique invariant probability measure (Haar measure), so one can average over it. Averaging any inner product over GG gives a GG-invariant one, which proves that every representation of a compact group is unitary and splits into irreducibles; the Peter–Weyl theorem extends Fourier series from the circle U(1)U(1) to every compact group. See harmonic analysis.

Physics— Spin, angular velocity and the groups of physical law

For a rigid body rotating as A(t)∈SO(3)A(t) \in SO(3), the matrix A−1A′A^{-1}A' lies in so(3)≅R3\mathfrak{so}(3) \cong \R^3: it is the angular velocity, and Euler's equations of rigid-body motion are an equation in this Lie algebra. Quantum states of a spin-12\tfrac12 particle form C2\C^2 with SU(2)SU(2) acting; the 2π2\pi rotation acts as −I-I, observed directly in neutron interferometry experiments in 1975. Special relativity replaces SO(3)SO(3) by the Lorentz group SO(1,3)SO(1, 3), whose identity component is doubly covered by SL2(C)SL_2(\C) (see relativity), and the Standard Model of particle physics is built on the gauge group SU(3)×SU(2)×U(1)SU(3) \times SU(2) \times U(1) (see gauge theory and quantum mechanics). Noether's theorem pairs one-parameter symmetry groups with conserved quantities — rotations with angular momentum. Physics motivated much of this mathematics, but the theorems stand on proofs, not on experiment.

Number theory— Hurwitz quaternions and sums of four squares

The quaternions with all coordinates integers, or all in Z+12\Z + \tfrac12, form a ring — the Hurwitz quaternions — whose units are the 2424 elements of the second experiment. Multiplicativity of the norm, ∣pq∣2=∣p∣2∣q∣2|pq|^2 = |p|^2|q|^2, is Euler's four-square identity: a product of two sums of four squares is a sum of four squares. Combined with a Euclidean-style division algorithm in the Hurwitz ring, it gives a proof of Lagrange's four-square theorem (1770): every positive integer is a sum of four squares. Counting rational points on SO(3)SO(3) and on spheres leads into the arithmetic of quadratic forms; the groups SL2(Z)SL_2(\Z) and SO(n,Z)SO(n, \Z), matrix groups over the integers, are central in number theory and in the theory of modular forms.

Category theory— The Lie functor

A continuous homomorphism f:G→Hf : G \to H of matrix groups induces a linear map df:g→hdf : \mathfrak g \to \mathfrak h, df(X)=ddtf(exp⁡tX)∣t=0df(X) = \frac{d}{dt}f(\exp tX)\big|_{t = 0}, with f(exp⁡X)=exp⁡(df(X))f(\exp X) = \exp(df(X)) and df([X,Y])=[dfX,dfY]df([X, Y]) = [df X, df Y], and d(f∘g)=df∘dgd(f \circ g) = df \circ dg by the chain rule. So taking Lie algebras is a functor from matrix groups to Lie algebras (see functors). It does not distinguish all groups — SU(2)SU(2) and SO(3)SO(3) have isomorphic Lie algebras — but on simply connected Lie groups (a class slightly larger than matrix groups: the universal cover of SL2(R)SL_2(\R) is not a matrix group) it is an equivalence of categories onto finite-dimensional real Lie algebras. This combines Lie's theorems with Ado's theorem, which says every finite-dimensional Lie algebra is a Lie algebra of matrices.

History & global context

History and global context

  • Rotations. Leonhard Euler proved in 1775–1776 that every motion of a rigid body about a fixed point is a rotation about an axis. Olinde Rodrigues (1840) gave the formula for composing rotations, in terms of the parameters now called Euler–Rodrigues parameters — essentially unit quaternions, three years before quaternions were invented.
  • Quaternions. William Rowan Hamilton discovered the quaternions on 16 October 1843, carving i2=j2=k2=ijk=−1i^2 = j^2 = k^2 = ijk = -1 into Brougham Bridge in Dublin. Arthur Cayley published the description of rotations as v↦qvq−1v \mapsto qvq^{-1} in 1845 (Hamilton found it independently). Quaternions are now standard in aerospace attitude control, robotics and computer graphics.
  • Lie. Sophus Lie, working in Norway and Leipzig from the 1870s, created the theory of continuous transformation groups to do for differential equations what Galois theory does for polynomial equations. Wilhelm Killing (1888–1890) and Élie Cartan (1894) classified the simple Lie algebras over C\C. Cartan also discovered spinors (1913), before physicists needed them.
  • Matrices and spin. John von Neumann proved in 1929 that closed subgroups of GLnGL_n are Lie groups, founding the theory of matrix groups. Wolfgang Pauli (1927) and Paul Dirac (1928) introduced the matrices of electron spin, and Eugene Wigner and Hermann Weyl brought group theory to quantum mechanics; Weyl's book The Classical Groups (1939) named its subject.
  • Representation theory worldwide. Harish-Chandra, born in Kanpur, built the representation theory of non-compact semisimple Lie groups such as SL2(R)SL_2(\R) in the 1950s and 1960s. Hua Luogeng in Beijing developed harmonic analysis on the classical domains (book, 1958), and Claude Chevalley's Theory of Lie Groups (1946) made the subject's modern foundations.
Further reading

Further reading

  • John Stillwell, Naive Lie Theory (2008) — matrix groups, quaternions and Lie algebras at exactly this level, with much history.
  • Andrew Baker, Matrix Groups: An Introduction to Lie Group Theory (2002).
  • Brian C. Hall, Lie Groups, Lie Algebras, and Representations: An Elementary Introduction (2003; 2nd ed. 2015) — the matrix-group approach, with full proofs of the Lie product formula and the bracket.
  • Kristopher Tapp, Matrix Groups for Undergraduates (2005; 2nd ed. 2016).
  • Roger Howe, "Very basic Lie theory", American Mathematical Monthly 90 (1983) — a celebrated short introduction.
  • V. I. Arnold, Mathematical Methods of Classical Mechanics (1974; English 1978) — rigid bodies and Lie algebras in mechanics.