00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00039 #ifndef __NUSMV_CORE_BMC_BMC_BMC_H__
00040 #define __NUSMV_CORE_BMC_BMC_BMC_H__
00041
00042 #include "nusmv/core/bmc/bmcDump.h"
00043 #include "nusmv/core/bmc/bmc.h"
00044
00045 #include "nusmv/core/fsm/be/BeFsm.h"
00046 #include "nusmv/core/fsm/sexp/SexpFsm.h"
00047 #include "nusmv/core/trace/Trace.h"
00048
00049 #include "nusmv/core/utils/utils.h"
00050 #include "nusmv/core/prop/Prop.h"
00051
00052
00053
00054
00055
00056
00062 typedef enum {BMC_TRUE, BMC_FALSE, BMC_UNKNOWN, BMC_ERROR} Bmc_result;
00063
00071 typedef enum {
00072 BMC_INVAR_BACKWARD_CLOSURE,
00073 BMC_INVAR_FORWARD_CLOSURE
00074 } bmc_invar_closure_strategy;
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00106 int Bmc_GenSolveLtl(NuSMVEnv_ptr env, Prop_ptr ltlprop,
00107 const int k, const int relative_loop,
00108 const boolean must_inc_length,
00109 const boolean must_solve,
00110 const Bmc_DumpType dump_type,
00111 const char* dump_fname_template);
00112
00122 int Bmc_GenSolveInvar(NuSMVEnv_ptr env,
00123 Prop_ptr invarprop,
00124 const boolean must_solve,
00125 const Bmc_DumpType dump_type,
00126 const char* dump_fname_template);
00127
00138 Bmc_result Bmc_induction_algorithm(const NuSMVEnv_ptr env,
00139 BeFsm_ptr be_fsm,
00140 node_ptr binvarspec,
00141 Trace_ptr* trace_index,
00142 NodeList_ptr symbols);
00143
00153 Bmc_result
00154 Bmc_een_sorensson_algorithm(const NuSMVEnv_ptr env,
00155 BeFsm_ptr be_fsm,
00156 BoolSexpFsm_ptr bool_fsm,
00157 node_ptr binvarspec,
00158 int max_k,
00159 const Bmc_DumpType dump_type,
00160 const char* dump_fname_template,
00161 Prop_ptr pp,
00162 Prop_ptr oldprop,
00163 boolean print_steps,
00164 boolean use_extra_step,
00165 Trace_ptr* trace);
00166
00176 Bmc_result
00177 Bmc_een_sorensson_algorithm_without_dump(const NuSMVEnv_ptr env,
00178 BeFsm_ptr be_fsm,
00179 BoolSexpFsm_ptr bool_fsm,
00180 node_ptr binvarspec,
00181 int max_k,
00182 boolean use_extra_step,
00183 Trace_ptr* trace);
00184
00194 int
00195 Bmc_GenSolveInvar_EenSorensson(NuSMVEnv_ptr env,
00196 Prop_ptr invarprop,
00197 const int max_k,
00198 const Bmc_DumpType dump_type,
00199 const char* dump_fname_template,
00200 boolean use_extra_step);
00201
00202
00203
00212 int Bmc_GenSolveLtlInc(NuSMVEnv_ptr env, Prop_ptr ltlprop,
00213 const int k, const int relative_loop,
00214 const boolean must_inc_length);
00215
00223 int Bmc_GenSolveInvarZigzag(NuSMVEnv_ptr env,
00224 Prop_ptr invarprop, const int max_k);
00225
00236 int Bmc_GenSolveInvarDual(NuSMVEnv_ptr env,
00237 Prop_ptr invarprop, const int max_k,
00238 bmc_invar_closure_strategy strategy);
00239
00249 int Bmc_GenSolveInvarFalsification(NuSMVEnv_ptr env, Prop_ptr invarprop,
00250 const int max_k, int step_k);
00251
00252 #endif
00253