Run Your Research: On the Effectiveness of Mechanization

Both the benefits of formalization, and the costs of mechanization, irrespective of soundness and completeness, have been recurring themes here recently. The PLT group has an excellent paper Run Your Research: On the Effectiveness of Mechanization looking at recent papers in prestigious conferences by high-profile researchers that shed some light on both of these things:

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.

The work is by Casey Klein, John Clements, Christos Dimoulas, Carl Eastlund, Matthias Felleisen, Matthew Flatt, Jay McCarthy, Jon Rafkind, Sam Tobin-Hochstadt, and Robert Bruce Findler and will be appearing in POPL 2012. The underlying mechanization language PLT redex and fuzzer have been discussed in passing on LtU.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

relationship of Redex to Jackson's Alloy

The quoted teaser made Redex sound very much like Alloy. Turns out the relationship between the two goes deeper than accidental similarity attributable to the great-minds-think-alike effect:

“The development of Redex draws inspiration from Alloy ( Jackson 2002), a system designed to provide software engineers with a lightweight alternative to theorem proving. With Alloy, software engineers build models of software systems and explore them with mechanical support. Redex seeks to provide a similar experience to semantics engineers.”