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

Last updated on 1020327 15h41