bdd_ptr
Compile_BuildInitBdd(
node_ptr list_variables
)
- This function evaluates all the init statements
corresponding to the variables passed as argument. Moreover, the
number of states and the number of BDD nodes of the global initial
set are printed out.
bdd_ptr
Compile_BuildInvarBdd(
node_ptr list_variables,
add_ptr assumption
)
- This function evaluates all the model invariant
corresponding to the variables passed as argument. The result is
restricted to the set assumption using the Coudert and
Madre algorithm. Moreover the number of BDD nodes of the global set
of invariant are printed out.
CP_Ptr
Compile_BuildModelIwls95CP(
node_ptr list_variables,
Iwls95OptionStruct_t * Options,
add_ptr assumption
)
- Computes an implicitly conjoined transition
relation, in which clusters are ordered accordingly the heuristic
defined in IWLS95.
First computes the BDD representing the transition relation of the
next function of each scalar variable (next(x) := expr
). This initializes the set of clusters.
Then, the list of clusters is ordered, and if necesessary recombine
clusters to obtain a small number of clusters whose size in BDD
nodes is smaller than a given threshold. Then clusters are ordered
again.
- See Also
Compile_BuildModelMonolithic
Compile_BuildModelThreshold
bdd_ptr
Compile_BuildModelMonolithicBdd(
node_ptr list_variables,
bdd_ptr assumption
)
- Starting from the the list of variables builds
the corresponding transition relation BDD. The result is restricted to
the set assumption using the Coudert and Madre algorithm.
- See Also
Compile_CompileModel
CP_Ptr
Compile_BuildModelMonolithic(
node_ptr list_variables,
bdd_ptr assumption
)
- Starting from the the list of variables builds
the corresponding transition relation. The result is restricted to
the set assumption using the Coudert and Madre algorithm.
- See Also
Compile_CompileModel
CP_Ptr
Compile_BuildModelThreshold(
node_ptr list_variables,
int threshold,
bdd_ptr assumption
)
- This function builds the BDD representing the
implicitly conjoined transition relation. The third argument (that's
"assumption") is the set of states to which the transition relation
has to be restricted to.
- See Also
Compile_BuildModelMono
Compile_BuildModelIwls95
void
Compile_BuildVarsBdd(
)
- This function creates the ADD variables needed
to build the automaton. If an input order file is given as option,
then the ordering of variables is read from it, else the order in
which the variables appear in a depth first traversal of the
hierarchy is used. The symbolic name of the variable is stored in an
array in a position corresponding to the first index of the boolean
variable created to encode it. The boolean variables needed to
encode a scalar symbolic variable are grouped together, so that the
ordering methods do not modify the internal order of them. If the
input order file contains a subset of the variables of the model,
than the variables not specified in the ordering file are created at
the end of the given ordering following the order in which they
appear in a depth first traversal of the hierarchy. If the input
ordering file is a superset of the variables declared in the model,
than the variables not appearing in the model are discarded.
- Side Effects state_variables_add next_state_variables_add
num_of_state_variables are modified.
- See Also
Compile_EncodeVar
Compile_ReadOrder
dd_new_var_block
CP_Ptr
Compile_CPAddClusterAndFillSchedule(
CP_Ptr trans,
bdd_ptr tableau_bdd
)
- Add the LTL tableau as a new BDD cluster in the transition relation.
void
Compile_CheckProgram(
node_ptr procs,
node_ptr spec_expr,
node_ptr ltlspec_expr,
node_ptr invar_expr,
node_ptr fair_expr
)
- The main routine performing all the
check on the read model.
First it loops on the body of processes to verify that there are no
multiple assignments and circular definitions.
Then performs circularity checks on the list of SPECS,
LTL SPECS, INVARIANT SPECS, FAIRNESS constraints.
The last operation performed consists in detecting multiple
assignments between different modules.
int
Compile_CheckWff(
node_ptr wff,
node_ptr context
)
- It analizes a formula on the basis of its arguments and
operators and returns 0 if the formula is ok, 1 otherwise
- See Also
check_wff_recur
void
Compile_EncodeVarsInit(
)
- Initializes the data structure relative to BDD
variables, i.e. the array used to store correspondence between
variable names and bdd variables, and the array used to shift
forward and backward during image computation.
add_ptr
Compile_EncodeVar(
node_ptr name,
node_ptr range,
boolean is_input,
boolean flag
)
- This function encodes the variable name,
whose range is range, into BDD variables. The boolean
variables created are grouped together, in such a way that the BDD
dynamic reordering consider them as a single block. flag is
used to indicate if the created variables have to be inserted in the
array used to extract complete minterms from a BDD.
- See Also
CompileEncodeVarRecur
void
Compile_End(
)
- Shut down the compile package
void
Compile_FlattenHierarchy(
node_ptr root_name, the ATOM
representing the module at the top of the hierarchy.
node_ptr name, the name of the module at the top of the hierarchy.
node_ptr * trans, the list of TRANS actually recognized
node_ptr * init, the list of INIT actually recognized
node_ptr * invar, the list of INVAR actually recognized
node_ptr * spec, the list of SPEC actually recognized
node_ptr * compute, the list of COMPUTE actually recognized
node_ptr * ltl_spec, the list of LTLSPEC actually recognized
node_ptr * invar_spec, the list of INVARSPEC actually recognized
node_ptr * fair, the list of FAIR actually recognized
node_ptr * procs, the list of processes actually recognized
node_ptr actual the actual module arguments
)
- Traverses the module hierarchy and extracts the
information needed to compile the automaton. The hierarchy of modules
is flattened, the variables are contextualized, the various parts of
the model read in are extracted (i.e. the formulae to be verified,
the initial expressions, ...)...
Moreover all these informations are flattened.
- Side Effects None
- See Also
compileFlattenHierarchy
node_ptr
Compile_FlattenSexpExpandDefine(
node_ptr sexp,
node_ptr context
)
- Flattens an expression and expands defined symbols.
- See Also
Flatten_GetDefinition
node_ptr
Compile_FlattenSexp(
node_ptr sexp,
node_ptr context
)
- Builds the flattened version of an
expression. It does not expand defined symbols with the
corresponding body.
- See Also
Flatten_GetDefinition
void
Compile_FlattenTableau(
node_ptr root_name, the ATOM
representing the module at the top of the hierarchy.
node_ptr name, the name of the module at the top of the hierarchy.
node_ptr * trans, the list of TRANS actually recognized
node_ptr * init, the list of INIT actually recognized
node_ptr * invar, the list of INVAR actually recognized
node_ptr * spec, the list of SPEC actually recognized
node_ptr * compute, the list of COMPUTE actually recognized
node_ptr * ltl_spec, the list of LTLSPEC actually recognized
node_ptr * invar_spec, the list of INVARSPEC actually recognized
node_ptr * fair, the list of FAIR actually recognized
node_ptr * procs, the list of processes actually recognized
node_ptr actual the actual module arguments
)
- Traverses the module tableau and extracts the
information needed to compile the automaton. The tableau of modules
is flattened, the variables are contextualized, the various parts of
the model read in are extracted (i.e. the formulae to be verified,
the initial expressions, ...)...
Moreover all these informations are flattened.
- Side Effects None
- See Also
Compile_FlattenHierarchy
compileFlattenHierarchy
node_ptr
Compile_GetOrdering(
)
- It returns the list of variables corresponding
to the current order of variables in the system.
void
Compile_InitializeBuildModel(
)
- Checks correctness of the NuSMV progrma if not yet
checked. Initializes the build model if not yet initialized.
- Side Effects required
- See Also
optional
void
Compile_InitializeSexpBuildModel(
node_ptr all_variables
)
- optional
- Side Effects required
- See Also
optional
void
Compile_Init(
)
- Initializes the compile package.
node_ptr
Compile_ReadOrder(
const char * input_order_file
)
- This function reads from a file the variable
order to be used in the system. The grammar of the order file is as
follows:
orderfile ::= variable NL
variable ::= complex_atom
complex_atom ::= simple_atom | simple_atom DOT complex_atom
simple_atom ::= atom
Where NL is a new line, and DOT is the period character.
- See Also
write_order
int
Compile_WriteFlattenBool(
FILE * out,
Fsm_SexpPtr fsm,
cmp_struct_ptr s
)
- [Prints on the specified file the flatten
version of an SMV model.
int
Compile_WriteFlatten(
FILE * out,
cmp_struct_ptr s
)
- [Prints on the specified file the flatten
version of an SMV model.
void
Compile_WriteOrder(
const char * output_order_file_name,
int force
)
- This function writes the variable order
currently in use in the system in the specified output file. If the
option "-reorder" has been used then, then this function exits (if
the batch interaction mode is used). The file generated as output
can be used as input order file for next computations. If the specified
output file is an empty string ("" or NULL, see util_is_string_null) output
is redirected to stdout.
- See Also
Compile_ReadOrder