Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Upper-branch frequency ω(k)\omega(k)ω(k) on a qqq-dimensional lattice, and reversal along axis 0

Definition
PinnedAsymmetryQ_omega

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

latticemathematical-physicstrigonometry

Fix q≥1q \ge 1q≥1, real numbers KKK (stiffness), ccc (neighbour coupling), β\betaβ (gyroscopic strength), and a wavevector k=(k0,…,kq−1)∈Rqk = (k_0, \dots, k_{q-1}) \in \mathbb{R}^qk=(k0​,…,kq−1​)∈Rq. The upper-branch frequency is

ω(k)=βcsin⁡k0+(βcsin⁡k0)2+K+2c∑a=0q−1(1−cos⁡ka),\omega(k) = \beta c \sin k_0 + \sqrt{\bigl(\beta c \sin k_0\bigr)^2 + K + 2c \sum_{a=0}^{q-1} (1 - \cos k_a)},ω(k)=βcsink0​+(βcsink0​)2+K+2ca=0∑q−1​(1−coska​)​,

with the gauge term acting along axis 0 and the sum over all axes. The reversal along axis 0 is kˉ=(−k0,k1,…,kq−1)\bar k = (-k_0, k_1, \dots, k_{q-1})kˉ=(−k0​,k1​,…,kq−1​).

Formalization Note The square root is Real.sqrt, which returns 000 on negative inputs; flip0 is Function.update at index 000.

Definition code
import Mathlib

open Real BigOperators

namespace PinnedAsymmetryQ

/-- Upper-branch frequency on a uniform lattice with q axes; the gauge term acts
along axis 0. Wavevector k, stiffness K, neighbour coupling c, strength β. -/
noncomputable def omega (q : ℕ) [NeZero q] (K c β : ℝ) (k : Fin q → ℝ) : ℝ :=
  β * c * sin (k 0) +
    Real.sqrt ((β * c * sin (k 0)) ^ 2 + K + 2 * c * ∑ a : Fin q, (1 - cos (k a)))

/-- Reverse the wavevector along axis 0 only. -/
def flip0 (q : ℕ) [NeZero q] (k : Fin q → ℝ) : Fin q → ℝ :=
  Function.update k 0 (-(k 0))

end PinnedAsymmetryQ
Source
Shape Zero LLC, "Formal Proofs of the C1 Verification Package" (August 2026), §7, Theorem 7.1 (dispersion relation, extended to q axes): https://github.com/ShapeZeroSZ/shape-zero/blob/main/01_source/proofs/ShapeZero_C1_Formal_Proofs.pdf ; corrected in "Errata — C1 Formal Proofs (Sections 3 and 6)", "Related: the pinned asymmetry (Section 7)": https://github.com/ShapeZeroSZ/shape-zero/blob/main/01_source/proofs/ERRATUM_Theorem_6.1.md
Read-back

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

Definition 1: ω\omegaω (omega). The inputs are:

  • a natural number qqq, with the standing assumption q≠0q \neq 0q=0, so q≥1q \ge 1q≥1;
  • three arbitrary real numbers K,c,βK, c, \betaK,c,β, with no sign or other constraints (any of them may be negative or zero);
  • a function k:{0,1,…,q−1}→Rk : \{0, 1, \dots, q-1\} \to \mathbb{R}k:{0,1,…,q−1}→R, written k=(k0,k1,…,kq−1)k = (k_0, k_1, \dots, k_{q-1})k=(k0​,k1​,…,kq−1​), which is an arbitrary real vector of length qqq.

The index 000 is the first element of {0,…,q−1}\{0, \dots, q-1\}{0,…,q−1}. It exists because q≥1q \ge 1q≥1. The value ωq(K,c,β;k)∈R\omega_q(K, c, \beta; k) \in \mathbb{R}ωq​(K,c,β;k)∈R is defined as

ωq(K,c,β;k)  =  βcsin⁡(k0)  +   R ,R  =  (βcsin⁡(k0))2+K+2c∑a=0q−1(1−cos⁡(ka)).\omega_q(K,c,\beta;k) \;=\; \beta c \sin(k_0) \;+\; \sqrt{\,R\,}, \qquad R \;=\; \bigl(\beta c \sin(k_0)\bigr)^2 + K + 2c \sum_{a=0}^{q-1} \bigl(1 - \cos(k_a)\bigr).ωq​(K,c,β;k)=βcsin(k0​)+R​,R=(βcsin(k0​))2+K+2ca=0∑q−1​(1−cos(ka​)).

Here sin⁡\sinsin and cos⁡\coscos are the real sine and cosine, with arguments in radians. The sum runs over all qqq indices, including a=0a = 0a=0. For q=1q = 1q=1 it is just 1−cos⁡(k0)1 - \cos(k_0)1−cos(k0​). Each summand 1−cos⁡(ka)1 - \cos(k_a)1−cos(ka​) lies in [0,2][0, 2][0,2], but RRR can still be negative when K<0K < 0K<0 or c<0c < 0c<0.

The square root is Mathlib's total real square root:

  • if R≥0R \ge 0R≥0, R\sqrt{R}R​ is the usual nonnegative square root;
  • if R<0R < 0R<0, R\sqrt{R}R​ is defined to be 000. No error or complex value is produced.

So ωq(K,c,β;k)=βcsin⁡(k0)+R\omega_q(K,c,\beta;k) = \beta c \sin(k_0) + \sqrt{R}ωq​(K,c,β;k)=βcsin(k0​)+R​ when R≥0R \ge 0R≥0, and ωq(K,c,β;k)=βcsin⁡(k0)\omega_q(K,c,\beta;k) = \beta c \sin(k_0)ωq​(K,c,β;k)=βcsin(k0​) when R<0R < 0R<0. At the boundary R=0R = 0R=0 both formulas give the same value. ω\omegaω is defined for every choice of inputs, and nothing in the definition requires R≥0R \ge 0R≥0.

Definition 2: flip0\mathrm{flip}_0flip0​ (flip0). The inputs are:

  • a natural number qqq with q≠0q \neq 0q=0;
  • a vector k=(k0,…,kq−1)∈Rqk = (k_0, \dots, k_{q-1}) \in \mathbb{R}^qk=(k0​,…,kq−1​)∈Rq, indexed as above.

flip0(k)\mathrm{flip}_0(k)flip0​(k) is the vector in Rq\mathbb{R}^qRq obtained from kkk by replacing only the entry at index 000 with its negative and leaving every other entry unchanged:

flip0(k)a  =  {−k0,a=0,ka,a≠0,i.e.flip0(k)=(−k0,k1,…,kq−1).\mathrm{flip}_0(k)_a \;=\; \begin{cases} -k_0, & a = 0,\\ k_a, & a \neq 0,\end{cases} \qquad\text{i.e.}\quad \mathrm{flip}_0(k) = (-k_0, k_1, \dots, k_{q-1}).flip0​(k)a​={−k0​,ka​,​a=0,a=0,​i.e.flip0​(k)=(−k0​,k1​,…,kq−1​).

For q=1q = 1q=1 this is the single vector (−k0)(-k_0)(−k0​). The negated entry is the original value k0k_0k0​. flip0\mathrm{flip}_0flip0​ does not use ω\omegaω, and ω\omegaω does not use flip0\mathrm{flip}_0flip0​. These two definitions only introduce the functions and assert nothing about them.

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

    Confirmed by the moderator at approval.

  • Endorsed by ShapeZero · Sep 24, 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