Documentation

LeanPool.CompositionAlgebras.Composition.CayleyDickson

The Cayley–Dickson double as an external type former #

Composition/Doubling.lean doubles inside a composition algebra C: given a composition subalgebra A ≤ C and a unit u ⊥ A, the submodule A ⊕ A u is again a composition subalgebra. That is all Hurwitz's dimension bound needs, and it is cheap because the composition law of C is already available.

The classification needs the other half: a functor DCD D producing a new algebra, so that the chain of subalgebras can be identified with concrete carriers rather than merely counted. This file builds it.

Main definitions #

Main results #

★ This is the same mechanism as IsCompSubalgebra.forced_assoc, read in the other direction: there, multiplicativity of the norm on A ⊕ A u is free (it is inherited from C) and forces A associative; here, D associative is a hypothesis and buys multiplicativity of the norm on the new type.

Note on the conjugation #

CD is built over CompositionAlgebra D, whose conjugation cstar is derived from the form rather than supplied as a Star structure. An upstreamed version would take [Star D] and a StarRing hypothesis; here the derived conjugation keeps the four concrete instantiations free of bridging lemmas.

Scope #

Substrate for the classification. The headline declaration is the instance CD.instCompositionAlgebra; the classification itself is Composition/Classification.lean.

The Cayley–Dickson double of D: the module D × D with the product (a,b)(c,d) = (a c - d* b, d a + b c*) and unit (1,0).

Kept as a type synonym rather than a structure so that the additive and -module structure transfer from Prod verbatim; the product and the unit are the only new data.

Equations
Instances For
    @[instance_reducible]
    Equations
    • One or more equations did not get rendered due to their size.
    @[instance_reducible]
    Equations
    def CompositionAlgebra.CD.mk {D : Type u} (a b : D) :
    CD D

    Assemble an element of the double from its two components.

    Equations
    Instances For
      def CompositionAlgebra.CD.fst {D : Type u} (x : CD D) :
      D

      The first component of an element of the double.

      Equations
      Instances For
        def CompositionAlgebra.CD.snd {D : Type u} (x : CD D) :
        D

        The second component of an element of the double.

        Equations
        Instances For
          @[simp]
          theorem CompositionAlgebra.CD.fst_mk {D : Type u} (a b : D) :
          (mk a b).fst = a
          @[simp]
          theorem CompositionAlgebra.CD.snd_mk {D : Type u} (a b : D) :
          (mk a b).snd = b
          theorem CompositionAlgebra.CD.ext {D : Type u} {x y : CD D} (h1 : x.fst = y.fst) (h2 : x.snd = y.snd) :
          x = y
          theorem CompositionAlgebra.CD.ext_iff {D : Type u} {x y : CD D} :
          x = y x.fst = y.fst x.snd = y.snd
          @[simp]
          theorem CompositionAlgebra.CD.fst_add {D : Type u} [NonAssocRing D] (x y : CD D) :
          (x + y).fst = x.fst + y.fst
          @[simp]
          theorem CompositionAlgebra.CD.snd_add {D : Type u} [NonAssocRing D] (x y : CD D) :
          (x + y).snd = x.snd + y.snd
          @[simp]
          theorem CompositionAlgebra.CD.fst_neg {D : Type u} [NonAssocRing D] (x : CD D) :
          (-x).fst = -x.fst
          @[simp]
          theorem CompositionAlgebra.CD.snd_neg {D : Type u} [NonAssocRing D] (x : CD D) :
          (-x).snd = -x.snd
          @[simp]
          theorem CompositionAlgebra.CD.fst_sub {D : Type u} [NonAssocRing D] (x y : CD D) :
          (x - y).fst = x.fst - y.fst
          @[simp]
          theorem CompositionAlgebra.CD.snd_sub {D : Type u} [NonAssocRing D] (x y : CD D) :
          (x - y).snd = x.snd - y.snd
          @[simp]
          theorem CompositionAlgebra.CD.fst_smul {D : Type u} [NonAssocRing D] [Module D] (r : ) (x : CD D) :
          (r x).fst = r x.fst
          @[simp]
          theorem CompositionAlgebra.CD.snd_smul {D : Type u} [NonAssocRing D] [Module D] (r : ) (x : CD D) :
          (r x).snd = r x.snd
          @[instance_reducible]
          Equations
          @[simp]
          @[simp]
          @[instance_reducible]
          Equations
          • One or more equations did not get rendered due to their size.
          @[simp]
          @[simp]
          theorem CompositionAlgebra.CD.mul_def {D : Type u} [NonAssocRing D] [Module D] [IsScalarTower D D] [SMulCommClass D D] [CompositionAlgebra D] (a b c d : D) :
          mk a b * mk c d = mk (a * c - cstar d * b) (d * a + b * cstar c)

          The ring structure #

          @[instance_reducible]
          Equations
          • One or more equations did not get rendered due to their size.

          The form #

          The form of the double: ⟪(a,b), (c,d)⟫ = ⟪a,c⟫ + ⟪b,d⟫.

          Equations
          Instances For

            The composition law #

            Associativity of D enters exactly here, and exactly once: in cross.

            theorem CompositionAlgebra.CD.cross {D : Type u} [NonAssocRing D] [Module D] [IsScalarTower D D] [SMulCommClass D D] [CompositionAlgebra D] (hassoc : ∀ (p q r : D), p * q * r = p * (q * r)) (a b c d : D) :
            ip (d * a) (b * cstar c) = ip (a * c) (cstar d * b)

            The cross term of the composition law. This is the only step of compositionAlgebraOfAssoc that uses associativity of D, and it is the same identity that IsCompSubalgebra.forced_assoc reads in the opposite direction.

            @[instance_reducible]

            The Cayley–Dickson double of an associative composition algebra is a composition algebra. Stated as a def taking associativity as an explicit hypothesis; the instance for [Ring D] is instCompositionAlgebra below.

            Equations
            Instances For

              The double of an associative composition algebra #

              @[instance_reducible]

              CD D is a Euclidean composition algebra whenever D is an associative one.

              Equations
              @[simp]
              @[simp]
              theorem CompositionAlgebra.CD.ip_eq {D : Type u} [Ring D] [Module D] [IsScalarTower D D] [SMulCommClass D D] [CompositionAlgebra D] [Nontrivial D] (x y : CD D) :
              ip x y = ip x.fst y.fst + ip x.snd y.snd

              The conjugation of the double negates the second component.