Need to add (interfaces, classes, factory methods): self true false result contracts: ensures requires: part of function decl Need to implement all new expressions, statements. -- ABC: front end for C ast: this will have library functions and state like MPI_Send, blah blah blah SARL: symbolic algebra and reasoning library provides representation, manipulation of symbolic expressions interface to theorem provers, etc. GMC: generic model checker provides depth first search, printing traces, ... CIVL: Concurrency Intermeidate Verification Language ast: similar to ABC AST but simpler uses: (nothing) provides: AST notes: no type qualifiers or other complicated C stuff. functions can be defined in any scope eventually add pointer scope qualifiers, etc. provide a side-effect remover and ASTMerger (like a linker, for libraries) front: common interface for all CIVL front-ends uses: ast provides: FrontEnd notes: provides methods to parse a file and produce an AST civlc: grammar and parser for CIVL-C language uses: front, ast provides: CivlCFrontEnd notes: the grammar of the CIVL-C language should be very closely aligned with the CIVL AST. this module is like ABC, but results in a CIVL AST. also uses library files in lib could this use the AST preprocessor? lib: libraries written in CIVL-C: mp.civl, etc. how is state and definitions incorporated into the module? notes: this is not java source, just CIVL-C source c: translator from C code to CIVL AST uses: ABC, ast, front, civlc uses ABC to create ABC-AST, then translated that to CIVL-AST needs to translate library calls to CIVL libraries, e.g., MPI_Send -> CIVL_MP_send, etc. Hence needs to civlc to parse and construct library modules, then merge them needs to introduce scopes for MPI processes etc model: representation of a CIVL model, like in CVT uses: ast provides: Model, ModelBuilder notes: ModelBuilder translates AST to Model Model elements maintain back-pointers to AST nodes translates AST to Model state: representation and manipulation of states of a Model note: like CVT, but no buffers transition: predicate: kripke: