-
-
Notifications
You must be signed in to change notification settings - Fork 0
Proof: WebAssembly backend semantic preservation (source ⇓ v ⟹ wasm ⇓ encode(v)) #520
Copy link
Copy link
Open
Labels
majorMajor issue — significant scope, broader impact than a feature/bugMajor issue — significant scope, broader impact than a feature/bugpriority:p3Low - nice to haveLow - nice to havescope:repoConfined to this repositoryConfined to this repositorystatus:readyFully specified and ready to be picked upFully specified and ready to be picked uptech-debtKnown shortcut, drift, or hygiene owed - includes cleanupKnown shortcut, drift, or hygiene owed - includes cleanup
Description
Activity
Metadata
Metadata
Assignees
Labels
majorMajor issue — significant scope, broader impact than a feature/bugMajor issue — significant scope, broader impact than a feature/bugpriority:p3Low - nice to haveLow - nice to havescope:repoConfined to this repositoryConfined to this repositorystatus:readyFully specified and ready to be picked upFully specified and ready to be picked uptech-debtKnown shortcut, drift, or hygiene owed - includes cleanupKnown shortcut, drift, or hygiene owed - includes cleanup
Parent: #513
Statement
Prove semantic preservation for the WebAssembly backend in
lib/codegen.ml:Mechanisation
Why3 (existing WASM proof literature uses Why3) or Coq (WasmCert-Coq has primitives we can pull from). Target:
formal/Codegen/Wasm/{Lowering.v, Preservation.v}.Subgoals (do these first, in order)
block/br_ifdiscriminator sequence agrees with sourcematcharm semantics (codegen: integer/lowers to floating-point division on the JS-family backends #478 issue ci: Bump actions/setup-node from 4.0.2 to 6.3.0 #1)./lowers to floating-point division on the JS-family backends #478 issue ci: Bump dtolnay/rust-toolchain from f7ccc83f9ed1e5b9c81d8a67d7ad1a747e22a561 to efa25f7f19611383d5b0ccf2d1c8914531636bf9 #2).call_indirect's type signature matches the source-level function type at the call site.mutcells do not violate the borrow-graph soundness lemma (proven in Proof: borrow-graph soundness (no use-after-move + no conflict + BorrowOutlivesOwner) #515).Reference
Size
XL. Estimate: 6+ weeks. The largest single proof on this list. Recommend splitting into the 4 subgoals above and shipping them as separate PRs.
Status
NOT STARTED.
🤖 Generated with Claude Code