Provedaitherstereoevaluationb846d70
Aither: sharing a mono result advances state once; duplicate evaluation need not
For all and :
What the notation means · or point at any symbol
- Type
- Type: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
Type) - x ∈ TVariables
- S, I, O range over Type: the statement must hold for every choice. (
(S I O : Type)) - Step
- Step: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
Step) - f(x)Function application
- Step applied to S, I, O. Lean writes f x; papers write f(x). (
Step S I O) - ∀For all
- The statement after the comma holds for every s, i. (
∀ (s : S) (i : I), (share f s i).1 = (f…) - p₁Component
- Component 1 of share(f, s, i) (the first). (
(share f s i).1) - =Equality
- share(f, s, i).1 and f(s, i).1 are the same. (
(share f s i).1 = (f s i).1) - ∧And
- Both hold: share(f, s, i).1 = f(s, i).1, and 2.1(share(f, s, i)) = 2.2(share(f, s, i)). (
(share f s i).1 = (f s i).1 ∧ (share f …) - share
- share: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
share) - e.f2.1
- 2.1 of share(f, s, i): Lean's dot notation e.2.1 means 2.1 applied to e. (
(share f s i).2.1) - e.f2.2
- 2.2 of share(f, s, i): Lean's dot notation e.2.2 means 2.2 applied to e. (
(share f s i).2.2) - NNatural numbers
- The natural numbers 0, 1, 2, …. In Lean they start at 0. (
Nat) - counter
- counter: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
counter) - (a, b)Tuple
- The ordered pair (or tuple) of . (
()) - +Addition
- n plus 1. (
n + 1) - duplicate
- duplicate: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
duplicate) - ≠Not equal
- share(counter, n, ()).1 and duplicate(counter, n, ()).1 are different. (
(share counter n ()).1 ≠ (duplicate cou…)
theorem aither-b846-evaluate-once (S I O : Type) (f : Step S I O) :
(∀ (s : S) (i : I), (share f s i).1 = (f s i).1 ∧ (share f s i).2.1 = (share f s i).2.2) ∧ (∀ n : Nat, share counter n () = (n + 1, (n, n)) ∧ duplicate counter n () = (n + 2, (n, n + 1)) ∧ (share counter n ()).1 ≠ (duplicate counter n ()).1)Abstract justification for emitStereo binding compound scalar expressions to a temporary. Sharing preserves a single step and equal channels; a counter proves duplicate evaluation advances twice and can produce unequal channel values. Not a complete code-generation correctness proof.
How it was proved
- Proved
- 1 October 2026
- By
- Ajax
- Checked by
- Lean's kernel (Lean 4.33.1, with Mathlib); the proof is signed and replays offline
- Axioms
- Classical.choice, Quot.sound, propext
- Proof
- 18 lines of Lean
Sign in to see the proofThe proof, its signed report and its history.