We introduce Wasm Logic, a sound program logic for first-order, encapsulated WebAssembly.
We design a novel assertion syntax, tailored to WebAssembly’s stack-based semantics and the strong guarantees given by WebAssembly’s type system, and show how to adapt the standard separation logic triple and proof rules in a principled way to capture WebAssembly’s uncommon structured control flow.
Using Wasm Logic, we specify and verify a simple WebAssembly B-tree library, giving abstract specifications independent of the underlying implementation.
We mechanise Wasm Logic and its soundness proof in full in Isabelle/HOL. As part of the soundness proof, we formalise and fully mechanise a novel, big-step semantics of WebAssembly, which we prove equivalent, up to transitive closure, to the original WebAssembly small-step semantics.
Wed 17 Jul
|15:40 - 16:00|
Thodoris SotiropoulosAthens University of Economics and Business, Ben LivshitsImperial College London, UKDOI
|16:00 - 16:20|
Conrad WattUniversity of Cambridge, Petar MaksimovićImperial College London, UK and Mathematical Institute of the Serbian Academy of Sciences and Arts, Serbia, Neel KrishnaswamiComputer Laboratory, University of Cambridge, Philippa GardnerImperial College LondonDOI
|16:20 - 16:40|
Noah Van EsSofware Languages Lab, Vrije Universiteit Brussel, Quentin StiévenartVrije Universiteit Brussel, Belgium, Coen De RooverVrije Universiteit BrusselDOI
|16:40 - 17:00|
Osbert BastaniUniversity of Pennsylvania, Rahul SharmaMicrosoft Research, Lazaro ClappStanford University, Saswat AnandStanford University, Alex AikenStanford UniversityDOI