Welcome to CIVL, the Concurrency Intermediate Verification Language tool. CIVL is a Java project for verifying concurrent programs written in CIVL-C, which is a C dialect with extensions to concurrent language constructs. The CIVL project uses ABC, SARL and GMC. The CIVL tool can be used to perform a number of tasks, including the following:
- preprocess or pass a CIVL-C program;
- verify a CIVL-C program;
- run a CIVL-C program;
- replay traces for a program.
CIVL
), but most users will want to use CIVL
through the user interface (see UserInterface
). To use the
API, it is helpful to have some understanding of the modular structure
of CIVL. The CIVL source code is decomposed into modules, each with a
well-defined interface and set of responsibilities. Some of these
modules are decomposed further into sub-modules. The top-level modules
are:
- util
- responsibilities: simple general-purpose utility classes that do not use other parts of CIVL
- uses: nothing
- interface:
edu.udel.cis.vsl.civl.util.IF
- entry point: none
- config
- responsibilities: static configurations of the system
- uses: gmc
- interface:
edu.udel.cis.vsl.civl.config.IF
- entry point: CIVLConfiguration
- transform
- responsibilities: transformations of an AST
- uses: config, abc, sarl
- interface:
edu.udel.cis.vsl.civl.transform.IF
- entry point: CIVLTransform
- model
- responsibilities: definitions of the control flow graph representation of a CIVL-C program
- uses: util, config, abc, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.model.IF
- entry point: Models
- submodules
- expression
- responsibilities: definitions of various expressions of CIVL
- interface:
edu.udel.cis.vsl.civl.model.IF.expression
- entry point: none
- location
- responsibilities: definitions a location in the control flow graph of a CIVL-C program
- interface:
edu.udel.cis.vsl.civl.model.IF.location
- entry point: none
- statement
- responsibilities: definitions of various statements of CIVL
- interface:
edu.udel.cis.vsl.civl.model.IF.statement
- entry point: none
- type
- responsibilities: definitions of various types of CIVL
- interface:
edu.udel.cis.vsl.civl.model.IF.type
- entry point: none
- variable
- responsibilities: definitions of a variable of CIVL
- interface:
edu.udel.cis.vsl.civl.model.IF.variable
- entry point: none
- expression
- state
- responsibilities: creation and manipulation of states of a CIVL model.
- uses: config, model, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.state.IF
- entry point: States
- log
- responsibilities: data structures for logging errors during verification.
- uses: model, state, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.log.IF
- entry point: none
- dynamic
- responsibilities: general computations of symbolic expressions, including the pretty printing method.
- uses: util,model, state, log, sarl
- interface:
edu.udel.cis.vsl.civl.dynamic.IF
- entry point: Dynamics
- semantics
- responsibilities: implementation of the semantics of CIVL-C.
- uses: util, config, model, state, log, dynamic, sarl
- interface:
edu.udel.cis.vsl.civl.semantics.IF
- entry point: Semantics
- kripke
- responsibilities: implementation of the semantics of CIVL-C.
- uses: util, config, model, state, log, dynamic, semantics, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.kripke.IF
- entry point: Kripkes
- predicate
- responsibilities: definitions of predicates that are required to hold for any CIVL-C programs.
- uses: model, state, log, dynamic, semantics, kripke, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.predicate.IF
- entry point: none
- gui
- responsibilities: graphical interfaces for viewing counterexample traces.
- uses: model, state, dynamic, kripke, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.gui.IF
- entry point: none
- library
- responsibilities: base implementation of libraries.
- uses: model, state, log, dynamic, semantics, kripke, sarl
- interface:
edu.udel.cis.vsl.civl.library.IF
- entry point: none
- run
- responsibilities: parsing command line inputs and initial configurations of the tool.
- uses: kripke, model, state, transform, util, abc, gmc, sarl
- interface:
edu.udel.cis.vsl.civl.run.IF
- entry point: UserInterface
- main
- responsibilities: parsing command line inputs and initial configurations of the tool
- uses: run
- interface:
edu.udel.cis.vsl.civl
- entry point: CIVL
Package | Description |
---|---|
edu.udel.cis.vsl.civl |
The main package for CIVL, providing a command line interface and a
class "CIVL" that invokes all the components in the CIVL tool chain
to perform requested tasks.
|
edu.udel.cis.vsl.civl.analysis.IF |
Module analysis provides a list of analyzers for static/runtime analyzing of a program.
|
edu.udel.cis.vsl.civl.config.IF |
Module config provides static configurations of the CIVL tool.
|
edu.udel.cis.vsl.civl.dynamic.IF |
Module dynamic provides general computations of symbolic expressions,
including the pretty printing method.
|
edu.udel.cis.vsl.civl.kripke.IF |
Module kripke provides the definition of various
transitions and the enabler and state manager of CIVL.
|
edu.udel.cis.vsl.civl.log.IF |
Module log provides the data structure for logging errors during verification.
|
edu.udel.cis.vsl.civl.model.IF |
Module model defines a static model, i.e., the control flow graph, representation of a CIVL-C program.
|
edu.udel.cis.vsl.civl.model.IF.contract | |
edu.udel.cis.vsl.civl.model.IF.expression |
Submodule model.expression defines expression in CIVL.
|
edu.udel.cis.vsl.civl.model.IF.expression.reference | |
edu.udel.cis.vsl.civl.model.IF.location |
Submodule model.location defines a location in the control flow graph of CIVL.
|
edu.udel.cis.vsl.civl.model.IF.statement |
Submodule model.statement defines a statement of a CIVL-C program.
|
edu.udel.cis.vsl.civl.model.IF.type |
Submodule model.type defines types in CIVL.
|
edu.udel.cis.vsl.civl.model.IF.variable |
Submodule model.variable defines variables in CIVL.
|
edu.udel.cis.vsl.civl.predicate.IF |
Module predicate defines predicates that are required to hold for any CIVL-C programs.
|
edu.udel.cis.vsl.civl.run.IF |
Module run parses command line inputs and initializes the tool.
|
edu.udel.cis.vsl.civl.semantics.IF |
Module semantics implements the semantics of CIVL-C.
|
edu.udel.cis.vsl.civl.slice.IF | |
edu.udel.cis.vsl.civl.state.IF |
Module state is responsible for the creation and manipulation of
states of a CIVL model.
|
edu.udel.cis.vsl.civl.transform.IF |
Module transform defines various kinds of
transformations of an AST into a CIVL AST.
|
edu.udel.cis.vsl.civl.util.IF |
Module util provides various general-purpose utilities used by
CIVL.
|