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_ENC_BDD_BDD_ENC_CACHE_H__
00040 #define __NUSMV_CORE_ENC_BDD_BDD_ENC_CACHE_H__
00041
00042 #include "nusmv/core/compile/symb_table/SymbTable.h"
00043 #include "nusmv/core/dd/dd.h"
00044
00045 #include "nusmv/core/utils/utils.h"
00046 #include "nusmv/core/node/node.h"
00047 #include "nusmv/core/enc/utils/AddArray.h"
00048
00055 typedef struct BddEncCache_TAG* BddEncCache_ptr;
00056
00062 #define BDD_ENC_CACHE(x) \
00063 ((BddEncCache_ptr) x)
00064
00070 #define BDD_ENC_CACHE_CHECK_INSTANCE(x) \
00071 ( nusmv_assert(BDD_ENC_CACHE(x) != BDD_ENC_CACHE(NULL)) )
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00088 BddEncCache_ptr
00089 BddEncCache_create(SymbTable_ptr symb_table, DDMgr_ptr dd);
00090
00097 void BddEncCache_destroy(BddEncCache_ptr self);
00098
00107 void
00108 BddEncCache_new_constant(BddEncCache_ptr self, node_ptr constant,
00109 add_ptr constant_add);
00110
00117 void
00118 BddEncCache_remove_constant(BddEncCache_ptr self, node_ptr constant);
00119
00126 boolean
00127 BddEncCache_is_constant_encoded(const BddEncCache_ptr self,
00128 node_ptr constant);
00129
00138 add_ptr
00139 BddEncCache_lookup_constant(const BddEncCache_ptr self,
00140 node_ptr constant);
00141
00149 void
00150 BddEncCache_new_boolean_var(BddEncCache_ptr self, node_ptr var_name,
00151 add_ptr var_add);
00152
00159 void
00160 BddEncCache_remove_boolean_var(BddEncCache_ptr self, node_ptr var_name);
00161
00169 boolean
00170 BddEncCache_is_boolean_var_encoded(const BddEncCache_ptr self,
00171 node_ptr var_name);
00172
00181 add_ptr
00182 BddEncCache_lookup_boolean_var(const BddEncCache_ptr self, node_ptr var_name);
00183
00197 void BddEncCache_set_evaluation(BddEncCache_ptr self,
00198 node_ptr expr,
00199 AddArray_ptr add_array);
00200
00209 void BddEncCache_remove_evaluation(BddEncCache_ptr self,
00210 node_ptr expr);
00211
00228 AddArray_ptr BddEncCache_get_evaluation(BddEncCache_ptr self,
00229 node_ptr expr);
00230
00239 void BddEncCache_clean_evaluation_about(BddEncCache_ptr self,
00240 NodeList_ptr symbs);
00241
00250 void BddEncCache_clean_evaluation(BddEncCache_ptr self);
00251
00252 #endif