Provedaitherhot-reloadmigrationb846d70
Aither: relocation and unrelated regions do not interfere with migration
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) - ⟹Implies
- If A, then Bool. (Between types, A → B is the type of functions from A to B.) (
A → Bool) - ∀For all
- The statement after the comma holds for every old, fresh, delta. (
∀ (old : List (Region A)) (fresh : Regi…) - Bool
- Bool: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
Bool) - 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) - Region
- Region: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
Region) - NNatural numbers
- The natural numbers 0, 1, 2, …. In Lean they start at 0. (
Nat) - migrate
- migrate: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
migrate) - =Equality
- migrate(healthy, map(relocate(delta)), relocate(delta, fre… and migrate(healthy, old, fresh) are the same. (
migrate healthy (old.map (relocate delt…) - e.fmap
- map of old: Lean's dot notation e.map means map applied to e. (
old.map) - relocate
- relocate: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
relocate) - f(x)Function application
- relocate applied to delta. Lean writes f x; papers write f(x). (
relocate delta) - ∧And
- Both hold: ∀ before, old, fresh, (∀ r, signature(r) ≠ signature(fresh…, and ∀ old, fresh, (∀ r, signature(r) ≠ signature(fresh)) → mig…. (
(∀ (before old : List (Region A)) (fres…) - signature
- signature: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
signature) - ≠Not equal
- signature(r) and signature(fresh) are different. (
signature r ≠ signature fresh) - +Addition
- before plus +(old). (
before ++ old) - e.fpayload
- payload of fresh: Lean's dot notation e.payload means payload applied to e. (
fresh.payload)
theorem aither-b846-migration-noninterference (A : Type) (healthy : A → Bool) :
(∀ (old : List (Region A)) (fresh : Region A) (delta : Nat), migrate healthy (old.map (relocate delta)) (relocate delta fresh) = migrate healthy old fresh) ∧ (∀ (before old : List (Region A)) (fresh : Region A), (∀ r ∈ before, signature r ≠ signature fresh) → migrate healthy (before ++ old) fresh = migrate healthy old fresh) ∧ (∀ (old : List (Region A)) (fresh : Region A), (∀ r ∈ old, signature r ≠ signature fresh) → migrate healthy old fresh = fresh.payload)Payload model of signature-based migration. Relocating addresses leaves selection unchanged; adding a nonmatching prefix does not interfere; a layout with no matching signatures retains prepared payload. First-match semantics and health policy are unchanged. Not a pointer validity theorem.
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
- propext
- Proof
- 49 lines of Lean
Sign in to see the proofThe proof, its signed report and its history.