Reusable components of semantic specifications

Semantic specifications of programming languages typically have poor modularity. This hinders reuse of parts of the semantics of one language when specifying a different language -- even when the two languages have many constructs in common -- and evolution of a language may require major reformulation of its semantics. Such drawbacks have discouraged language developers from using formal semantics to document their designs. In the PlanCompS project, we have developed a component-based approach to semantics. Here, we explain its modularity aspects, and present an illustrative case study. Our approach provides good modularity, facilitates reuse, and supports co-evolution of languages and their formal semantics. It could be particularly useful in connection with domain-specific languages and language-driven software development.

[1]  Peter D. Mosses,et al.  Modular Bisimulation Theory for Computations and Values , 2013, FoSSaCS.

[2]  Adrian Johnstone,et al.  Translator Generation Using ART , 2010, SLE.

[3]  Peter D. Mosses,et al.  Implicit Propagation in Structural Operational Semantics , 2009, SOS@ICALP.

[4]  Mark van den Brand,et al.  Safe Specification of Operator Precedence Rules , 2013, SLE.

[5]  Gilles Kahn,et al.  Natural Semantics , 1987, STACS.

[6]  Peter D. Mosses,et al.  An agile approach to language modelling and development , 2009, Innovations in Systems and Software Engineering.

[7]  Egon Börger,et al.  Exploiting Abstraction for Specification Reuse. The Java/C# Case Study , 2003, FMCO.

[8]  Peter D. Mosses,et al.  Theory and Practice of Action Semantics , 1996, MFCS.

[9]  Grigore Rosu,et al.  K Framework Distilled , 2012, WRLA.

[10]  Martin Wirsing,et al.  Algebraic Specification , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[11]  Peter D. Mosses,et al.  FunKons: Component-Based Semantics in K , 2014, WRLA.

[12]  Grigore Rosu,et al.  K Overview and SIMPLE Case Study , 2014, Electron. Notes Theor. Comput. Sci..

[13]  Peter D. Mosses Semantics of programming languages: Using Asf+Sdf , 2015, Sci. Comput. Program..

[14]  Peter D. Mosses,et al.  Constructive Action Semantics for Core ML , 2005, IEE Proc. Softw..

[15]  Nico M. Temme,et al.  Prehistory of the ASF + SDF System (1980-1984) (Dedicated to Cor Baayen) , 1994 .

[16]  Mads Tofte,et al.  Type Inference for Polymorphic References , 1990, Inf. Comput..

[17]  Marieke Huisman Proceedings of the 8th international workshop on Specification and verification of component-based systems , 2009, FSE 2009.

[18]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[19]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.

[20]  Peter D. Mosses Component-Based Description of Programming Languages , 2008, BCS Int. Acad. Conf..

[21]  Peter D. Mosses Action Semantics , 1986, ADT.

[22]  Peter D. Mosses,et al.  The use of action semantics , 1986, Formal Description of Programming Concepts.

[23]  Matthias Felleisen,et al.  Semantics Engineering with PLT Redex , 2009 .

[24]  Sam Tobin-Hochstadt,et al.  Run your research: on the effectiveness of lightweight mechanization , 2012, POPL '12.

[25]  Bruno C. d. S. Oliveira,et al.  Modular monadic meta-theory , 2013, ICFP.

[26]  Arie van Deursen,et al.  The ASF+SDF Meta-environment: A Component-Based Language Development Environment , 2001 .

[27]  Benjamin C. Pierce,et al.  TinkerType: a language for playing with formal systems , 2003, Journal of Functional Programming.

[28]  Eelco Visser,et al.  Syntax definition for language prototyping , 1997 .

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

[30]  Alfonso Pierantonio,et al.  Montages Specifications of Realistic Programming Languages , 1997, J. Univers. Comput. Sci..

[31]  John McCarthy,et al.  Towards a Mathematical Science of Computation , 1962, IFIP Congress.

[32]  Peter D. Mosses,et al.  Reusable Components of Semantic Specifications , 2015, LNCS Trans. Aspect Oriented Softw. Dev..

[33]  Peter D. Mosses,et al.  Generating Specialized Interpreters for Modular Structural Operational Semantics , 2013, LOPSTR.

[34]  Tom Ridge,et al.  Ott: effective tool support for the working semanticist , 2007, ICFP '07.

[35]  Peter D. Mosses Component-based semantics , 2009, SAVCBS '09.

[36]  José Meseguer,et al.  The rewriting logic semantics project: A progress report , 2011, Inf. Comput..

[37]  Joseph A. Goguen,et al.  Algebraic semantics of imperative programs , 1996, Foundations of computing series.

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

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

[40]  Robert Harper,et al.  A type-theoretic interpretation of standard ML , 2000, Proof, Language, and Interaction.

[41]  David A. Schmidt,et al.  Action Semantics-Directed Prototyping , 1993, Comput. Lang..

[42]  Peter D. Mosses A Constructive Approach to Language Definition , 2005, J. Univers. Comput. Sci..

[43]  Peter D. Mosses,et al.  Deriving Pretty-Big-Step Semantics from Small-Step Semantics , 2014, ESOP.

[44]  Egon Börger,et al.  A high-level modular definition of the semantics of C# , 2005, Theor. Comput. Sci..

[45]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[46]  Peter D. Mosses,et al.  Modular structural operational semantics , 2004, J. Log. Algebraic Methods Program..

[47]  Peter D. Mosses Teaching semantics of programming languages with modular SOS , 2006, FM 2006.

[48]  Eelco Visser,et al.  Stratego: A Language for Program Transformation Based on Rewriting Strategies , 2001, RTA.

[49]  Peter D. Mosses,et al.  VDM semantics of programming languages: combinators and monads , 2011, Formal Aspects of Computing.

[50]  Peter D. Mosses Formal Semantics of Programming Languages: - An Overview - , 2006, Electron. Notes Theor. Comput. Sci..

[51]  Gordon D. Plotkin,et al.  A structural approach to operational semantics , 2004, J. Log. Algebraic Methods Program..

[52]  Gordon D. Plotkin,et al.  Computational Effects and Operations: An Overview , 2004, Electron. Notes Theor. Comput. Sci..

[53]  Paul Hudak,et al.  Monad transformers and modular interpreters , 1995, POPL '95.

[54]  Eelco Visser,et al.  The Spoofax language workbench , 2010, SPLASH/OOPSLA Companion.

[55]  Sibylle Schupp,et al.  Reusable Components for Lightweight Mechanisation of Programming Languages , 2013, SC@STAF.

[56]  Peter D. Mosses,et al.  An Action Environment , 2004, LDTA@ETAPS.

[57]  Simon L. Peyton Jones,et al.  A history of Haskell: being lazy with class , 2007, HOPL.

[58]  Peter D. Mosses,et al.  Composing programming languages by combining action-semantics modules , 2001, Sci. Comput. Program..

[59]  Karl Crary,et al.  Towards a mechanized metatheory of standard ML , 2007, POPL '07.