We report on work in progress in building an environment for the validation of the meta-theory of programming languages artifacts, for example the correctness of compiler translations; the basic idea is to couple property-based testing with binders-aware functional programming as the meta-language for specification and testing. Treating binding signatures and related notions, such as new names generation, α-equivalence and capture-avoiding substitution correctly and effectively is crucial in the verification and validation of programming language (meta)theory. We use Haskell as our meta-language, since it offers various libraries for both random and exhaustive generation of tests, as well as for binders. We validate our approach on benchmarks of mutations presented in the literature and some examples of code “in the wild”. In the former case, not only did we very quickly (re)discover all the planted bugs, but we achieved that with very little configuration effort with comparison to the competition. In the second case we located several simple bugs that had survived for years in publicly available (academic) code. We believe that our approach adds to the increasing evidence of the usefulness of property-based testing for semantic engineering of programming languages, in alternative or prior to full verification.

Validating the Meta-Theory of Programming Languages (Short Paper) / G. Fachini, A. Momigliano (LECTURE NOTES IN COMPUTER SCIENCE). - In: Software Engineering and Formal Methods / [a cura di] A. Cimatti, M. Sirjani. - Prima edizione. - [s.l] : Springer, 2017 Sep 01. - ISBN 9783319661964. - pp. 367-374 (( Intervento presentato al 15. convegno SEFM tenutosi a Trento nel 2017 [10.1007/978-3-319-66197-1_23].

Validating the Meta-Theory of Programming Languages (Short Paper)

A. Momigliano
Ultimo
2017

Abstract

We report on work in progress in building an environment for the validation of the meta-theory of programming languages artifacts, for example the correctness of compiler translations; the basic idea is to couple property-based testing with binders-aware functional programming as the meta-language for specification and testing. Treating binding signatures and related notions, such as new names generation, α-equivalence and capture-avoiding substitution correctly and effectively is crucial in the verification and validation of programming language (meta)theory. We use Haskell as our meta-language, since it offers various libraries for both random and exhaustive generation of tests, as well as for binders. We validate our approach on benchmarks of mutations presented in the literature and some examples of code “in the wild”. In the former case, not only did we very quickly (re)discover all the planted bugs, but we achieved that with very little configuration effort with comparison to the competition. In the second case we located several simple bugs that had survived for years in publicly available (academic) code. We believe that our approach adds to the increasing evidence of the usefulness of property-based testing for semantic engineering of programming languages, in alternative or prior to full verification.
Settore INF/01 - Informatica
1-set-2017
Book Part (author)
File in questo prodotto:
File Dimensione Formato  
sefm.pdf

accesso riservato

Tipologia: Post-print, accepted manuscript ecc. (versione accettata dall'editore)
Dimensione 111.33 kB
Formato Adobe PDF
111.33 kB Adobe PDF   Visualizza/Apri   Richiedi una copia
Fachini-Momigliano2017_Chapter_ValidatingTheMeta-TheoryOfProg.pdf

accesso riservato

Tipologia: Publisher's version/PDF
Dimensione 173.24 kB
Formato Adobe PDF
173.24 kB Adobe PDF   Visualizza/Apri   Richiedi una copia
Pubblicazioni consigliate

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/2434/521857
Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus 2
  • ???jsp.display-item.citation.isi??? ND
social impact