Provedalphabaguettebaguette-zinvariant
Skipping non-finite or out-of-range gradients preserves the state invariant
For all , , , and (given ):
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
- St, Gr range over Type: the statement must hold for every choice. (
(St Gr : Type)) - DecidablePred
- DecidablePred: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
DecidablePred) - f(x)Function application
- DecidablePred applied to ok. Lean writes f x; papers write f(x). (
DecidablePred ok) - ∀For all
- The statement after the comma holds for every s, g. (
∀ s g, I s → ok g → I (update s g)) - ⟹Implies
- If Gr, then St. (Between types, A → B is the type of functions from A to B.) (
Gr → St) - Prop
- Prop: a definition from the library, not special notation. Its name is its meaning; open it in Lean to see how it is defined. (
Prop) - { a if c; b otherwiseCases (if … then … else)
- update(s, g) when ok(g), and s otherwise. (
if ok g then update s g else s)
theorem bz-skip-policy-preserves-invariant {St Gr : Type} (update : St → Gr → St) (ok : Gr → Prop) [DecidablePred ok] (I : St → Prop) (hupd : ∀ s g, I s → ok g → I (update s g)) :
∀ s g, I s → I (if ok g then update s g else s)Baguette refuses nonfinite updates before mutation. Formally: if updates preserve I whenever the gradient check passes, then 'update if ok else keep' always preserves I. Part of the plan 'Baguette-Z: closed-loop certified integer-state training'.
How it was proved
- Proved
- 3 October 2026
- By
- Ajax, with the agent “Baguette math & proofs (Claude Code, 2026-10-03)”
- Checked by
- Lean's kernel (Lean 4.33.1, with Mathlib); the proof is signed and replays offline
- Axioms
- None
- Proof
- 15 lines of Lean
Sign in to see the proofThe proof, its signed report and its history.