Abstract
Formal models serve in many roles in the programming language community. In its primary role, a model communicates the idea of a language design; the architecture of a language tool; or the essence of a program analysis. No matter which role it plays, however, a faulty model doesn't serve its purpose.
One way to eliminate flaws from a model is to write it down in a mechanized formal language. It is then possible to state theorems about the model, to prove them, and to check the proofs. Over the past nine years, PLT has developed and explored a lightweight version of this approach, dubbed Redex. In a nutshell, Redex is a domain-specific language for semantic models that is embedded in the Racket programming language. The effort of creating a model in Redex is often no more burdensome than typesetting it with LaTeX; the difference is that Redex comes with tools for the semantics engineering life cycle.
Supplemental Material
Available for Download
This directory accompanies the paper: Run Your Research: On the Effectiveness of Lightweight Mechanization_ by Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay A. McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, and Robert Bruce Findler It contains the models that we used when testing the papers from ICFP 2009. The README in the archive has more information.
- Andrea Arcuri and Lionel C. Briand. A practical guide for using statistical tests to assess randomized algorithms in software engineering. In Proc. Intl. Conf. Soft. Eng. , pp. 1--10, 2011. Google ScholarDigital Library
- Brian E. Aydemir, Aaron Bohannon, Matthew Fairbairn, J. Nathan Foster, Benjamin C. Pierce, Peter Sewell, Dimitrios Vytiniotis, Geoffrey Wash- burn, Stephanie Weirich, and Steve Zdancewic. Mechanized metatheory for the masses: the POPLMark Challenge. In Proc. Intl. Conf. Theorem Proving in Higher Order Logics, Lecture Notes in Computer Science volume 3603, pp. 50--65, 2005. Google ScholarDigital Library
- Chandrasekhar Boyapati, Sarfraz Khurshid, and Darko Marinov. Korat: automated testing based on Java predicates. In Proc. Intl. Symp. Soft. Testing and Analysis, pp. 123--133, 2002. Google ScholarDigital Library
- Avik Chaudhuri. A concurrent ML library in Concurrent Haskell. In Proc. ACM Intl. Conf. Functional Programming, pp. 269--280, 2009. Google ScholarDigital Library
- James Cheney and Alberto Momigliano. Mechanized metatheory model- checking. In Proc. Intl. Conf. Principles and Practice of Declarative Programming, pp. 75--86, 2007. Google ScholarDigital Library
- James Cheney and Christian Urban. αProlog: a logic programming language with names, binding, and α-equivalence. In Proc. Intl. Conf. Logic Programming, Lecture Notes in Computer Science volume 3132, pp. 269--283, 2004.Google Scholar
- Koen Claessen and John Hughes. QuickCheck: a lightweight tool for random testing of Haskell programs. In Proc. ACM Intl. Conf. Functional Programming, pp. 268--279, 2000. Google ScholarDigital Library
- Manuel Clavel, Francisco Duran, Steven Eker, Patrick Lincoln, Narciso Martin-Oliet, Jose Meseguer, and Carolyn Talcott. Maude 2.0 system. In Proc. Intl. Conf. Rewriting Techniques and Applications, Lecture Notes in Computer Science volume 2706, pp. 76--87, 2003. Google ScholarDigital Library
- John Clements, Matthew Flatt, and Matthias Felleisen. Modeling an algebraic stepper. In Proc. Euro. Symp. Programming, pp. 320--334, 2001. Google ScholarDigital Library
- Thierry Despeyroux. Executable specification of static semantics. In Proc. Intl. Symp. Semantics of Data Types, Lecture Notes in Computer Science volume 173, pp. 215--233, 1984.Google Scholar
- Thierry Despeyroux. Typol: a formalism to implement natural semantics. INRIA, Research Report No. 94, 1988.Google Scholar
- Atze Dijkstra and S. Doaitse Swierstra. Ruler: programming Type rules. In Proc. Intl. Symp. Functional and Logic Programming, Lecture Notes in Computer Science volume 3945, pp. 30--46, 2006. Google ScholarDigital Library
- Matthew B. Dwyer, Suzette Person, and Sebastian G. Elbaum. Controlling factors in evaluating path-sensitive error detection techniques. In Proc. ACM Symp. Foundations of Soft. Eng., pp. 92--104, 2006. Google ScholarDigital Library
- Chucky Ellison and Grigore Rosu. An Executable Formal Semantics of C with Applications. University of Illinois, http://hdl.handle.net/2142/25816, 2011..Google Scholar
Index Terms
- Run your research: on the effectiveness of lightweight mechanization
Recommendations
Run your research: on the effectiveness of lightweight mechanization
POPL '12: Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languagesFormal models serve in many roles in the programming language community. In its primary role, a model communicates the idea of a language design; the architecture of a language tool; or the essence of a program analysis. No matter which role it plays, ...
The Intel labs Haskell research compiler
Haskell '13The Glasgow Haskell Compiler (GHC) is a well supported optimizing compiler for the Haskell programming language, along with its own extensions to the language and libraries. Haskell's lazy semantics imposes a runtime model which is in general difficult ...
The Implementation of Run-Time Diagnostics in Pascal
This paper considers the role of run-time diagnostic checking in enforcing the rules of the Pascal programming language. Run-time diagnostic checks must be both complete (covering all language requirements) and efficient. Further, such checks should be ...
Comments