TY - JOUR
T1 - Run your research
T2 - On the effectiveness of lightweight mechanization
AU - Klein, Casey
AU - Clements, John
AU - Dimoulas, Christos
AU - Eastlund, Carl
AU - Felleisen, Matthias
AU - Flatt, Matthew
AU - McCarthy, Jay A.
AU - Rafkind, Jon
AU - Sam, Tobin Hochstadt
AU - Findler, Robert Bruce
PY - 2012/1/1
Y1 - 2012/1/1
N2 - 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. In this paper we report on a validation of this form of lightweight mechanization. The largest part of this validation concerns the formalization and exploration of nine ICFP 2009 papers in Redex, an effort that uncovered mistakes in all nine papers. The results suggest that Redex-based lightweight modeling is effective and easy to integrate into the work flow of a semantics engineer. This experience also suggests lessons for the developers of other mechanization tools.
AB - 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. In this paper we report on a validation of this form of lightweight mechanization. The largest part of this validation concerns the formalization and exploration of nine ICFP 2009 papers in Redex, an effort that uncovered mistakes in all nine papers. The results suggest that Redex-based lightweight modeling is effective and easy to integrate into the work flow of a semantics engineer. This experience also suggests lessons for the developers of other mechanization tools.
KW - Lightweight semantics engineering
UR - http://www.scopus.com/inward/record.url?scp=84857163145&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84857163145&partnerID=8YFLogxK
U2 - 10.1145/2103621.2103691
DO - 10.1145/2103621.2103691
M3 - Article
AN - SCOPUS:84857163145
SN - 1523-2867
VL - 47
SP - 285
EP - 296
JO - ACM SIGPLAN Notices
JF - ACM SIGPLAN Notices
IS - 1
ER -