Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

The octonion norm is multiplicative (eight-square identity)

Proved
OctonionD8.norm_mul

by ShapeZero · Sep 27, 2026 · Mathlib 0df444a (Lean v4.33.1)

characteristic-polynomialfano-planelinear-algebraoctonions

For all p,q∈R8p, q \in \mathbb{R}^8p,q∈R8, the product defined from the Fano plane satisfies

∑k=07(pq)k2=(∑i=07pi2)(∑j=07qj2),\sum_{k=0}^{7} (pq)_k^2 = \Bigl(\sum_{i=0}^{7} p_i^2\Bigr)\Bigl(\sum_{j=0}^{7} q_j^2\Bigr),k=0∑7​(pq)k2​=(i=0∑7​pi2​)(j=0∑7​qj2​),

that is, ∣pq∣=∣p∣ ∣q∣|pq| = |p|\,|q|∣pq∣=∣p∣∣q∣. This is the eight-square identity: the table defines a normed (composition) algebra — the octonions.

Preamble
import Mathlib
import Definitions.Def_OctonionD8_flow
Formal statement
namespace OctonionD8

open Polynomial

theorem norm_mul (p q : Fin 8 → ℝ) :
    ∑ k, (omul p q k) ^ 2 = (∑ i, p i ^ 2) * (∑ j, q j ^ 2) := by
  sorry

end OctonionD8
Source
Motivated by the two-generator D8 flow in the Shape Zero derivation (Shape Zero LLC): https://github.com/ShapeZeroSZ/shape-zero/blob/main/00_START_HERE/MODEL_SPEC.md §1b and https://github.com/ShapeZeroSZ/shape-zero/blob/main/02_synthesis/D8_SYNTHESIS.md ; Fano plane: Prove2Me definition RolesForceSeven.fano (mission "The role postulates force exactly seven points") ; public references: Wikipedia, "Octonion": https://en.wikipedia.org/wiki/Octonion ; Wikipedia, "Fano plane": https://en.wikipedia.org/wiki/Fano_plane
Read-back

What the Lean code literally says, in plain math · claude-opus-5-5

Theorem OctonionD8.norm_mul. For all real vectors p,q∈R8p, q \in \mathbb{R}^8p,q∈R8 (coordinates indexed by {0,1,…,7}\{0,1,\dots,7\}{0,1,…,7}, written p0,…,p7p_0,\dots,p_7p0​,…,p7​ and q0,…,q7q_0,\dots,q_7q0​,…,q7​), with no further hypotheses, the statement asserts

∑k=07((p∗q)k)2  =  (∑i=07pi2)(∑j=07qj2),\sum_{k=0}^{7} \big((p \ast q)_k\big)^2 \;=\; \Big(\sum_{i=0}^{7} p_i^2\Big)\Big(\sum_{j=0}^{7} q_j^2\Big),k=0∑7​((p∗q)k​)2=(i=0∑7​pi2​)(j=0∑7​qj2​),

i.e. the squared Euclidean norm of the product p∗qp \ast qp∗q equals the product of the squared Euclidean norms of ppp and qqq. The product ∗\ast∗ is the bilinear map defined in the imported file (not a Mathlib notion), unfolded below.

The product. For p,q∈R8p, q \in \mathbb{R}^8p,q∈R8 and each k∈{0,…,7}k \in \{0,\dots,7\}k∈{0,…,7},

(p∗q)k  =  ∑i=07∑j=07pi qj T(i,j,k),(p \ast q)_k \;=\; \sum_{i=0}^{7}\sum_{j=0}^{7} p_i\, q_j\, T(i,j,k),(p∗q)k​=i=0∑7​j=0∑7​pi​qj​T(i,j,k),

where T(i,j,k)∈{−1,0,1}T(i,j,k) \in \{-1, 0, 1\}T(i,j,k)∈{−1,0,1} is an integer structure-constant table (cast to R\mathbb{R}R), read as "the coefficient of eke_kek​ in eieje_i e_jei​ej​" for the standard basis e0,…,e7e_0,\dots,e_7e0​,…,e7​. TTT is defined by the following cases, checked in this order:

  1. If i=0i = 0i=0: T(0,j,k)=1T(0,j,k) = 1T(0,j,k)=1 if j=kj = kj=k, else 000 (so e0e_0e0​ is a left identity).

  2. Else if j=0j = 0j=0: T(i,0,k)=1T(i,0,k) = 1T(i,0,k)=1 if i=ki = ki=k, else 000 (so e0e_0e0​ is a right identity).

  3. Else if i=ji = ji=j (both nonzero): T(i,i,k)=−1T(i,i,k) = -1T(i,i,k)=−1 if k=0k = 0k=0, else 000 (so ei2=−e0e_i^2 = -e_0ei2​=−e0​ for i=1,…,7i = 1,\dots,7i=1,…,7).

  4. Else if k=0k = 0k=0 (with i≠ji \ne ji=j, both nonzero): T(i,j,0)=0T(i,j,0) = 0T(i,j,0)=0.

  5. Otherwise (i,j,ki, j, ki,j,k all nonzero, i≠ji \ne ji=j): the value is determined by a Fano-plane rule. Each nonzero index m∈{1,…,7}m \in \{1,\dots,7\}m∈{1,…,7} is mapped to the point φ(m)=(m+6) mod 7=m−1∈Z/7\varphi(m) = (m + 6) \bmod 7 = m - 1 \in \mathbb{Z}/7φ(m)=(m+6)mod7=m−1∈Z/7. The seven "lines" are the 3-element subsets Ll={l, l+1, l+3}⊆Z/7L_l = \{l,\ l+1,\ l+3\} \subseteq \mathbb{Z}/7Ll​={l, l+1, l+3}⊆Z/7 for l∈Z/7l \in \mathbb{Z}/7l∈Z/7 (arithmetic mod 777). Then

    • T(i,j,k)=+1T(i,j,k) = +1T(i,j,k)=+1 if there is an l∈Z/7l \in \mathbb{Z}/7l∈Z/7 with Ll={φ(i),φ(j),φ(k)}L_l = \{\varphi(i), \varphi(j), \varphi(k)\}Ll​={φ(i),φ(j),φ(k)} (equality of sets) and the ordered pair (φ(i),φ(j))(\varphi(i), \varphi(j))(φ(i),φ(j)) is one of (l,l+1)(l, l+1)(l,l+1), (l+1,l+3)(l+1, l+3)(l+1,l+3), (l+3,l)(l+3, l)(l+3,l);
    • otherwise T(i,j,k)=−1T(i,j,k) = -1T(i,j,k)=−1 if there is an lll with Ll={φ(i),φ(j),φ(k)}L_l = \{\varphi(i), \varphi(j), \varphi(k)\}Ll​={φ(i),φ(j),φ(k)};
    • otherwise T(i,j,k)=0T(i,j,k) = 0T(i,j,k)=0.

    Since each LlL_lLl​ has exactly three distinct elements, the set equality forces i,j,ki, j, ki,j,k to be pairwise distinct; in particular T(i,j,i)=T(i,j,j)=0T(i,j,i) = T(i,j,j) = 0T(i,j,i)=T(i,j,j)=0 in this case. Translating back to indices 1,…,71,\dots,71,…,7 (point lll corresponds to index l+1l+1l+1), the seven lines are the index triples

{1,2,4}, {2,3,5}, {3,4,6}, {4,5,7}, {5,6,1}, {6,7,2}, {7,1,3},\{1,2,4\},\ \{2,3,5\},\ \{3,4,6\},\ \{4,5,7\},\ \{5,6,1\},\ \{6,7,2\},\ \{7,1,3\},{1,2,4}, {2,3,5}, {3,4,6}, {4,5,7}, {5,6,1}, {6,7,2}, {7,1,3},

and for each listed triple (a,b,c)(a,b,c)(a,b,c) the table encodes eaeb=ece_a e_b = e_cea​eb​=ec​, ebec=eae_b e_c = e_aeb​ec​=ea​, ecea=ebe_c e_a = e_bec​ea​=eb​ (value +1+1+1), while the reversed orders give ebea=−ece_b e_a = -e_ceb​ea​=−ec​, etc. (value −1-1−1). Pairs of distinct nonzero indices always lie in exactly one such triple, but the statement does not rely on or assert this; it is simply what the table evaluates to.

Scope and edge cases. The identity is claimed for every p,qp, qp,q, including p=0p = 0p=0 or q=0q = 0q=0 (both sides then 000) and basis vectors. There are no hypotheses, so the statement is not vacuous. The imported files also define auxiliary objects (matrices of left/right multiplication by fixed vectors, a "flow" matrix built from them, the Fano plane packaged as a Steiner triple system on 7 points, and a "role colouring" predicate); none of these appear in this statement. The only imported notions used are the product ∗\ast∗, its table TTT, the index-to-point map φ\varphiφ, and the lines LlL_lLl​ described above.

Human review
  • Endorsed by Shuze Chen · Sep 27, 2026

    Confirmed by the moderator at approval.

  • Endorsed by ShapeZero · Sep 27, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me