SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The ergo support system: an integrated set of tools for prototyping integrated environments
SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
A meta-environment for generating programming environments
ACM Transactions on Software Engineering and Methodology (TOSEM)
Memoization in top-down parsing
Computational Linguistics
Types and programming languages
Types and programming languages
The Definition of Standard ML
AMAST '02 Proceedings of the 9th International Conference on Algebraic Methodology and Software Technology
A Tool to Support Formal Reasoning about Computer Languages
TACAS '97 Proceedings of the Third International Workshop on Tools and Algorithms for Construction and Analysis of Systems
Reasoning with the Formal Definition of Standard ML in HOL
HUG '93 Proceedings of the 6th International Workshop on Higher Order Logic Theorem Proving and its Applications
CONCUR '96 Proceedings of the 7th International Conference on Concurrency Theory
Encoding Natural Semantics in Coq
AMAST '95 Proceedings of the 4th International Conference on Algebraic Methodology and Software Technology
Studying the ML Module System in Hol
Proceedings of the 7th International Workshop on Higher Order Logic Theorem Proving and Its Applications
Implementation and applications of Scott's logic for computable functions
Proceedings of ACM conference on Proving assertions about programs
SDE 1 Proceedings of the first ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
The machine-assisted proof of programming language properties
The machine-assisted proof of programming language properties
FreshML: programming with binders made simple
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
TinkerType: a language for playing with formal systems
Journal of Functional Programming
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
From structures and functors to modules and units
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Towards a mechanized metatheory of standard ML
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The java module system: core design and semantic definition
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Electronic Notes in Theoretical Computer Science (ENTCS)
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Mechanized metatheory for the masses: the PoplMark challenge
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
Formal verification of a c compiler front-end
FM'06 Proceedings of the 14th international conference on Formal Methods
A marriage of rely/guarantee and separation logic
CONCUR'07 Proceedings of the 18th international conference on Concurrency Theory
The java module system: core design and semantic definition
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Mechanical verification of refactorings
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
SASyLF: an educational proof assistant for language theory
Proceedings of the 2008 international workshop on Functional and declarative programming in education
The Structure of the Essential Haskell Compiler, or Coping with Compiler Complexity
Implementation and Application of Functional Languages
Efficient software model checking of soundness of type systems
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
A machine-checked model of safe composition
Proceedings of the 2009 workshop on Foundations of aspect-oriented languages
Formalising and Verifying Reference Attribute Grammars in Coq
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Fitting the pieces together: a machine-checked model of safe composition
Proceedings of the the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering
Dependent types and program equivalence
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Ott: Effective tool support for the working semanticist
Journal of Functional Programming
Operational reasoning for concurrent caml programs and weak memory models
TPHOLs'07 Proceedings of the 20th international conference on Theorem proving in higher order logics
A sound semantics for OCamllight
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
EriLex: an embedded domain specific language generator
TOOLS'10 Proceedings of the 48th international conference on Objects, models, components, patterns
An effective methodology for defining consistent semantics of complex systems
CEFP'09 Proceedings of the Third summer school conference on Central European functional programming school
Separating ownership topology and encapsulation with generic universe types
ACM Transactions on Programming Languages and Systems (TOPLAS)
Journal of Automated Reasoning
Formalizing the LLVM intermediate representation for verified program transformations
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Encoding Abstract Syntax Without Fresh Names
Journal of Automated Reasoning
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Hi-index | 0.00 |
It is rare to give a semantic definition of a full-scale programming language, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics - usually either LaTEX for informal mathematics, or the formal mathematics of a proof assistant - make it much harder than necessary to work with large definitions. We present a metalanguage specifically designed for this problem, and a tool, ott, that sanity-checks such definitions and compiles them into proof assistant code for Coq, HOL, Isabelle, and (in progress) Twelf, together with LaTEX code for production-quality typesetting, and OCaml boilerplate. The main innovations are:(1) metalanguage design to make definitions concise, and easy to read and edit;(2) an expressive but intuitive metalanguage for specifying binding structures; and (3) compilation to proof assistant code. This has been tested in substantial case studies, including modular specifications of calculi from the TAPL text, a Lightweight Java with Java JSR 277/294 module system proposals, and a large fragment of OCaml (around 306 rules), with machine proofs of various soundness results. Our aim with this work is to enable a phase change: making it feasible to work routinely, without heroic effort, with rigorous semantic definitions of realistic languages.