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_SBMC_SBMC_STRUCTS_H__
00039 #define __NUSMV_CORE_BMC_SBMC_SBMC_STRUCTS_H__
00040
00041
00042 #include "nusmv/core/node/node.h"
00043
00044 #include "nusmv/core/utils/utils.h"
00045 #include "nusmv/core/utils/list.h"
00046 #include "nusmv/core/utils/assoc.h"
00047 #include "nusmv/core/utils/array.h"
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00065 typedef struct state_vars_struct_TAG state_vars_struct;
00066
00073 typedef struct sbmc_node_info_struct sbmc_node_info;
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00092
00093
00094
00095
00103 state_vars_struct* sbmc_state_vars_create(const NuSMVEnv_ptr env);
00104
00112 void sbmc_state_vars_destroy(state_vars_struct* svs);
00113
00119 lsList sbmc_state_vars_get_trans_state_vars(const state_vars_struct * ss);
00120
00128 node_ptr sbmc_state_vars_get_l_var(const state_vars_struct * ss);
00129
00137 node_ptr sbmc_state_vars_get_LoopExists_var(const state_vars_struct * ss);
00138
00146 node_ptr sbmc_state_vars_get_LastState_var(const state_vars_struct * ss);
00147
00155 lsList sbmc_state_vars_get_translation_vars_pd0(const state_vars_struct * ss);
00156
00164 lsList sbmc_state_vars_get_translation_vars_pdx(const state_vars_struct * ss);
00165
00173 lsList sbmc_state_vars_get_translation_vars_aux(const state_vars_struct * ss);
00174
00182 lsList sbmc_state_vars_get_formula_state_vars(const state_vars_struct * ss);
00183
00191 lsList sbmc_state_vars_get_formula_input_vars(const state_vars_struct * ss);
00192
00200 lsList sbmc_state_vars_get_simple_path_system_vars(const state_vars_struct * ss);
00201
00209 void sbmc_state_vars_set_trans_state_vars(state_vars_struct * ss, lsList f);
00210
00218 void sbmc_state_vars_set_l_var(state_vars_struct * ss, node_ptr f);
00219
00227 void sbmc_state_vars_set_LoopExists_var(state_vars_struct * ss, node_ptr f);
00228
00236 void sbmc_state_vars_set_LastState_var(state_vars_struct * ss, node_ptr f);
00237
00245 void sbmc_state_vars_set_translation_vars_pd0(state_vars_struct * ss, lsList f);
00246
00254 void sbmc_state_vars_set_translation_vars_pdx(state_vars_struct * ss, lsList f);
00255
00263 void sbmc_state_vars_set_translation_vars_aux(state_vars_struct * ss, lsList f);
00264
00272 void sbmc_state_vars_set_formula_state_vars(state_vars_struct * ss, lsList f);
00273
00281 void sbmc_state_vars_set_formula_input_vars(state_vars_struct * ss, lsList f);
00282
00290 void sbmc_state_vars_set_simple_path_system_vars(state_vars_struct * ss, lsList f);
00291
00299 void sbmc_state_vars_print(state_vars_struct *svs, FILE* out);
00300
00311 hash_ptr sbmc_set_create(void);
00312
00322 void sbmc_set_destroy(hash_ptr hash);
00323
00331 void sbmc_set_insert(hash_ptr hash, node_ptr bexp);
00332
00341 int sbmc_set_is_in(hash_ptr hash, node_ptr bexp);
00342
00352 sbmc_node_info * sbmc_alloc_node_info(void);
00353
00363 void sbmc_node_info_free(sbmc_node_info * info);
00364
00370 unsigned int sbmc_node_info_get_past_depth(sbmc_node_info * h);
00371
00377 array_t * sbmc_node_info_get_trans_vars(sbmc_node_info * h);
00378
00384 array_t * sbmc_node_info_get_trans_bes(sbmc_node_info * h);
00385
00391 node_ptr sbmc_node_info_get_aux_F_node(sbmc_node_info * h);
00392
00398 array_t * sbmc_node_info_get_aux_F_trans(sbmc_node_info * h);
00399
00405 node_ptr sbmc_node_info_get_aux_G_node(sbmc_node_info * h);
00406
00412 array_t * sbmc_node_info_get_aux_G_trans(sbmc_node_info * h);
00413
00419 void sbmc_node_info_set_past_depth(sbmc_node_info * h, unsigned int s);
00420
00426 void sbmc_node_info_set_past_trans_vars(sbmc_node_info * h, array_t * s);
00427
00433 void sbmc_node_info_set_trans_bes(sbmc_node_info * h, array_t * s);
00434
00440 void sbmc_node_info_set_aux_F_node(sbmc_node_info * h, node_ptr s);
00441
00447 void sbmc_node_info_set_aux_F_trans(sbmc_node_info * h, array_t * s);
00448
00454 void sbmc_node_info_set_aux_G_node(sbmc_node_info * h, node_ptr s);
00455
00461 void sbmc_node_info_set_aux_G_trans(sbmc_node_info * h, array_t * s);
00462
00472 sbmc_node_info * sbmc_node_info_assoc_find(hash_ptr a, node_ptr n);
00473
00483 void sbmc_node_info_assoc_insert(hash_ptr a, node_ptr n, sbmc_node_info * i);
00484
00494 void sbmc_node_info_assoc_free(hash_ptr * a);
00495
00505 hash_ptr sbmc_node_info_assoc_create(void);
00506
00509 #endif