ACL2 Type Reasoning as Abstract Interpretation.


Sponsor

Pete Manolios
manolios@cc.gatech.edu
CCB 149

Area Formal Methods

Problem

The ACL2 system consists of an untyped programming language (based on applicative Common Lisp), a logic, and a theorem prover. Extensive documentation is available from the ACL2 home page.

The ACL2 universe contains the objects which ACL2 programs manipulate, including numbers, strings, symbols, lists, etc. The universe is partitioned into fourteen primitive types and ACL2 has algorithms for deducing the type of expressions, e.g., if x is a variable whose type is "positive integer" then ACL2 can deduce that (+ 3 x) is an expression whose type is "positive integer" and that (- 3 x) is an expression whose type is "integer". ACL2 allows one to extend the type inferences that it can make (by proving theorems), but it does not allow one to extend the primitive, built-in types.

The theory of abstract interpretation is concerned with the construction of algorithms for analyzing approximations of programs. The idea is to define an abstract domain with abstract operators, to convert concrete programs into programs operating on this abstract domain, to analyze the abstracted programs, and to "lift" the results to the original program. Type algorithms, data-flow algorithms, and other types of static analysis can be thought of as abstract interpretation. For a good introduction to the theory, see pages 9-39 of Abstract Interpretation and Application to Logic Programs by Patrick and Radia Cousot.

For this project you should: read about and understand type reasoning in ACL2 and the basics of abstract interpretation. Then, give as complete an answer as you can to:

Evaluation

The evaluation will be based on the report. Late reports will not be accepted. Given that students have different backgrounds and levels of mathematical maturity, if it is clear that the project was given serious consideration, I will assign an A. One way that I can determine that the project was considered seriously is if you talk to me.