The Next 700 Semantics: A Research Challenge

Modern systems consist of large numbers of languages, frameworks, libraries, APIs, and more. Each has characteristic behavior and data. Capturing these in semantics is valuable not only for understanding them but also essential for formal treatment (such as proofs). Unfortunately, most of these systems are defined primarily through implementations, which means the semantics needs to be learned. We describe the problem of learning a semantics, provide a structuring process that is of potential value, and also outline our failed attempts at achieving this so far. 2012 ACM Subject Classification Software and its engineering → General programming languages; Software and its engineering → Language features; Software and its engineering → Semantics; Software and its engineering → Formal language definitions

[1]  Armando Solar-Lezama,et al.  Synthesis of Recursive ADT Transformations from Reusable Templates , 2015, TACAS.

[2]  Chucky Ellison,et al.  An executable formal semantics of C with applications , 2011, POPL '12.

[3]  Matthias Felleisen,et al.  On the Expressive Power of Programming Languages , 1990, European Symposium on Programming.

[4]  Daejun Park,et al.  KJS: a complete formal semantics of JavaScript , 2015, PLDI.

[5]  D. H. Bartley,et al.  Revised4 report on the algorithmic language scheme , 1991, LIPO.

[6]  Robin Milner,et al.  Definition of standard ML , 1990 .

[7]  Shriram Krishnamurthi,et al.  The Essence of JavaScript , 2010, ECOOP.

[8]  Joe Gibbs Politz,et al.  A Tested Semantics for the Python Programming Language , 2013 .

[9]  Arthur Charguéraud,et al.  A trusted mechanised JavaScript specification , 2014, POPL.

[10]  Éric Tanter,et al.  A trustworthy mechanized formalization of R , 2018, DLS.

[11]  Sergio Maffeis,et al.  An Executable Formal Semantics of PHP , 2014, ECOOP.

[12]  Chris Callison-Burch,et al.  Crowdsourcing Translation: Professional Quality from Non-Professionals , 2011, ACL.

[13]  Grigore Rosu,et al.  P4K: A Formal Semantics of P4 and Applications , 2018, ArXiv.

[14]  Arthur Charguéraud,et al.  JSExplain: A Double Debugger for JavaScript , 2018, WWW.

[15]  Grigore Rosu,et al.  K-Java , 2015, POPL.

[16]  Joe Gibbs Politz,et al.  A tested semantics for getters, setters, and eval in JavaScript , 2012, DLS.

[17]  Nishant Rodrigues,et al.  KEVM: A Complete Semantics of the Ethereum Virtual Machine , 2017 .

[18]  Grigore Rosu,et al.  A complete formal semantics of x86-64 user-level instruction set architecture , 2019, PLDI.

[19]  Chucky Ellison,et al.  Defining the undefinedness of C , 2015, PLDI.