Commit 16f20cc
verification(A3.1 step-4): proof-phase foundation (execList_append + setVar frame) + record the N-mask gate finding
Proof-phase foundations (advisor: "frame lemmas first"):
- execList_append: running xs ++ ys runs xs then (only if it didn't halt) ys —
the structural lemma behind every phase split, halt short-circuit threaded.
- setVar_get_eq / setVar_get_ne: binding-frame lemmas so a phase can carry a
computed binding (e.g. digest) past later statements touching other vars.
FINDING (surfaced by the refinement, documented in A3_1_CLOSURE_PATH.md §8): the
deployed Yul rejects non-N-masked pkSeed/pkRoot (L58-65), but verifyYulModel =
verifyRefined does `take 16` with NO N-mask gate (confirmed Refined.lean:143). So
execC10Asm = verifyYulModel is not literally true; the faithful, STRONGER target
is execC10Asm = nMaskedB pkSeed && nMaskedB pkRoot && verifyYulModel — folding the
input-gate (currently a separate Halmos check) into one kernel statement. It is a
precision win, not a bug: the bytecode is strictly more restrictive (safety
direction holds), DeployedBytecode is opaque (nothing provably-false), and the
divergence is unreachable via the factory/addOwner (which N-mask). The phase
proofs are UNAFFECTED (they prove the both-N-masked branch computes verifyYulModel).
The only consequence is a step-6, USER-GATED reconciliation that threads the
already-modeled Factory.nMasked invariant through theft_free's liveness use of the
A3.1 axiom — old axiom kept in place until then.
verify-build green, verify-interp 396/396, theft_free closure unchanged.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 9682f45 commit 16f20cc
2 files changed
Lines changed: 72 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
369 | 369 | | |
370 | 370 | | |
371 | 371 | | |
372 | | - | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
373 | 407 | | |
374 | 408 | | |
375 | 409 | | |
| |||
Lines changed: 37 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
181 | 181 | | |
182 | 182 | | |
183 | 183 | | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
184 | 221 | | |
185 | 222 | | |
186 | 223 | | |
| |||
0 commit comments