1 Introduction
Racket Abstract Interpretation (RAI), is a code analysis and generation system built around a domain specific language (DSL).
#lang s-exp rai/stream
The system allows for multiple abstract interpretations (AI) of programs expressed in the DSL. Some interpretations included are
Scheme code for interactive exploration
Dependency-free C code to run on small target systems
linear(ized) transfer function for frequency analysis
Automatic Differentiation
Racklog program for logic analysis
Symbolic mathematical expressions
DSL programs are represented as abstract syntax, parameterized by a structure describing the implementation of the language primitives. Writing a new interpretation involves the execution of a program parameterized by such a description, often in some form of context.
Program interpretations can be constructed to be composable, i.e. an iterpretation can transform a RAI program into another RAI program.