Automating Abstract Interpretation of Abstract Machines

04/29/2015
by   James Ian Johnson, et al.
0

Static program analysis is a valuable tool for any programming language that people write programs in. The prevalence of scripting languages in the world suggests programming language interpreters are relatively easy to write. Users of these languages lament their inability to analyze their code, therefore programming language analyzers are not easy to write. This thesis investigates a systematic method of creating abstract interpreters from traditional interpreters, called Abstracting Abstract Machines. Abstract interpreters are difficult to develop due to technical, theoretical, and pragmatic problems. Technical problems include engineering data structures and algorithms. I show that modest and simple changes to the mathematical presentation of abstract machines result in 1000 times better running time - just seconds for moderately sized programs. In the theoretical realm, abstraction can make correctness difficult to ascertain. I provide proof techniques for proving the correctness of regular, pushdown, and stack-inspecting pushdown models of abstract computation by leaving computational power to an external factor: allocation. Even if we don't trust the proof, we can run models concretely against test suites to better trust them. In the pragmatic realm, I show that the systematic process of abstracting abstract machines is automatable. I develop a meta-language for expressing abstract machines similar to other semantics engineering languages. The language's special feature is that it provides an interface to abstract allocation. The semantics guarantees that if allocation is finite, then the semantics is a sound and computable approximation of the concrete semantics.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
09/13/2023

Deriving Abstract Interpreters from Skeletal Semantics

This paper describes a methodology for defining an executable abstract i...
research
05/14/2013

Abstracting Abstract Control (Extended)

The strength of a dynamic language is also its weakness: run-time flexib...
research
11/15/2012

Optimizing Abstract Abstract Machines

The technique of abstracting abstract machines (AAM) provides a systemat...
research
09/25/2018

Skeletal Semantics and their Interpretations

Many meta-languages have been proposed for writing rule-based operationa...
research
05/07/2021

On Abstract Machine Semantics for Proto-Quipper-M

Quipper is a domain-specific programming language for the description of...
research
05/28/2020

Sound Regular Corecursion in coFJ

The aim of the paper is to provide solid foundations for a programming p...
research
11/01/2019

Weird Machines as Insecure Compilation

Weird machines—the computational models accessible by exploiting securit...

Please sign up or login with your details

Forgot password? Click here to reset