#include "nusmv/core/bmc/bmcDump.h"
#include "nusmv/core/bmc/bmc.h"
#include "nusmv/core/fsm/be/BeFsm.h"
#include "nusmv/core/fsm/sexp/SexpFsm.h"
#include "nusmv/core/trace/Trace.h"
#include "nusmv/core/utils/utils.h"
#include "nusmv/core/prop/Prop.h"
Go to the source code of this file.
Enumerations | |
enum | bmc_invar_closure_strategy { BMC_INVAR_BACKWARD_CLOSURE, BMC_INVAR_FORWARD_CLOSURE } |
BMC invariant checking closure strategies. More... | |
enum | Bmc_result { BMC_TRUE, BMC_FALSE, BMC_UNKNOWN, BMC_ERROR } |
High-level functionalities interface file. More... | |
Functions | |
Bmc_result | Bmc_een_sorensson_algorithm (const NuSMVEnv_ptr env, BeFsm_ptr be_fsm, BoolSexpFsm_ptr bool_fsm, node_ptr binvarspec, int max_k, const Bmc_DumpType dump_type, const char *dump_fname_template, Prop_ptr pp, Prop_ptr oldprop, boolean print_steps, boolean use_extra_step, Trace_ptr *trace) |
Solve and INVARSPEC problems by using Een/Sorensson method non-incrementally. | |
Bmc_result | Bmc_een_sorensson_algorithm_without_dump (const NuSMVEnv_ptr env, BeFsm_ptr be_fsm, BoolSexpFsm_ptr bool_fsm, node_ptr binvarspec, int max_k, boolean use_extra_step, Trace_ptr *trace) |
Solve and INVARSPEC problems by using Een/Sorensson method non-incrementally and without dumping the problem. | |
int | Bmc_GenSolveInvar (NuSMVEnv_ptr env, Prop_ptr invarprop, const boolean must_solve, const Bmc_DumpType dump_type, const char *dump_fname_template) |
Generates DIMACS version and/or solve and INVARSPEC problems. | |
int | Bmc_GenSolveInvar_EenSorensson (NuSMVEnv_ptr env, Prop_ptr invarprop, const int max_k, const Bmc_DumpType dump_type, const char *dump_fname_template, boolean use_extra_step) |
Solve and INVARSPEC problems by using Een/Sorensson method non-incrementally. | |
int | Bmc_GenSolveInvarDual (NuSMVEnv_ptr env, Prop_ptr invarprop, const int max_k, bmc_invar_closure_strategy strategy) |
Solve an INVARSPEC problems wiht algorithm Dual. | |
int | Bmc_GenSolveInvarFalsification (NuSMVEnv_ptr env, Prop_ptr invarprop, const int max_k, int step_k) |
Solve an INVARSPEC problems wiht algorithm Fasification. | |
int | Bmc_GenSolveInvarZigzag (NuSMVEnv_ptr env, Prop_ptr invarprop, const int max_k) |
Solve an INVARSPEC problems with algorithm ZigZag. | |
int | Bmc_GenSolveLtl (NuSMVEnv_ptr env, Prop_ptr ltlprop, const int k, const int relative_loop, const boolean must_inc_length, const boolean must_solve, const Bmc_DumpType dump_type, const char *dump_fname_template) |
Given a LTL property generates and solve the problems for all Ki (k_min<=i<=k_max). If bIncreaseK is 0 then k_min==k_max==k and only one problem is generated. If bIncreaseK is 1 then k_min == 0 and k_max == k. Each problem Ki takes into account of all possible loops from k_min to Ki if loopback is '*' (BMC_ALL_LOOPS). Also see the Bmc_GenSolve_Action possible values. Returns 1 if solver could not be created, 0 if everything went smooth. | |
int | Bmc_GenSolveLtlInc (NuSMVEnv_ptr env, Prop_ptr ltlprop, const int k, const int relative_loop, const boolean must_inc_length) |
Solves LTL problem the same way as the original Bmc_GenSolveLtl but just adds BE representing the path incrementaly. | |
Bmc_result | Bmc_induction_algorithm (const NuSMVEnv_ptr env, BeFsm_ptr be_fsm, node_ptr binvarspec, Trace_ptr *trace_index, NodeList_ptr symbols) |
Apply Induction algorithm on th given FSM to check the given NNFd invarspec. |
enum Bmc_result |
Bmc_result Bmc_een_sorensson_algorithm | ( | const NuSMVEnv_ptr | env, | |
BeFsm_ptr | be_fsm, | |||
BoolSexpFsm_ptr | bool_fsm, | |||
node_ptr | binvarspec, | |||
int | max_k, | |||
const Bmc_DumpType | dump_type, | |||
const char * | dump_fname_template, | |||
Prop_ptr | pp, | |||
Prop_ptr | oldprop, | |||
boolean | print_steps, | |||
boolean | use_extra_step, | |||
Trace_ptr * | trace | |||
) |
Solve and INVARSPEC problems by using Een/Sorensson method non-incrementally.
Returns a Bmc_result according to the result of the checking
Bmc_result Bmc_een_sorensson_algorithm_without_dump | ( | const NuSMVEnv_ptr | env, | |
BeFsm_ptr | be_fsm, | |||
BoolSexpFsm_ptr | bool_fsm, | |||
node_ptr | binvarspec, | |||
int | max_k, | |||
boolean | use_extra_step, | |||
Trace_ptr * | trace | |||
) |
Solve and INVARSPEC problems by using Een/Sorensson method non-incrementally and without dumping the problem.
Returns a Bmc_result according to the result of the checking
int Bmc_GenSolveInvar | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | invarprop, | |||
const boolean | must_solve, | |||
const Bmc_DumpType | dump_type, | |||
const char * | dump_fname_template | |||
) |
Generates DIMACS version and/or solve and INVARSPEC problems.
Returns 1 if solver could not be created, 0 if everything went smooth
int Bmc_GenSolveInvar_EenSorensson | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | invarprop, | |||
const int | max_k, | |||
const Bmc_DumpType | dump_type, | |||
const char * | dump_fname_template, | |||
boolean | use_extra_step | |||
) |
Solve and INVARSPEC problems by using Een/Sorensson method non-incrementally.
Returns 1 if solver could not be created, 0 if everything went smooth
int Bmc_GenSolveInvarDual | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | invarprop, | |||
const int | max_k, | |||
bmc_invar_closure_strategy | strategy | |||
) |
Solve an INVARSPEC problems wiht algorithm Dual.
The function tries to solve the problem with not more then max_k transitions. If the problem is not solved after max_k transition then the function returns 0.
If the no_closure flag is true, only the \"base\" encoding is used
int Bmc_GenSolveInvarFalsification | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | invarprop, | |||
const int | max_k, | |||
int | step_k | |||
) |
Solve an INVARSPEC problems wiht algorithm Fasification.
The function tries to solve the problem with not more then max_k transitions. If the problem is not solved after max_k transition then the function returns 0.
int Bmc_GenSolveInvarZigzag | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | invarprop, | |||
const int | max_k | |||
) |
Solve an INVARSPEC problems with algorithm ZigZag.
The function will run not more then max_k transitions, then if the problem is not proved the function just returns 0
int Bmc_GenSolveLtl | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | ltlprop, | |||
const int | k, | |||
const int | relative_loop, | |||
const boolean | must_inc_length, | |||
const boolean | must_solve, | |||
const Bmc_DumpType | dump_type, | |||
const char * | dump_fname_template | |||
) |
Given a LTL property generates and solve the problems for all Ki (k_min<=i<=k_max). If bIncreaseK is 0 then k_min==k_max==k and only one problem is generated. If bIncreaseK is 1 then k_min == 0 and k_max == k. Each problem Ki takes into account of all possible loops from k_min to Ki if loopback is '*' (BMC_ALL_LOOPS).
Also see the Bmc_GenSolve_Action possible values. Returns 1 if solver could not be created, 0 if everything went smooth.
Returns 1 if solver could not be created, 0 if everything went smooth
int Bmc_GenSolveLtlInc | ( | NuSMVEnv_ptr | env, | |
Prop_ptr | ltlprop, | |||
const int | k, | |||
const int | relative_loop, | |||
const boolean | must_inc_length | |||
) |
Solves LTL problem the same way as the original Bmc_GenSolveLtl but just adds BE representing the path incrementaly.
Bmc_result Bmc_induction_algorithm | ( | const NuSMVEnv_ptr | env, | |
BeFsm_ptr | be_fsm, | |||
node_ptr | binvarspec, | |||
Trace_ptr * | trace_index, | |||
NodeList_ptr | symbols | |||
) |
Apply Induction algorithm on th given FSM to check the given NNFd invarspec.
Returns BMC_TRUE if the property is true, BMC_UNKNOWN if the induction failed, if the induction fails and the counter example option is activated, then a trace is registered in the global trace manager and its index is stored in trace_index parameter.