Skip to content

Commit 5c09fc3

Browse files
committed
Add stubs for related work
1 parent 07a34d9 commit 5c09fc3

File tree

3 files changed

+101
-39
lines changed

3 files changed

+101
-39
lines changed

src/proof-assistants.bib

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -19,42 +19,6 @@ @article{abel2001human
1919
year = {2001}
2020
}
2121

22-
@article{JSCert,
23-
author = {Bodin, Martin and Chargueraud, Arthur and Filaretti, Daniele and Gardner, Philippa and Maffeis, Sergio and Naudziuniene, Daiva and Schmitt, Alan and Smith, Gareth},
24-
title = {A Trusted Mechanised JavaScript Specification},
25-
year = {2014},
26-
issue_date = {January 2014},
27-
publisher = {Association for Computing Machinery},
28-
address = {New York, NY, USA},
29-
volume = {49},
30-
number = {1},
31-
issn = {0362-1340},
32-
url = {https://doi.org/10.1145/2578855.2535876},
33-
doi = {10.1145/2578855.2535876},
34-
journal = {SIGPLAN Not.},
35-
month = jan,
36-
pages = {87–100},
37-
numpages = {14},
38-
keywords = {mechanised semantics, coq, javascript}
39-
}
40-
41-
@inproceedings{JSCertInp,
42-
author = {Bodin, Martin and Chargueraud, Arthur and Filaretti, Daniele and Gardner, Philippa and Maffeis, Sergio and Naudziuniene, Daiva and Schmitt, Alan and Smith, Gareth},
43-
title = {A Trusted Mechanised JavaScript Specification},
44-
year = {2014},
45-
isbn = {9781450325448},
46-
publisher = {Association for Computing Machinery},
47-
address = {New York, NY, USA},
48-
url = {https://doi.org/10.1145/2535838.2535876},
49-
doi = {10.1145/2535838.2535876},
50-
booktitle = {Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
51-
pages = {87–100},
52-
numpages = {14},
53-
keywords = {mechanised semantics, javascript, coq},
54-
location = {San Diego, California, USA},
55-
series = {POPL ’14}
56-
}
57-
5822
@inproceedings{SASyLF,
5923
author = {Aldrich, Jonathan and Simmons, Robert J. and Shin, Key},
6024
title = {SASyLF: An Educational Proof Assistant for Language Theory},

src/thesis.bib

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
1+
@online{WasmIsabelle,
2+
author = {Mischka, Jacob and Watt, Conrad},
3+
year = {2020},
4+
date = {2020-05-17},
5+
url = {https://github.com/jacobmischka/wasm-isabelle},
6+
urldate = {2020-07-14}
7+
}
8+
19
@inproceedings{WattMechanizing,
210
author = {Watt, Conrad},
311
title = {Mechanising and Verifying the WebAssembly Specification},
@@ -377,3 +385,50 @@ @online{FlashSecurityUpdates
377385
url = {https://helpx.adobe.com/security/products/flash-player.html},
378386
urldate = {2020-07-14}
379387
}
388+
389+
@report{WasmCoqMechanization,
390+
title = {A Mechanized Formalization of the WebAssembly Specification in Coq},
391+
author = {Xuan Huang},
392+
publisher = {Rochester Institute of Technology},
393+
address = {Rochester, NY 14586},
394+
year = {2019},
395+
url = {https://www.cs.rit.edu/~mtf/student-resources/20191_huang_mscourse.pdf},
396+
urldate = {2020-07-14}
397+
}
398+
399+
@article{JSCert,
400+
author = {Bodin, Martin and Chargueraud, Arthur and Filaretti, Daniele and Gardner, Philippa and Maffeis, Sergio and Naudziuniene, Daiva and Schmitt, Alan and Smith, Gareth},
401+
title = {A Trusted Mechanised JavaScript Specification},
402+
year = {2014},
403+
issue_date = {January 2014},
404+
publisher = {Association for Computing Machinery},
405+
address = {New York, NY, USA},
406+
volume = {49},
407+
number = {1},
408+
issn = {0362-1340},
409+
url = {https://doi.org/10.1145/2578855.2535876},
410+
doi = {10.1145/2578855.2535876},
411+
journal = {SIGPLAN Not.},
412+
month = jan,
413+
pages = {87–100},
414+
numpages = {14},
415+
keywords = {mechanised semantics, coq, javascript}
416+
}
417+
418+
@inproceedings{JSCertInp,
419+
author = {Bodin, Martin and Chargueraud, Arthur and Filaretti, Daniele and Gardner, Philippa and Maffeis, Sergio and Naudziuniene, Daiva and Schmitt, Alan and Smith, Gareth},
420+
title = {A Trusted Mechanised JavaScript Specification},
421+
year = {2014},
422+
isbn = {9781450325448},
423+
publisher = {Association for Computing Machinery},
424+
address = {New York, NY, USA},
425+
url = {https://doi.org/10.1145/2535838.2535876},
426+
doi = {10.1145/2535838.2535876},
427+
booktitle = {Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages},
428+
pages = {87–100},
429+
numpages = {14},
430+
keywords = {mechanised semantics, javascript, coq},
431+
location = {San Diego, California, USA},
432+
series = {POPL ’14}
433+
}
434+

src/thesis.tex

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@ \chapter{Incremental Soundness}
577577
and Tail Call\cite{TailCallProposal}.
578578
Definitions and proofs for the type checker and interpreter are also updated
579579
accordingly.
580+
The source code for my mechanization can be found on GitHub\cite{WasmIsabelle}.
580581

581582
A great deal of the challenge in this task involved learning how to effectively
582583
use Isabelle at the same time.
@@ -871,6 +872,26 @@ \section{Tail Call}
871872

872873
\chapter{Related Work} % TODO
873874

875+
\citeauthor{WasmCoqMechanization} developed an independent mechanization of
876+
WebAssembly using the Coq proof assistant, and came close to proving its
877+
soundness\cite{WasmCoqMechanization}.
878+
879+
\citeauthor{JSCert} mechanized the JavaScript ECMAScript 5 standard in
880+
Coq, and created a reference interpreter proved correct with respect to
881+
the mechanization.
882+
883+
\citeauthor{RustBelt} mechanized a core calculus of the Rust programming
884+
language using the Iris proof assistant\cite{RustBelt}.
885+
Rust is a modern systems language and one of the leading languages with
886+
support for compiling to WebAssembly.
887+
\citeauthor{RustBeltRelaxed} extended this work, accounting for relaxed-memory
888+
operations in use by concurrent Rust programs\cite{RustBeltRelaxed}.
889+
890+
\citeauthor{Watt_2020}, the author of the original Isabelle WebAssembly
891+
mechanization on which my work is based, has mechanized the JavaScript memory
892+
model in Coq, finding errors in JavaScript's specification causing concurrency
893+
issues and compilation problems\cite{Watt_2020}.
894+
874895
\chapter{Future Work} % TODO
875896

876897
Certainly, much remains to be done in the area of WebAssembly soundness
@@ -891,9 +912,8 @@ \chapter{Future Work} % TODO
891912
Reference Types Proposal\cite{ReferenceTypesProposalOverview,WeakeningWasm}
892913
and phase 2 Threading Proposal\cite{ThreadingProposalOverview,WeakeningWasm}.
893914

894-
\chapter{Conclusion} % TODO
915+
\chapter{Conclusion}
895916

896-
% One paragraph summarizing what I did
897917
This paper investigates the WebAssembly language and the soundness of its
898918
type system.
899919
Beginning with an existing mechanized proof of the core language using the
@@ -905,7 +925,30 @@ \chapter{Conclusion} % TODO
905925
\citeauthor{WattMechanizing}, and plans are in place to integrate the changes
906926
into the official source.
907927

908-
% TODO: Another paragraph summarizing what I learned (what's the point?)
928+
Over the course of this project I have had the opportunity to join the
929+
WebAssembly community, learn about the language and its origins, and take
930+
part in Community Group and subgroup video conference meetings.
931+
Gaining understanding of a core standardized language for the Web during its
932+
infancy and becoming familiar with its evolution process will be of immense
933+
benefit to me as a web developer as the language and ecosystem matures.
934+
On a higher level, my efforts in understanding and modeling a language
935+
specification and its type system and proving its soundness has given me a
936+
deeper understanding of programming language design and type theory as a whole.
937+
Small details in an instruction's execution or typing rules often have large
938+
implications when the program is checked or executed.
939+
Even for a rather simple language like WebAssembly with its four primitive
940+
types, small instruction set, and straightforward memory and execution models,
941+
issues can quickly arise and soundness is lost if a language feature is modeled
942+
even slightly incorrectly---for example when asserting that an incorrect number
943+
of values are present.
944+
Ensuring soundness and proper execution is critical when designing a language
945+
so that it holds the properties that it claims to: the type system will prevent
946+
bugs and the language will do what the programmer tells it to.
947+
Despite the importance of this assurance, it is challenging to do so, and
948+
particularly difficult to ensure that it stays so when making changes to the
949+
language.
950+
Proof mechanization is one way to ease this burden, providing language
951+
authors a more foolproof way to keep their promises to their users.
909952

910953
% \appendix
911954

0 commit comments

Comments
 (0)