8 Programmer's Manual
8.1 Architecture of Blast
Blast uses the CIL infrastructure
as the front end to read in C programs. The programs are internally represented
as control-flow automata (implemented in module CFA).
Sets of states are represented by the Region data structure. The Region
module represents sets of states as boolean formulas over a set of base predicates
and allows boolean operations on regions, and checks for emptiness and inclusion.
The Abstraction functor takes the Region module and the CFA module,
providing in addition (concrete and abstract) pre and post operations,
and methods to analyze counterexamples.
Using the Abstraction module, the LazyAbstraction functor implements the model
checking algorithm at a high level of abstraction.
Blast uses the Simplify Theorem Prover
and the Vampyre Proof-Generating Theorem
Prover as underlying decision procedures.
Boolean formula manipulations are done using the
Colorado University Decision Diagram package.
8.2 API Documentation
The architecture of Blast is described in the file src/blastArch.ml.
We also have an online documentation extracted from
the code. We
index below the main types that are used to represent C programs in CIL: