Documentation

TauCeti.LinearAlgebra.CliffordAlgebra.RealForm.Basic

The real Clifford algebras Cliff(p, q) and the base entries of the Bott table #

Over ℂ a nondegenerate quadratic form is determined by its rank, so there is one Clifford algebra in each dimension. Over ℝ this fails: a nondegenerate real form is classified by its signature (p, q), and the resulting algebras Cliff(p, q) run through matrix algebras over ℝ, ℂ and ℍ, and products of two copies of such a matrix algebra, in a pattern periodic modulo 8. This file introduces the family of forms that the pattern is indexed by, the coordinate isometries for switching signatures, and the four small entries that fix the indexing convention.

TauCeti.realCliffordForm p q is the diagonal form on Fin (p + q) → ℝ with +1 in the first p coordinates and -1 in the last q, written as a QuadraticMap.weightedSumSquares against the sign vector TauCeti.realCliffordWeight p q. It is nondegenerate (TauCeti.nondegenerate_realCliffordForm), and its Clifford algebra has dimension 2 ^ (p + q) (TauCeti.finrank_cliffordAlgebra_realCliffordForm). The compact form realCliffordForm n 0 is positive definite (TauCeti.posDef_realCliffordForm_zero) and equals the standard sum-of-squares form (TauCeti.realCliffordForm_zero_eq_weightedSumSquares_one). Negating the form swaps the two signature indices through TauCeti.realCliffordFormNegIsometry; its coordinate action is given by TauCeti.realCliffordFormNegIsometry_apply_castAdd and TauCeti.realCliffordFormNegIsometry_apply_natAdd.

The sign convention — generators of the first p coordinates square to +1 — is not universal: sources that make the first generators square to -1 index the periodicity table by (p - q) mod 8 where this one uses (q - p) mod 8. The convention is therefore fixed here by four explicit small identifications:

The middle two are Mathlib's CliffordAlgebraComplex.equiv and CliffordAlgebraQuaternion.equiv transported along an isometry, since the forms Mathlib uses there are exactly the (0,1) and (0,2) signature forms in disguise. The last is the same transport for the split quaternions ℍ[ℝ,1,-1], followed by their splitting TauCeti.QuaternionAlgebra.oneEquivMatrix. The first is built here from the universal property: a single generator squaring to +1 splits the algebra into two copies of ℝ.

Implementation notes #

Cliff(p, q) is spelled CliffordAlgebra (realCliffordForm p q) throughout rather than being given an abbreviation, so that every lemma about a general CliffordAlgebra applies to it without unfolding.

Main definitions #

Main results #

References #

The real quadratic form of a signature #

def TauCeti.realCliffordWeight (p q : ℕ) (i : Fin (p + q)) :

The sign vector of signature (p, q): +1 on the first p coordinates of Fin (p + q) and -1 on the last q.

Instances For

    The real quadratic form of signature (p, q): the diagonal form x ↦ ∑ᵢ₌₀^{p-1} xᵢ² - ∑ᵢ₌ₚ^{p+q-1} xᵢ² on Fin (p + q) → ℝ. Its Clifford algebra is the real Clifford algebra Cliff(p, q).

    Instances For

      The coordinate signature form is the weighted sum of squares for realCliffordWeight.

      @[simp]
      theorem TauCeti.realCliffordWeight_of_lt {p q : ℕ} {i : Fin (p + q)} (hi : ↑i < p) :
      @[simp]
      theorem TauCeti.realCliffordWeight_of_le {p q : ℕ} {i : Fin (p + q)} (hi : p ≤ ↑i) :

      The orthogonal-sum and coordinate presentations of the real normal form of signature (p, q) are isometric.

      @[simp]
      @[simp]
      theorem TauCeti.realCliffordWeight_ne_zero (p q : ℕ) (i : Fin (p + q)) :
      @[simp]
      theorem TauCeti.realCliffordForm_apply (p q : ℕ) (v : Fin (p + q) → ℝ) :
      (realCliffordForm p q) v = ∑ i : Fin (p + q), realCliffordWeight p q i * (v i * v i)

      The positive-definite signature form is the standard real sum-of-squares form.

      The signature forms are nondegenerate.

      The standard signature form with no negative coordinates is positive definite.

      @[simp]
      theorem TauCeti.realCliffordForm_apply_single (p q : ℕ) (i : Fin (p + q)) (x : ℝ) :

      A coordinate vector Pi.single i x takes the value w * x ^ 2, where w is the signature weight of its coordinate: 1 at the first p coordinates and -1 at the last q.

      theorem TauCeti.isOrtho_realCliffordForm_single {p q : ℕ} {i j : Fin (p + q)} (hij : i ≠ j) (x y : ℝ) :

      Distinct coordinate lines are orthogonal for the signature form.

      The coordinate basis is orthogonal for the polar form of the signature form.

      @[simp]

      Every coordinate unit vector has value one for the compact real Clifford form.

      @[simp]

      The real Clifford algebra of signature (p, q) has dimension 2 ^ (p + q), as every Clifford algebra of a space of that dimension does. This is the count that forces the surjections built below to be isomorphisms.

      Negating a real signature form swaps its positive and negative coordinates.

      Instances For
        @[simp]
        theorem TauCeti.realCliffordFormNegIsometry_apply (p q : ℕ) (x : Fin (p + q) → ℝ) (i : Fin (q + p)) :

        realCliffordFormNegIsometry reads each coordinate through the block swap finAddFlip.

        Negated negative coordinates become positive coordinates under realCliffordFormNegIsometry.

        Negated positive coordinates become negative coordinates under realCliffordFormNegIsometry.

        The even Clifford algebra of signature (p, q) mapped into the Clifford algebra of signature (q, p), through negation and the signature-coordinate isometry.

        Instances For

          The even comparison applies negation followed by the signature-coordinate isometry.

          @[simp]

          An even generator maps to minus the product of the transported vectors.

          Standard signature coordinate isometries #

          def TauCeti.realCliffordSplitIsometry (p₁ p₂ q₁ q₂ : ℕ) :

          Splits a standard real signature form into two standard signature blocks.

          Instances For
            @[simp]
            theorem TauCeti.realCliffordSplitIsometry_fst_pos (p₁ p₂ q₁ q₂ : ℕ) (x : Fin (p₁ + p₂ + (q₁ + q₂)) → ℝ) (i : Fin p₁) :
            ((realCliffordSplitIsometry p₁ p₂ q₁ q₂) x).1 (Fin.castAdd q₁ i) = x (Fin.castAdd (q₁ + q₂) (Fin.castAdd p₂ i))

            The first output block receives the first positive-coordinate block.

            @[simp]
            theorem TauCeti.realCliffordSplitIsometry_fst_neg (p₁ p₂ q₁ q₂ : ℕ) (x : Fin (p₁ + p₂ + (q₁ + q₂)) → ℝ) (i : Fin q₁) :
            ((realCliffordSplitIsometry p₁ p₂ q₁ q₂) x).1 (Fin.natAdd p₁ i) = x (Fin.natAdd (p₁ + p₂) (Fin.castAdd q₂ i))

            The first output block receives the first negative-coordinate block.

            @[simp]
            theorem TauCeti.realCliffordSplitIsometry_snd_pos (p₁ p₂ q₁ q₂ : ℕ) (x : Fin (p₁ + p₂ + (q₁ + q₂)) → ℝ) (i : Fin p₂) :
            ((realCliffordSplitIsometry p₁ p₂ q₁ q₂) x).2 (Fin.castAdd q₂ i) = x (Fin.castAdd (q₁ + q₂) (Fin.natAdd p₁ i))

            The second output block receives the second positive-coordinate block.

            @[simp]
            theorem TauCeti.realCliffordSplitIsometry_snd_neg (p₁ p₂ q₁ q₂ : ℕ) (x : Fin (p₁ + p₂ + (q₁ + q₂)) → ℝ) (i : Fin q₂) :
            ((realCliffordSplitIsometry p₁ p₂ q₁ q₂) x).2 (Fin.natAdd p₂ i) = x (Fin.natAdd (p₁ + p₂) (Fin.natAdd q₁ i))

            The second output block receives the second negative-coordinate block.

            def TauCeti.realCliffordFormCongr {p q p' q' : ℕ} (hp : p = p') (hq : q = q') :

            The coordinate isometry between two presentations of the same signature, relabelling the coordinates along Fin.cast.

            Instances For
              @[simp]
              theorem TauCeti.realCliffordFormCongr_apply {p q p' q' : ℕ} (hp : p = p') (hq : q = q') (x : Fin (p + q) → ℝ) (i : Fin (p' + q')) :
              (realCliffordFormCongr hp hq) x i = x (Fin.cast ⋯ i)

              realCliffordFormCongr reads each coordinate through Fin.cast.

              The coordinate isometry which splits a real signature form into its positive-definite block, the first p coordinates, and its negative-definite block, the last q coordinates.

              Instances For
                @[simp]
                theorem TauCeti.realCliffordBlockIsometry_apply_fst (p q : ℕ) (x : Fin (p + q) → ℝ) (i : Fin p) :

                The positive block of realCliffordBlockIsometry consists of the first p coordinates.

                @[simp]
                theorem TauCeti.realCliffordBlockIsometry_apply_snd (p q : ℕ) (x : Fin (p + q) → ℝ) (i : Fin (0 + q)) :
                ((realCliffordBlockIsometry p q) x).2 i = x (Fin.natAdd p (Fin.cast ⋯ i))

                The negative block of realCliffordBlockIsometry consists of the last q coordinates.

                The coordinate isometry which splits the last positive coordinate from a real signature.

                Instances For
                  @[simp]

                  The positive coordinates retained by realCliffordPositiveSplitIsometry.

                  @[simp]
                  theorem TauCeti.realCliffordPositiveSplitIsometry_fst_neg (p q : ℕ) (v : Fin (p + 1 + q) → ℝ) (i : Fin q) :

                  The negative coordinates retained by realCliffordPositiveSplitIsometry.

                  @[simp]

                  The last positive coordinate extracted by realCliffordPositiveSplitIsometry.

                  The coordinate isometry which separates the last positive and negative coordinates of the signature form as a hyperbolic plane.

                  Instances For
                    @[simp]
                    theorem TauCeti.realBottSplitIsometry_fst_pos (p q : ℕ) (v : Fin (p + 1 + (q + 1)) → ℝ) (i : Fin p) :

                    The positive coordinates retained by realBottSplitIsometry.

                    @[simp]
                    theorem TauCeti.realBottSplitIsometry_fst_neg (p q : ℕ) (v : Fin (p + 1 + (q + 1)) → ℝ) (i : Fin q) :
                    ((realBottSplitIsometry p q) v).1 (Fin.natAdd p i) = v (Fin.natAdd (p + 1) i.castSucc)

                    The negative coordinates retained by realBottSplitIsometry.

                    @[simp]
                    theorem TauCeti.realBottSplitIsometry_snd_zero (p q : ℕ) (v : Fin (p + 1 + (q + 1)) → ℝ) :
                    ((realBottSplitIsometry p q) v).2 0 = v (Fin.castAdd (q + 1) (Fin.last p))

                    The last positive coordinate extracted by realBottSplitIsometry.

                    @[simp]
                    theorem TauCeti.realBottSplitIsometry_snd_one (p q : ℕ) (v : Fin (p + 1 + (q + 1)) → ℝ) :
                    ((realBottSplitIsometry p q) v).2 1 = v (Fin.natAdd (p + 1) (Fin.last q))

                    The last negative coordinate extracted by realBottSplitIsometry.

                    The coordinate isometry which turns the sign-switched form into the standard signature.

                    Instances For
                      @[simp]

                      Negated negative coordinates become positive coordinates under realCliffordSignSwitchStandardIsometry.

                      @[simp]

                      The new positive line is the last positive coordinate under realCliffordSignSwitchStandardIsometry.

                      @[simp]

                      Negated positive coordinates become negative coordinates under realCliffordSignSwitchStandardIsometry.

                      The four base entries, in coordinates #

                      @[simp]
                      theorem TauCeti.realCliffordForm_one_zero_apply (v : Fin (1 + 0) → ℝ) :
                      (realCliffordForm 1 0) v = v 0 * v 0

                      The real Clifford form of signature (1, 0) in coordinates.

                      @[simp]
                      theorem TauCeti.realCliffordForm_zero_one_apply (v : Fin (0 + 1) → ℝ) :
                      (realCliffordForm 0 1) v = -(v 0 * v 0)

                      The real Clifford form of signature (0, 1) in coordinates.

                      @[simp]
                      theorem TauCeti.realCliffordForm_zero_two_apply (v : Fin (0 + 2) → ℝ) :
                      (realCliffordForm 0 2) v = -(v 0 * v 0) + -(v 1 * v 1)

                      The real Clifford form of signature (0, 2) in coordinates.

                      @[simp]
                      theorem TauCeti.realCliffordForm_one_one_apply (v : Fin (1 + 1) → ℝ) :
                      (realCliffordForm 1 1) v = v 0 * v 0 - v 1 * v 1

                      The real Clifford form of signature (1, 1) in coordinates.

                      Cliff(1,0) ≅ ℝ × ℝ #

                      Cliff(1,0) ≅ ℝ × ℝ, the first base entry of the real periodicity table: a single generator squaring to +1 splits the algebra.

                      Instances For
                        @[simp]

                        realCliffordOneZeroEquivProd sends the generator of the coordinate v to the pair (v 0, -v 0): the two characters of ℝ[e]/(e² - 1) read off the two components.

                        Cliff(0,1) ≅ ℂ #

                        The signature (0,1) form is Mathlib's CliffordAlgebraComplex.Q, r ↦ -r², read on the one-dimensional space Fin (0 + 1) → ℝ.

                        Instances For
                          @[simp]

                          realCliffordZeroOneIsometry reads off the single coordinate.

                          Cliff(0,1) ≅ ℂ, the second base entry of the real periodicity table: a single generator squaring to -1 is a square root of -1.

                          Instances For
                            @[simp]

                            realCliffordZeroOneEquivComplex sends the generator of the coordinate v to the purely imaginary complex number v 0 • Complex.I.

                            Cliff(0,2) ≅ ℍ #

                            The signature (0,2) form is Mathlib's CliffordAlgebraQuaternion.Q (-1) (-1) read on Fin (0 + 2) → ℝ instead of on ℝ × ℝ.

                            Instances For
                              @[simp]

                              realCliffordZeroTwoIsometry reads off the two coordinates.

                              Cliff(0,2) ≅ ℍ, the third base entry of the real periodicity table: two anticommuting generators squaring to -1 are the quaternion units i and j.

                              Instances For
                                @[simp]
                                theorem TauCeti.realCliffordZeroTwoEquivQuaternion_ι (v : Fin (0 + 2) → ℝ) :
                                realCliffordZeroTwoEquivQuaternion ((CliffordAlgebra.ι (realCliffordForm 0 2)) v) = { re := 0, imI := v 0, imJ := v 1, imK := 0 }

                                realCliffordZeroTwoEquivQuaternion sends the generator of the coordinate v to the imaginary quaternion v 0 * i + v 1 * j.

                                @[simp]

                                The (0,2) real Clifford-algebra equivalence identifies Clifford conjugation with quaternion conjugation.

                                Cliff(1,1) ≅ M₂(ℝ) #

                                Cliff(1,1) ≅ M₂(ℝ), the fourth base entry of the real periodicity table and the seed of the periodicity step Cliff(p+1, q+1) ≅ Cliff(p, q) ⊗ M₂(ℝ): Mathlib's CliffordAlgebraQuaternion.equiv onto the split quaternions ℍ[ℝ,1,-1], transported along realCliffordOneOneIsometry and followed by the splitting TauCeti.QuaternionAlgebra.oneEquivMatrix.

                                Instances For
                                  @[simp]

                                  realCliffordOneOneEquivMatrix sends the generator of the coordinate v to !![v 0, v 1; -v 1, -v 0], the combination v 0 • !![1, 0; 0, -1] + v 1 • !![0, 1; -1, 0] of the images of the +1 and -1 generators.