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)
An extension of system F with subtyping
Information and Computation - Special conference issue: international conference on theoretical aspects of computer software
Types and programming languages
Types and programming languages
From Syntactic Theories to Interpreters: Automating the Proof of Unique Decomposition
Higher-Order and Symbolic Computation
The Definition of Standard ML
Observable Properties of Higher Order Functions that Dynamically Create Local Names, or What's new?
MFCS '93 Proceedings of the 18th International Symposium on Mathematical Foundations of Computer Science
Subtyping + Extensionality: Confluence of beta-eta-top reduction in F
TACS '91 Proceedings of the International Conference on Theoretical Aspects of Computer Software
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
Jakarta: A Toolset for Reasoning about JavaCard
E-SMART '01 Proceedings of the International Conference on Research in Smart Cards: Smart Card Programming and Security
Encoding Natural Semantics in Coq
AMAST '95 Proceedings of the 4th International Conference on Algebraic Methodology and Software Technology
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
A Head-to-Head Comparison of de Bruijn Indices and Names
Electronic Notes in Theoretical Computer Science (ENTCS)
Ott: effective tool support for the working semanticist
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Acute: High-level programming language design for distributed computation
Journal of Functional Programming
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
Nominal Techniques in Isabelle/HOL
Journal of Automated Reasoning
SASyLF: an educational proof assistant for language theory
Proceedings of the 2008 international workshop on Functional and declarative programming in education
A machine-checked model of safe composition
Proceedings of the 2009 workshop on Foundations of aspect-oriented languages
Dependent types and program equivalence
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Electronic Notes in Theoretical Computer Science (ENTCS)
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
A formal implementation of value commitment
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
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
Relaxed-memory concurrency and verified compilation
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Relational parametricity for a polymorphic linear lambda calculus
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
General bindings and alpha-equivalence in nominal Isabelle
ESOP'11/ETAPS'11 Proceedings of the 20th European conference on Programming languages and systems: part of the joint European conferences on theory and practice of software
A formalization of the C99 standard in HOL, isabelle and Coq
MKM'11 Proceedings of the 18th Calculemus and 10th international conference on Intelligent computer mathematics
Lem: a lightweight tool for heavyweight semantics
ITP'11 Proceedings of the Second international conference on Interactive theorem proving
Secure distributed programming with value-dependent types
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
A DSL for writing type systems for Xtext languages
Proceedings of the 9th International Conference on Principles and Practice of Programming in Java
GMETA: a generic formal metatheory framework for first-order representations
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Generalised name abstraction for nominal sets
FOSSACS'13 Proceedings of the 16th international conference on Foundations of Software Science and Computation Structures
Implementing Java-like languages in Xtext with Xsemantics
Proceedings of the 28th Annual ACM Symposium on Applied Computing
CompCertTSO: A Verified Compiler for Relaxed-Memory Concurrency
Journal of the ACM (JACM)
Automatically generated infrastructure for de bruijn syntaxes
ITP'13 Proceedings of the 4th international conference on Interactive Theorem Proving
A trusted mechanised JavaScript specification
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Combining proofs and programs in a dependently typed language
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
The recursive polarized dual calculus
Proceedings of the ACM SIGPLAN 2014 Workshop on Programming Languages meets Program Verification
Journal of Computer Security - Foundational Aspects of Security
Hi-index | 0.01 |
Semantic definitions of full-scale programming languages are rarely given, despite the many potential benefits. Partly this is because the available metalanguages for expressing semantics – usually either 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, and Isabelle/HOL, together with 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 (OCamllight, 310 rules), with mechanised 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.