1 Introduction

Racket Abstract Interpretation (RAI), is a code analysis and generation system built around a domain specific language (DSL).

The DSL is a purely functional dataflow language aimed at describing digital signal processing (DSP) algorithms, and is embedded in the Racket programming language as
#lang s-exp rai/stream

The system allows for multiple abstract interpretations (AI) of programs expressed in the DSL. Some interpretations included are

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.