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
00038 #ifndef __NUSMV_CORE_BMC_BMC_H__
00039 #define __NUSMV_CORE_BMC_BMC_H__
00040
00041
00042
00043 #include "nusmv/core/bmc/bmcBmc.h"
00044 #include "nusmv/core/bmc/bmcPkg.h"
00045
00046 #include "nusmv/core/bmc/bmcGen.h"
00047 #include "nusmv/core/bmc/bmcDump.h"
00048 #include "nusmv/core/bmc/bmcTableau.h"
00049 #include "nusmv/core/bmc/bmcModel.h"
00050 #include "nusmv/core/bmc/bmcConv.h"
00051 #include "nusmv/core/bmc/bmcCheck.h"
00052 #include "nusmv/core/bmc/bmcUtils.h"
00053
00054
00055
00056
00057
00058
00059
00060
00066 #define BMC_OPT_INITIALIZED "__bmc_opt_initialized__"
00067
00073 #define BMC_MODE "bmc_mode"
00074
00080 #define BMC_DIMACS_FILENAME "bmc_dimacs_filename"
00081
00087 #define BMC_INVAR_DIMACS_FILENAME "bmc_invar_dimacs_filename"
00088
00094 #define BMC_PB_LENGTH "bmc_length"
00095
00101 #define BMC_PB_LOOP "bmc_loopback"
00102
00108 #define BMC_INVAR_ALG "bmc_invar_alg"
00109
00110 #if NUSMV_HAVE_INCREMENTAL_SAT
00111
00117 #define BMC_INC_INVAR_ALG "bmc_inc_invar_alg"
00118 #endif
00119
00125 #define BMC_OPTIMIZED_TABLEAU "bmc_optimized_tableau"
00126
00132 #define BMC_FORCE_PLTL_TABLEAU "bmc_force_pltl_tableau"
00133
00139 #define BMC_SBMC_IL_OPT "bmc_sbmc_il_opt"
00140
00146 #define BMC_SBMC_GF_FG_OPT "bmc_sbmc_gf_fg_opt"
00147
00153 #define BMC_SBMC_CACHE_OPT "bmc_sbmc_cache_opt"
00154
00160 #define BMC_HAS_TO_SOLVE true
00161
00168 #define BMC_INVAR_ALG_CLASSIC "classic"
00169
00175 #define BMC_INVAR_ALG_EEN_SORENSSON "een-sorensson"
00176
00182 #define BMC_INVAR_ALG_FALSIFICATION "falsification"
00183
00189 #define BMC_INC_INVAR_ALG_DUAL "dual"
00190
00196 #define BMC_INC_INVAR_ALG_ZIGZAG "zigzag"
00197
00203 #define BMC_INC_INVAR_ALG_FALSIFICATION "falsification"
00204
00210 #define BMC_INC_INVAR_ALG_INTERP_SEQ "interp_seq"
00211
00217 #define BMC_INC_INVAR_ALG_INTERPOLANTS "interpolants"
00218
00224 #define BMC_INVAR_BACKWARD "backward"
00225
00231 #define BMC_INVAR_FORWARD "forward"
00232
00238 #define BMC_WATCHDOG_NAME "bmc_watchdog"
00239
00240
00241
00242
00243
00251 typedef enum {
00252 ALG_UNDEFINED,
00253 ALG_CLASSIC,
00254 ALG_EEN_SORENSSON,
00255 ALG_FALSIFICATION,
00256 ALG_DUAL,
00257 ALG_ZIGZAG,
00258
00259 ALG_INTERP_SEQ,
00260 ALG_INTERPOLANTS,
00261 } bmc_invar_algorithm;
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00280
00281
00282
00283
00284
00285
00286
00292 void set_bmc_mode(OptsHandler_ptr);
00293
00299 void unset_bmc_mode(OptsHandler_ptr);
00300
00306 boolean opt_bmc_mode(OptsHandler_ptr);
00307
00313 char* get_bmc_dimacs_filename(OptsHandler_ptr);
00314
00320 void set_bmc_dimacs_filename(OptsHandler_ptr, char *);
00321
00327 char* get_bmc_invar_dimacs_filename(OptsHandler_ptr);
00328
00334 void set_bmc_invar_dimacs_filename(OptsHandler_ptr, char *);
00335
00341 void set_bmc_pb_length(OptsHandler_ptr opt, const int k);
00342
00348 int get_bmc_pb_length(OptsHandler_ptr);
00349
00355 void set_bmc_pb_loop(OptsHandler_ptr opt, const char* loop);
00356
00362 const char* get_bmc_pb_loop(OptsHandler_ptr);
00363
00369 void set_bmc_invar_alg(OptsHandler_ptr opt, const char* loop);
00370
00376 const char* get_bmc_invar_alg(OptsHandler_ptr);
00377 #if NUSMV_HAVE_INCREMENTAL_SAT
00378
00384 void set_bmc_inc_invar_alg(OptsHandler_ptr opt, const char* loop);
00385
00391 const char* get_bmc_inc_invar_alg(OptsHandler_ptr);
00392 #endif
00393
00399 void set_bmc_optimized_tableau(OptsHandler_ptr);
00400
00406 void unset_bmc_optimized_tableau(OptsHandler_ptr);
00407
00413 boolean opt_bmc_optimized_tableau(OptsHandler_ptr);
00414
00420 void set_bmc_force_pltl_tableau(OptsHandler_ptr);
00421
00427 void unset_bmc_force_pltl_tableau(OptsHandler_ptr);
00428
00434 boolean opt_bmc_force_pltl_tableau(OptsHandler_ptr);
00435
00436
00437
00438
00444 void set_bmc_sbmc_gf_fg_opt(OptsHandler_ptr opt);
00445
00451 void unset_bmc_sbmc_gf_fg_opt(OptsHandler_ptr opt);
00452
00458 boolean opt_bmc_sbmc_gf_fg_opt(OptsHandler_ptr opt);
00459
00465 void set_bmc_sbmc_il_opt(OptsHandler_ptr opt);
00466
00472 void unset_bmc_sbmc_il_opt(OptsHandler_ptr opt);
00473
00479 boolean opt_bmc_sbmc_il_opt(OptsHandler_ptr opt);
00480
00486 void set_bmc_sbmc_cache(OptsHandler_ptr opt);
00487
00493 void unset_bmc_sbmc_cache(OptsHandler_ptr opt);
00494
00500 boolean opt_bmc_sbmc_cache(OptsHandler_ptr opt);
00501
00502
00505 #endif