proofs
Provedalphamulti-device-learningpartitioning

Per-coordinate ownership reproduces the replicated update

For all α∈Type⁡\htmlData{mx=1}{\alpha \in \htmlData{mx=0}{\operatorname{Type}}}, cls:N→Option⁡ N\htmlData{mx=5}{\mathit{cls} : \htmlData{mx=0}{\mathbb{N}} \mathrel{\htmlData{mx=4}{\to}} \htmlData{mx=3}{\htmlData{mx=1}{\operatorname{Option}}\,\htmlData{mx=2}{\mathbb{N}}}}, owners∈N\htmlData{mx=1}{\mathit{owners} \in \htmlData{mx=0}{\mathbb{N}}}, program∈List⁡ Assignment⁡ α\htmlData{mx=5}{\mathit{program} \in \htmlData{mx=4}{\htmlData{mx=0}{\operatorname{List}}\,\htmlData{mx=3}{\htmlData{mx=1}{\operatorname{Assignment}}\,\htmlData{mx=2}{\alpha}}}}, sep∈SlotSeparable⁡ cls program\htmlData{mx=4}{\mathit{sep} \in \htmlData{mx=3}{\htmlData{mx=0}{\operatorname{SlotSeparable}}\,\htmlData{mx=1}{\mathit{cls}}\,\htmlData{mx=2}{\mathit{program}}}}, s:N→α\htmlData{mx=3}{s : \htmlData{mx=0}{\mathbb{N}} \mathrel{\htmlData{mx=2}{\to}} \htmlData{mx=1}{\alpha}}, start:N→N→α\htmlData{mx=5}{\mathit{start} : \htmlData{mx=0}{\mathbb{N}} \mathrel{\htmlData{mx=4}{\to}} \htmlData{mx=1}{\mathbb{N}} \mathrel{\htmlData{mx=3}{\to}} \htmlData{mx=2}{\alpha}} and j∈N\htmlData{mx=1}{j \in \htmlData{mx=0}{\mathbb{N}}}, if ∀r,j, runsSlot⁡(cls,i↦coordinateOwner⁡(owners,i)==(r),j)=true⁡  ⟹  start(r,j)=s(j)\htmlData{mx=23}{\forall r, j,\ \htmlData{mx=11}{\htmlData{mx=0}{\operatorname{runsSlot}}(\htmlData{mx=1}{\mathit{cls}}, \htmlData{mx=9}{i \mapsto \htmlData{mx=5}{\htmlData{mx=2}{\operatorname{coordinateOwner}}(\htmlData{mx=3}{\mathit{owners}}, \htmlData{mx=4}{i})} \mathrel{\htmlData{mx=8}{=}} \htmlData{mx=7}{\mathtt{=}(\htmlData{mx=6}{r})}}, \htmlData{mx=10}{j})} \mathrel{\htmlData{mx=13}{=}} \htmlData{mx=12}{\operatorname{true}} \mathrel{\htmlData{mx=22}{\implies}} \htmlData{mx=17}{\htmlData{mx=14}{\mathit{start}}(\htmlData{mx=15}{r}, \htmlData{mx=16}{j})} \mathrel{\htmlData{mx=21}{=}} \htmlData{mx=20}{\htmlData{mx=18}{s}(\htmlData{mx=19}{j})}}, then

slotRun⁡(start(match⁡(cls,j,with⁡,∣none⁡∣)))(=> 0 ∣ some i => coordinateOwner owners i)) (ownedProgram cls (fun i => coordinateOwner owners i == (match cls j with ∣ none => 0 ∣ some i => coordinateOwner owners i)) program) j = slotRun s program j)\htmlData{mx=11}{\htmlData{mx=10}{\htmlData{mx=0}{\operatorname{slotRun}}(\htmlData{mx=9}{\htmlData{mx=1}{\mathit{start}}(\htmlData{mx=8}{\htmlData{mx=2}{\operatorname{match}}(\htmlData{mx=3}{\mathit{cls}}, \htmlData{mx=4}{j}, \htmlData{mx=5}{\operatorname{with}}, \htmlData{mx=7}{\left\lvert \htmlData{mx=6}{\operatorname{none}} \right\rvert})})})}(\mathtt{=>\ 0\ |\ some\ i\ =>\ coordinateOwner\ owners\ i))\ (ownedProgram\ cls\ (fun\ i\ =>\ coordinateOwner\ owners\ i\ ==\ (match\ cls\ j\ with\ |\ none\ =>\ 0\ |\ some\ i\ =>\ coordinateOwner\ owners\ i))\ program)\ j\ =\ slotRun\ s\ program\ j})}
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)
NNatural numbers
The natural numbers 0, 1, 2, …. In Lean they start at 0. (Nat)
⟹Implies
If Nat, then Option(Nat). (Between types, A → B is the type of functions from A to B.) (Nat → Option Nat)
List
List: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (List)
SlotSeparable
SlotSeparable: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (SlotSeparable)
∀For all
The statement after the comma holds for every r, j. (∀ r j, runsSlot cls (fun i => coordinat…)
slotRun
slotRun: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (slotRun)
Option
Option: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (Option)
f(x)Function application
Option applied to Nat. Lean writes f x; papers write f(x). (Option Nat)
Assignment
Assignment: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (Assignment)
runsSlot
runsSlot: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (runsSlot)
match
match: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (match)
x ↦ f(x)Function (λ-abstraction)
The function sending i to coordinateOwner(owners, i) = =(r). Lean writes fun x => …; papers write x ↦ …. (fun i => coordinateOwner owners i == r)
with
with: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (with)
coordinateOwner
coordinateOwner: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (coordinateOwner)
=Equality
coordinateOwner(owners, i) and =(r) are the same. (coordinateOwner owners i == r)
|x|Absolute value
The size of none without its sign. (| none)
none
none: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (none)
true
true: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (true)

With coordinate i owned by owner i mod owners, every slot read from its owner (a shared slot from owner 0) after each owner runs its part of a separable program equals the replicated program's result: optimizer-state and parameter partitioning change no value. Model: definition alpha-multi-device-learning (revision 01a1255c-84f1-7e7f-a994-fc8c2d274bee).

How it was proved

Proved
10 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
73 lines of Lean
Sign in to see the proofThe proof, its signed report and its history.

More proved statements