Documentation

Mathlib.LinearAlgebra.CliffordAlgebra.SpinGroup

The Pin group and the Spin group #

In this file we define lipschitzGroup, pinGroup and spinGroup and show they form a group.

Main definitions #

Implementation Notes #

The definition of the Lipschitz group $\{ x \in \mathop{\mathcal{C}\ell} | x \text{ is invertible and } x v x^{-1} ∈ V \}$ is given by:

But they presumably form a group only in finite dimensions. So we define lipschitzGroup with closure of all the invertible elements in the form of ι Q m, and we show this definition is at least as large as the other definition (See lipschitzGroup.conjAct_smul_range_ι and lipschitzGroup.involute_act_ι_mem_range_ι). The reverse statement presumably is true only in finite dimensions.

Here are some discussions about the latent ambiguity of definition : https://mathoverflow.net/q/427881/172242 and https://mathoverflow.net/q/251288/172242

TODO #

Try to show the reverse statement is true in finite dimensions.

def lipschitzGroup {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :

lipschitzGroup is the subgroup closure of all the invertible elements in the form of ι Q m where ι is the canonical linear map M →ₗ[R] CliffordAlgebra Q.

Equations
    Instances For

      The conjugation action by elements of the Lipschitz group keeps vectors as vectors.

      If x is in lipschitzGroup Q, then (ι Q).range is closed under twisted conjugation. The reverse statement presumably is true only in finite dimensions.

      def pinGroup {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :

      pinGroup Q is defined as the infimum of lipschitzGroup Q and unitary (CliffordAlgebra Q). See mem_iff.

      Equations
        Instances For
          theorem pinGroup.mem_unitary {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x pinGroup Q) :

          The conjugation action by elements of the spin group keeps vectors as vectors.

          This is another version of conjAct_smul_ι_mem_range_ι which uses involute.

          If x is in pinGroup Q, then (ι Q).range is closed under twisted conjugation. The reverse statement presumably being true only in finite dimensions.

          @[simp]
          theorem pinGroup.star_mul_self_of_mem {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x pinGroup Q) :
          star x * x = 1
          @[simp]
          theorem pinGroup.mul_star_self_of_mem {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x pinGroup Q) :
          x * star x = 1
          theorem pinGroup.star_mem {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x pinGroup Q) :

          See star_mem_iff for both directions.

          @[simp]
          theorem pinGroup.star_mem_iff {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} :

          An element is in pinGroup Q if and only if star x is in pinGroup Q. See star_mem for only one direction.

          @[simp]
          theorem pinGroup.coe_star {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : (pinGroup Q)} :
          (star x) = star x
          theorem pinGroup.coe_star_mul_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
          star x * x = 1
          theorem pinGroup.coe_mul_star_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
          x * (star x) = 1
          @[simp]
          theorem pinGroup.star_mul_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
          star x * x = 1
          @[simp]
          theorem pinGroup.mul_star_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
          x * star x = 1

          pinGroup Q forms a group where the inverse is star.

          Equations
            theorem pinGroup.star_eq_inv {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
            def pinGroup.toUnits {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} :

            The elements in pinGroup Q embed into (CliffordAlgebra Q)ˣ.

            Equations
              Instances For
                @[simp]
                theorem pinGroup.val_toUnits_apply {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
                (toUnits x) = x
                @[simp]
                theorem pinGroup.val_inv_toUnits_apply {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (pinGroup Q)) :
                (toUnits x)⁻¹ = x⁻¹
                def spinGroup {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) :

                spinGroup Q is defined as the infimum of pinGroup Q and CliffordAlgebra.even Q. See mem_iff.

                Equations
                  Instances For
                    theorem spinGroup.mem_iff {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} :

                    An element is in spinGroup Q if and only if it is in pinGroup Q and even Q.

                    theorem spinGroup.mem_pin {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x spinGroup Q) :
                    theorem spinGroup.involute_eq {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x spinGroup Q) :

                    If x is in spinGroup Q, then involute x is equal to x.

                    The conjugation action by elements of the spin group keeps vectors as vectors.

                    @[simp]
                    theorem spinGroup.star_mul_self_of_mem {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x spinGroup Q) :
                    star x * x = 1
                    @[simp]
                    theorem spinGroup.mul_star_self_of_mem {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x spinGroup Q) :
                    x * star x = 1
                    theorem spinGroup.star_mem {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} (hx : x spinGroup Q) :

                    See star_mem_iff for both directions.

                    @[simp]
                    theorem spinGroup.star_mem_iff {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : CliffordAlgebra Q} :

                    An element is in spinGroup Q if and only if star x is in spinGroup Q. See star_mem for only one direction.

                    @[simp]
                    theorem spinGroup.coe_star {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} {x : (spinGroup Q)} :
                    (star x) = star x
                    theorem spinGroup.coe_star_mul_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                    star x * x = 1
                    theorem spinGroup.coe_mul_star_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                    x * (star x) = 1
                    @[simp]
                    theorem spinGroup.star_mul_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                    star x * x = 1
                    @[simp]
                    theorem spinGroup.mul_star_self {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                    x * star x = 1

                    spinGroup Q forms a group where the inverse is star.

                    Equations
                      theorem spinGroup.star_eq_inv {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                      def spinGroup.toUnits {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} :

                      The elements in spinGroup Q embed into (CliffordAlgebra Q)ˣ.

                      Equations
                        Instances For
                          @[simp]
                          theorem spinGroup.val_inv_toUnits_apply {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                          (toUnits x)⁻¹ = x⁻¹
                          @[simp]
                          theorem spinGroup.val_toUnits_apply {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} (x : (spinGroup Q)) :
                          (toUnits x) = x