Verification of high-level transformations with inductive refinement types
- 7 April 2020
- journal article
- research article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 53 (9), 147-160
- https://doi.org/10.1145/3393934.3278125
Abstract
High-level transformation languages like Rascal include expressive features for manipulating large abstract syntax trees: first-class traversals, expressive pattern matching, backtracking and generalized iterators. We present the design and implementation of an abstract interpretation tool, Rabit, for verifying inductive type and shape properties for transformations written in such languages. We describe how to perform abstract interpretation based on operational semantics, specifically focusing on the challenges arising when analyzing the expressive traversals and pattern matching. Finally, we evaluate Rabit on a series of transformations (normalization, desugaring, refactoring, code generators, type inference, etc.) showing that we can effectively verify stated properties.Keywords
Funding Information
- Innovationsfonden (7039-00072B)
- Det Frie Forskningsråd (0602-02327B)
This publication has 27 references indexed in Scilit:
- Abstracting definitional interpreters (functional pearl)Proceedings of the ACM on Programming Languages, 2017
- Static Analysis of Model TransformationsIEEE Transactions on Software Engineering, 2016
- Symbolic execution of high-level transformationsPublished by Association for Computing Machinery (ACM) ,2016
- Modular language implementation in Rascal – experience reportScience of Computer Programming, 2015
- Abstract Domains for Automated Reasoning about List-Manipulating Programs with Infinite DataLecture Notes in Computer Science, 2012
- The gentle art of levitationPublished by Association for Computing Machinery (ACM) ,2010
- Typed iterators for XMLPublished by Association for Computing Machinery (ACM) ,2008
- Stratego/XT 0.17. A language and toolset for program transformationScience of Computer Programming, 2008
- The TXL source transformation languageScience of Computer Programming, 2006
- Formal language, grammar and set-constraint-based program analysis by abstract interpretationPublished by Association for Computing Machinery (ACM) ,1995