module Ast:sig
..end
Abstract syntax tree and transition systems
typednf =
Types.SAtom.t list
Disjunctive normal form: each element of the list is a disjunct
typetype_constructors =
Hstring.t * Hstring.t list
Type and constructors declaration: ("t", ["A";"B"])
represents the
declaration of type t
with two constructors A
and B
. If the
list of constructors is empty, the type t
is defined abstract.
typeswts =
(Types.SAtom.t * Types.Term.t) list
The type of case switches case | c1 : t1 | c2 : t2 | _ : tn
type
glob_update =
| |
UTerm of |
|||
| |
UCase of |
(* | Updates of global variables, can be a term or a case construct. | *) |
type
update = {
|
up_loc : |
(* | location information | *) |
|
up_arr : |
(* | Name of array to update (ex. | *) |
|
up_arg : |
(* | list of universally quantified variables | *) |
|
up_swts : |
(* | condition (conjunction)(ex. | *) |
conditionnal updates with cases, ex. A[j] := case | C : t | _ ...
type
transition_info = {
|
tr_name : |
(* | name of the transition | *) |
|
tr_args : |
(* | existentially quantified parameters of the transision | *) |
|
tr_reqs : |
(* | guard | *) |
|
tr_ureq : |
(* | global condition of the guard, i.e. universally quantified DNF | *) |
|
tr_lets : |
|||
|
tr_assigns : |
(* | updates of global variables | *) |
|
tr_upds : |
(* | updates of arrays | *) |
|
tr_nondets : |
(* | non deterministic updates (only for global variables) | *) |
|
tr_loc : |
(* | location information | *) |
type of parameterized transitions
typetransition_func =
Types.Term.t -> Types.op_comp -> Types.Term.t -> Types.Atom.t
functionnal form, computed during typing phase
type
transition = {
|
tr_info : |
|
tr_tau : |
|
tr_reset : |
type of parameterized transitions with function
type
system = {
|
globals : |
|
consts : |
|
arrays : |
|
type_defs : |
|
init : |
|
invs : |
|
unsafe : |
|
trans : |
type of untyped transition systems constructed by parsing
type
kind =
| |
Approx |
(* | approximation | *) |
| |
Orig |
(* | original unsafe formula | *) |
| |
Node |
(* | reguar node | *) |
| |
Inv |
(* | or user supplied invariant | *) |
the kind of nodes
type
node_cube = {
|
cube : |
(* | the associated cube | *) |
|
tag : |
(* | a unique tag (negative for approximations and positive otherwise) | *) |
|
kind : |
(* | the kind of the node | *) |
|
depth : |
(* | its depth in the search tree | *) |
|
mutable deleted : |
(* | flag changed when the a-posteriori
simplification detects subsumption
(see | *) |
|
from : |
(* | history of the node | *) |
the type of nodes, i.e. cubes with extra information
typetrace_step =
transition_info * Variable.t list * node_cube
type of elementary steps of error traces
typetrace =
trace_step list
type of error traces, also the type of history of nodes
type
init_instance = {
|
init_cdnf : |
(* | DNFs for initial states | *) |
|
init_cdnf_a : |
(* | DNFs for initial states in array form | *) |
|
init_invs : |
(* | Instantiated negated user supplied invariants | *) |
Type of instantiated initial formulas
type
t_system = {
|
t_globals : |
(* | Global variables | *) |
|
t_consts : |
(* | Existential constants | *) |
|
t_arrays : |
(* | Array names | *) |
|
t_init : |
(* | Formula describing the initial states of the system, universally quantified DNF : \forall i. c1 \/ c2 \/ ... | *) |
|
t_init_instances : |
(* | pre-computed instances of the initial formula with invariants | *) |
|
t_invs : |
(* | user supplied invariants in negated form | *) |
|
t_unsafe : |
(* | unsafe formulas (in the form of cubes | *) |
|
t_trans : |
(* | transition relation in the form of a list of transitions | *) |
type of typed transition systems