proof(#242): VCR-WASM-001 i64 transcription batch — 22 ops, 536→585 Qed#814
Merged
Conversation
Extend the WasmCert-Coq refinement bridge (Track B, epic #242) to the i64 integer family, transcribed by hand from the SAME pinned coq9.0-wasm-2.2.0 sources with line-level provenance, mirroring the i32 batch. WasmCertReference.v: i64 reference rules for add/sub/mul/and/or/xor/shl/ shr_u/shr_s/rotl/rotr/eqz/eq/ne/lt_u/lt_s/gt_u/gt_s/le_u/le_s/ge_u/ge_s. Arithmetic/bitwise/shift/compare cite the generic Make functor lines shared with i32 (Int64 at numerics.v:1038-1039, wordsize 64); the two rotates newly cite CompCert 3.16 Integers.v:217-222 (rol/ror). WasmCertBridge.v: a real-Qed op-level refinement lemma per op (I64.op = wasmcert_i64_op), plus an executor-level lemma routing through the real exec_wasm_instr for the 16 WIRED ops (3 shifts + 2 rotates + 11 comparisons incl. eqz). The rotate proofs discharge a genuine n=0 boundary gap (synth re-normalizes the [64-n] sub-shift count mod 64 while the reference's is raw; reconciled via lor-idempotence at the boundary). NAMED RESIDUAL (not forced, not admitted): i64 add/sub/mul/and/or/xor have op-level refinement ONLY — exec_wasm_instr returns None for those constructors (unwired in the model, unlike their i32 twins). Wiring them is a semantics-model change, out of scope for a transcription batch. STILL A TRANSCRIPTION: the real external WasmCert dep stays blocked on the unfree CompCert 3.16 the current nixpkgs pin propagates; the "trusted transcription" caveat is unchanged. Proofs verified GREEN via `bazel test //coq:verify_proofs` (observed, hermetic Nix Rocq 9.0.1 toolchain). Rocq Qed 536→585 (WasmCertBridge.v 49→98); docs (CLAUDE.md, coq/STATUS.md, README.md, roadmap) + claims.yaml bumped together, status.json/FEATURE_MATRIX.md regenerated, claim_check green (25/25). New rivet SWVER-020 (verifies VCR-WASM-001). Frozen: no Rust/byte changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L
This was referenced Jul 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
VCR-WASM-001 (Track B, epic #242) — i64 integer family transcription batch
Extends the WasmCert-Coq refinement bridge from the i32 fragment (phases 1+2) to
the i64 integer family, transcribed by hand from the same pinned
coq9.0-wasm-2.2.0 sources with line-level provenance, mirroring the i32 batch.
Ops added (22)
add sub mul and or xor shl shr_u shr_s rotl rotr eqz eq ne lt_u lt_s gt_u gt_s le_u le_s ge_u ge_sI64.op = wasmcert_i64_op) — a real Qed for all 22.exec_wasm_instr) — forthe 16 WIRED ops: 3 shifts + 2 rotates + 11 comparisons (incl. eqz).
Provenance
Makefunctor citationsshared with i32, read at wordsize 64 (
Int64atnumerics.v:1038-1039).Integers.v:217-222(rol/ror).The rotate proofs discharge a genuine
n=0boundary gap (synth re-normalizesthe
[64-n]sub-shift count mod 64 while the reference's is raw; reconciledvia
lor-idempotence at the boundary) — noadmit, no axiom.Named residual (honest, not forced)
i64
add/sub/mul/and/or/xorhave op-level refinement ONLY — synth'sexec_wasm_instrreturnsNonefor those constructors (unwired in the model,unlike their i32 twins). Wiring them is a semantics-model change, out of scope
for a transcription batch.
Still a transcription
The real external WasmCert dep stays blocked on the unfree CompCert 3.16 the
current nixpkgs pin (88d3861a) propagates via wasmcert 2.2.0; the "trusted
transcription" caveat is unchanged. Retires mechanically when a pin ships
wasmcert ≥ 2.2.1.
Verification
bazel test //coq:verify_proofs— observed on thehermetic Nix Rocq 9.0.1 toolchain (
//coq:rocq_proofs PASSED).WasmCertBridge.v49 → 98). Docs (CLAUDE.md,coq/STATUS.md, README.md, roadmap) +
claims.yamlbumped together;status.json/FEATURE_MATRIX.mdregenerated;python3 scripts/claim_check.py claims.yaml→ 25/25 claims hold.SWVER-020(verifies: VCR-WASM-001) closes the sw-verificationgap;
rivet validateerror count unchanged (52, all pre-existing cross-repo).🤖 Generated with Claude Code
https://claude.ai/code/session_01YJK5LZZEkV5smCY1jKn18L