[13] | 1 | /****************************************************************************** |
---|
| 2 | |
---|
| 3 | PackageName [bdd] |
---|
| 4 | |
---|
| 5 | Synopsis [Package-independent BDD interface functions.] |
---|
| 6 | |
---|
| 7 | Description [] |
---|
| 8 | |
---|
| 9 | SeeAlso [] |
---|
| 10 | |
---|
| 11 | Author [Thomas R. Shiple. Modified by Rajeev K. Ranjan.] |
---|
| 12 | |
---|
| 13 | Copyright [Copyright (c) 1994-1996 The Regents of the Univ. of California. |
---|
| 14 | All rights reserved. |
---|
| 15 | |
---|
| 16 | Permission is hereby granted, without written agreement and without license |
---|
| 17 | or royalty fees, to use, copy, modify, and distribute this software and its |
---|
| 18 | documentation for any purpose, provided that the above copyright notice and |
---|
| 19 | the following two paragraphs appear in all copies of this software. |
---|
| 20 | |
---|
| 21 | IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR |
---|
| 22 | DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT |
---|
| 23 | OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF |
---|
| 24 | CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
---|
| 25 | |
---|
| 26 | THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, |
---|
| 27 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND |
---|
| 28 | FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN |
---|
| 29 | "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE |
---|
| 30 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.] |
---|
| 31 | |
---|
| 32 | Revision [$Id: bdd.h,v 1.79 2007/02/10 01:09:52 fabio Exp $] |
---|
| 33 | |
---|
| 34 | ******************************************************************************/ |
---|
| 35 | |
---|
| 36 | #ifndef _BDD_H |
---|
| 37 | #define _BDD_H |
---|
| 38 | #include "util.h" |
---|
| 39 | #include "array.h" |
---|
| 40 | #include "st.h" |
---|
| 41 | #include "var_set.h" |
---|
| 42 | #include "avl.h" |
---|
| 43 | #ifndef EPD_MAX_BIN |
---|
| 44 | #include "epd.h" |
---|
| 45 | #endif |
---|
| 46 | |
---|
| 47 | /*---------------------------------------------------------------------------*/ |
---|
| 48 | /* Constant declarations */ |
---|
| 49 | /*---------------------------------------------------------------------------*/ |
---|
| 50 | |
---|
| 51 | |
---|
| 52 | /*---------------------------------------------------------------------------*/ |
---|
| 53 | /* Type declarations */ |
---|
| 54 | /*---------------------------------------------------------------------------*/ |
---|
| 55 | typedef int boolean; |
---|
| 56 | typedef void bdd_manager; |
---|
| 57 | typedef unsigned int bdd_variableId; /* the id of the variable in a bdd node */ |
---|
| 58 | typedef void bdd_mgr_init; /* Typecasting to void to avoid error messages */ |
---|
| 59 | typedef int bdd_literal; /* integers in the set { 0, 1, 2 } */ |
---|
| 60 | typedef struct bdd_t bdd_t; |
---|
| 61 | typedef void bdd_node; |
---|
| 62 | typedef void bdd_gen; |
---|
| 63 | typedef struct bdd_external_hooks_struct bdd_external_hooks; |
---|
| 64 | typedef void bdd_block; |
---|
| 65 | typedef double BDD_VALUE_TYPE; |
---|
| 66 | |
---|
| 67 | /*---------------------------------------------------------------------------*/ |
---|
| 68 | /* Enumerated type declarations */ |
---|
| 69 | /*---------------------------------------------------------------------------*/ |
---|
| 70 | |
---|
| 71 | /* |
---|
| 72 | * Dynamic reordering. |
---|
| 73 | */ |
---|
| 74 | typedef enum { |
---|
| 75 | BDD_REORDER_SIFT, |
---|
| 76 | BDD_REORDER_WINDOW, |
---|
| 77 | BDD_REORDER_SAME, |
---|
| 78 | BDD_REORDER_RANDOM, |
---|
| 79 | BDD_REORDER_RANDOM_PIVOT, |
---|
| 80 | BDD_REORDER_SIFT_CONVERGE, |
---|
| 81 | BDD_REORDER_SYMM_SIFT, |
---|
| 82 | BDD_REORDER_SYMM_SIFT_CONV, |
---|
| 83 | BDD_REORDER_LINEAR, |
---|
| 84 | BDD_REORDER_LINEAR_CONVERGE, |
---|
| 85 | BDD_REORDER_EXACT, |
---|
| 86 | BDD_REORDER_WINDOW2, |
---|
| 87 | BDD_REORDER_WINDOW3, |
---|
| 88 | BDD_REORDER_WINDOW4, |
---|
| 89 | BDD_REORDER_WINDOW2_CONV, |
---|
| 90 | BDD_REORDER_WINDOW3_CONV, |
---|
| 91 | BDD_REORDER_WINDOW4_CONV, |
---|
| 92 | BDD_REORDER_GROUP_SIFT, |
---|
| 93 | BDD_REORDER_GROUP_SIFT_CONV, |
---|
| 94 | BDD_REORDER_ANNEALING, |
---|
| 95 | BDD_REORDER_GENETIC, |
---|
| 96 | BDD_REORDER_LAZY_SIFT, |
---|
| 97 | BDD_REORDER_NONE |
---|
| 98 | } bdd_reorder_type_t; |
---|
| 99 | |
---|
| 100 | typedef enum { |
---|
| 101 | CMU, |
---|
| 102 | CAL, |
---|
| 103 | CUDD |
---|
| 104 | } bdd_package_type_t; |
---|
| 105 | |
---|
| 106 | typedef enum { |
---|
| 107 | bdd_EMPTY, |
---|
| 108 | bdd_NONEMPTY |
---|
| 109 | } bdd_gen_status; |
---|
| 110 | |
---|
| 111 | typedef enum { |
---|
| 112 | BDD_PRE_GC_HOOK, |
---|
| 113 | BDD_POST_GC_HOOK, |
---|
| 114 | BDD_PRE_REORDERING_HOOK, |
---|
| 115 | BDD_POST_REORDERING_HOOK |
---|
| 116 | } bdd_hook_type_t; |
---|
| 117 | |
---|
| 118 | typedef enum { |
---|
| 119 | BDD_OVER_APPROX, |
---|
| 120 | BDD_UNDER_APPROX |
---|
| 121 | } bdd_approx_dir_t; |
---|
| 122 | |
---|
| 123 | typedef enum { |
---|
| 124 | BDD_CONJUNCTS, |
---|
| 125 | BDD_DISJUNCTS |
---|
| 126 | } bdd_partition_type_t; |
---|
| 127 | |
---|
| 128 | typedef enum { |
---|
| 129 | BDD_REORDER_VERBOSITY_DEFAULT, |
---|
| 130 | BDD_REORDER_NO_VERBOSITY, |
---|
| 131 | BDD_REORDER_VERBOSITY |
---|
| 132 | }bdd_reorder_verbosity_t; |
---|
| 133 | |
---|
| 134 | typedef enum { |
---|
| 135 | BDD_APPROX_HB, |
---|
| 136 | BDD_APPROX_SP, |
---|
| 137 | BDD_APPROX_COMP, |
---|
| 138 | BDD_APPROX_UA, |
---|
| 139 | BDD_APPROX_RUA, |
---|
| 140 | BDD_APPROX_BIASED_RUA |
---|
| 141 | } bdd_approx_type_t; |
---|
| 142 | |
---|
| 143 | |
---|
| 144 | /*---------------------------------------------------------------------------*/ |
---|
| 145 | /* Structure declarations */ |
---|
| 146 | /*---------------------------------------------------------------------------*/ |
---|
| 147 | struct bdd_external_hooks_struct { |
---|
| 148 | char *network; |
---|
| 149 | char *mdd; |
---|
| 150 | char *undef1; |
---|
| 151 | }; |
---|
| 152 | |
---|
| 153 | |
---|
| 154 | /*---------------------------------------------------------------------------*/ |
---|
| 155 | /* Variable declarations */ |
---|
| 156 | /*---------------------------------------------------------------------------*/ |
---|
| 157 | |
---|
| 158 | |
---|
| 159 | /*---------------------------------------------------------------------------*/ |
---|
| 160 | /* Macro declarations */ |
---|
| 161 | /*---------------------------------------------------------------------------*/ |
---|
| 162 | /* |
---|
| 163 | ** It is assumed that dynamic reordering will not occur while there are open |
---|
| 164 | ** generators. It is the user's responsibility to make sure dynamic |
---|
| 165 | ** reordering doesn't occur. As long as new nodes are not created during |
---|
| 166 | ** generation, and you don't explicitly call dynamic reordering, you should be |
---|
| 167 | ** okay. |
---|
| 168 | */ |
---|
| 169 | |
---|
| 170 | /* |
---|
| 171 | * foreach_bdd_cube(fn, gen, cube) |
---|
| 172 | * bdd_t *fn; |
---|
| 173 | * bdd_gen *gen; |
---|
| 174 | * array_t *cube; - return |
---|
| 175 | * |
---|
| 176 | * foreach_bdd_cube(fn, gen, cube) { |
---|
| 177 | * ... |
---|
| 178 | * } |
---|
| 179 | */ |
---|
| 180 | #define foreach_bdd_cube(fn, gen, cube)\ |
---|
| 181 | for((gen) = bdd_first_cube(fn, &cube);\ |
---|
| 182 | (bdd_gen_read_status(gen) != bdd_EMPTY) ? TRUE: bdd_gen_free(gen);\ |
---|
| 183 | (void) bdd_next_cube(gen, &cube)) |
---|
| 184 | |
---|
| 185 | /* |
---|
| 186 | * foreach_bdd_disjoint_cube(fn, gen, cube) |
---|
| 187 | * bdd_t *fn; |
---|
| 188 | * bdd_gen *gen; |
---|
| 189 | * array_t *cube; - return |
---|
| 190 | * |
---|
| 191 | * foreach_bdd_disjoint_cube(fn, gen, cube) { |
---|
| 192 | * ... |
---|
| 193 | * } |
---|
| 194 | */ |
---|
| 195 | #define foreach_bdd_disjoint_cube(fn, gen, cube)\ |
---|
| 196 | for((gen) = bdd_first_disjoint_cube(fn, &cube);\ |
---|
| 197 | (bdd_gen_read_status(gen) != bdd_EMPTY) ? TRUE: bdd_gen_free(gen);\ |
---|
| 198 | (void) bdd_next_disjoint_cube(gen, &cube)) |
---|
| 199 | |
---|
| 200 | /* |
---|
| 201 | * foreach_bdd_node(fn, gen, node) |
---|
| 202 | * bdd_t *fn; |
---|
| 203 | * bdd_gen *gen; |
---|
| 204 | * bdd_node *node; - return |
---|
| 205 | */ |
---|
| 206 | #define foreach_bdd_node(fn, gen, node)\ |
---|
| 207 | for((gen) = bdd_first_node(fn, &node);\ |
---|
| 208 | (bdd_gen_read_status(gen) != bdd_EMPTY) ? TRUE: bdd_gen_free(gen);\ |
---|
| 209 | (void) bdd_next_node(gen, &node)) |
---|
| 210 | |
---|
| 211 | |
---|
| 212 | /**AutomaticStart*************************************************************/ |
---|
| 213 | |
---|
| 214 | /*---------------------------------------------------------------------------*/ |
---|
| 215 | /* Function prototypes */ |
---|
| 216 | /*---------------------------------------------------------------------------*/ |
---|
| 217 | |
---|
| 218 | |
---|
| 219 | /**AutomaticEnd***************************************************************/ |
---|
| 220 | |
---|
| 221 | EXTERN bdd_package_type_t bdd_get_package_name ARGS((void)); |
---|
| 222 | |
---|
| 223 | /* |
---|
| 224 | * BDD Manager Allocation And Destruction |
---|
| 225 | */ |
---|
| 226 | EXTERN bdd_manager *bdd_start ARGS((int)); |
---|
| 227 | EXTERN void bdd_end ARGS((bdd_manager *)); |
---|
| 228 | |
---|
| 229 | /* |
---|
| 230 | * BDD variable management |
---|
| 231 | */ |
---|
| 232 | EXTERN bdd_t *bdd_create_variable ARGS((bdd_manager *)); |
---|
| 233 | EXTERN bdd_t *bdd_create_variable_after ARGS((bdd_manager *, bdd_variableId)); |
---|
| 234 | EXTERN bdd_t *bdd_get_variable ARGS((bdd_manager *, bdd_variableId)); |
---|
| 235 | EXTERN bdd_t *bdd_create_variable_after ARGS((bdd_manager *, bdd_variableId)); |
---|
| 236 | EXTERN bdd_t * bdd_var_with_index ARGS((bdd_manager *manager, int index)); |
---|
| 237 | EXTERN bdd_node *bdd_add_ith_var ARGS((bdd_manager *mgr, int i)); |
---|
| 238 | |
---|
| 239 | |
---|
| 240 | /* |
---|
| 241 | * BDD Formula Management |
---|
| 242 | */ |
---|
| 243 | EXTERN bdd_t *bdd_dup ARGS((bdd_t *)); |
---|
| 244 | EXTERN void bdd_free ARGS((bdd_t *)); |
---|
| 245 | |
---|
| 246 | /* |
---|
| 247 | * Operations on BDD Formulas |
---|
| 248 | */ |
---|
| 249 | EXTERN bdd_t *bdd_and ARGS((bdd_t *, bdd_t *, boolean, boolean)); |
---|
| 250 | EXTERN bdd_t *bdd_and_with_limit ARGS((bdd_t *, bdd_t *, boolean, boolean, unsigned int)); |
---|
| 251 | EXTERN bdd_t *bdd_and_array ARGS((bdd_t *, array_t *, boolean, boolean)); |
---|
| 252 | EXTERN bdd_t *bdd_and_smooth ARGS((bdd_t *, bdd_t *, array_t *)); |
---|
| 253 | EXTERN bdd_t *bdd_and_smooth_with_limit ARGS((bdd_t *, bdd_t *, array_t *, unsigned int)); |
---|
| 254 | EXTERN bdd_t *bdd_and_smooth_with_cube ARGS((bdd_t *, bdd_t *, bdd_t *)); |
---|
| 255 | EXTERN bdd_t *bdd_clipping_and_smooth ARGS((bdd_t *, bdd_t *, array_t *, int , int )); |
---|
| 256 | EXTERN bdd_t *bdd_xor_smooth ARGS((bdd_t *, bdd_t *, array_t *)); |
---|
| 257 | EXTERN bdd_t *bdd_between ARGS((bdd_t *, bdd_t *)); |
---|
| 258 | EXTERN bdd_t *bdd_cofactor ARGS((bdd_t *, bdd_t *)); |
---|
| 259 | EXTERN bdd_t *bdd_cofactor_array ARGS((bdd_t *, array_t *)); |
---|
| 260 | EXTERN bdd_t *bdd_var_cofactor ARGS((bdd_t *, bdd_t *)); |
---|
| 261 | EXTERN bdd_t *bdd_compose ARGS((bdd_t *, bdd_t *, bdd_t *)); |
---|
| 262 | EXTERN bdd_t *bdd_vector_compose ARGS((bdd_t *, array_t *, array_t *)); |
---|
| 263 | EXTERN bdd_t *bdd_consensus ARGS((bdd_t *, array_t *)); |
---|
| 264 | EXTERN bdd_t *bdd_consensus_with_cube ARGS((bdd_t *, bdd_t *)); |
---|
| 265 | EXTERN bdd_t *bdd_cproject ARGS((bdd_t *, array_t *)); |
---|
| 266 | EXTERN bdd_t *bdd_else ARGS((bdd_t *)); |
---|
| 267 | EXTERN bdd_t *bdd_ite ARGS((bdd_t *, bdd_t *, bdd_t *, boolean, boolean, boolean)); |
---|
| 268 | EXTERN bdd_t *bdd_minimize ARGS((bdd_t *, bdd_t *)); |
---|
| 269 | EXTERN bdd_t *bdd_minimize_array ARGS((bdd_t *, array_t *)); |
---|
| 270 | EXTERN bdd_t *bdd_compact ARGS((bdd_t *, bdd_t *)); |
---|
| 271 | EXTERN bdd_t *bdd_squeeze ARGS((bdd_t *, bdd_t *)); |
---|
| 272 | EXTERN bdd_t *bdd_not ARGS((bdd_t *)); |
---|
| 273 | EXTERN bdd_t *bdd_one ARGS((bdd_manager *)); |
---|
| 274 | EXTERN bdd_t *bdd_or ARGS((bdd_t *, bdd_t *, boolean, boolean)); |
---|
| 275 | EXTERN bdd_t *bdd_smooth ARGS((bdd_t *, array_t *)); |
---|
| 276 | EXTERN bdd_t *bdd_smooth_with_cube ARGS((bdd_t *, bdd_t *)); |
---|
| 277 | EXTERN bdd_t *bdd_substitute ARGS((bdd_t *, array_t *, array_t *)); |
---|
| 278 | EXTERN bdd_t *bdd_substitute_with_permut ARGS((bdd_t *, int *)); |
---|
| 279 | EXTERN array_t *bdd_substitute_array ARGS((array_t *, array_t *, array_t *)); |
---|
| 280 | EXTERN array_t *bdd_substitute_array_with_permut ARGS((array_t *, int *)); |
---|
| 281 | EXTERN void *bdd_pointer ARGS((bdd_t *)); |
---|
| 282 | EXTERN bdd_t *bdd_then ARGS((bdd_t *)); |
---|
| 283 | EXTERN bdd_t *bdd_top_var ARGS((bdd_t *)); |
---|
| 284 | EXTERN bdd_t *bdd_xnor ARGS((bdd_t *, bdd_t *)); |
---|
| 285 | EXTERN bdd_t *bdd_xor ARGS((bdd_t *, bdd_t *)); |
---|
| 286 | EXTERN bdd_t *bdd_zero ARGS((bdd_manager *)); |
---|
| 287 | EXTERN bdd_t *bdd_multiway_and ARGS((bdd_manager *, array_t *)); |
---|
| 288 | EXTERN bdd_t *bdd_multiway_or ARGS((bdd_manager *, array_t *)); |
---|
| 289 | EXTERN bdd_t *bdd_multiway_xor ARGS((bdd_manager *, array_t *)); |
---|
| 290 | EXTERN array_t * bdd_pairwise_or ARGS((bdd_manager *manager, array_t *bddArray1, array_t *bddArray2)); |
---|
| 291 | EXTERN array_t * bdd_pairwise_and ARGS((bdd_manager *manager, array_t *bddArray1, array_t *bddArray2)); |
---|
| 292 | EXTERN array_t * bdd_pairwise_xor ARGS((bdd_manager *manager, array_t *bddArray1, array_t *bddArray2)); |
---|
| 293 | EXTERN bdd_t *bdd_approx_hb ARGS((bdd_t *, bdd_approx_dir_t , int , int )); |
---|
| 294 | EXTERN bdd_t *bdd_approx_sp ARGS((bdd_t *, bdd_approx_dir_t , int , int , int )); |
---|
| 295 | EXTERN bdd_t *bdd_approx_ua ARGS((bdd_t *, bdd_approx_dir_t , int , int , int , double )); |
---|
| 296 | EXTERN bdd_t *bdd_approx_remap_ua ARGS((bdd_t *, bdd_approx_dir_t , int , int , double )); |
---|
| 297 | EXTERN bdd_t *bdd_approx_biased_rua ARGS((bdd_t *, bdd_approx_dir_t , bdd_t *, int , int , double, double )); |
---|
| 298 | EXTERN bdd_t *bdd_approx_compress ARGS((bdd_t *, bdd_approx_dir_t , int , int )); |
---|
| 299 | EXTERN int bdd_var_decomp ARGS((bdd_t *, bdd_partition_type_t , bdd_t ***)); |
---|
| 300 | EXTERN int bdd_gen_decomp ARGS((bdd_t *, bdd_partition_type_t , bdd_t ***)); |
---|
| 301 | EXTERN int bdd_approx_decomp ARGS((bdd_t *, bdd_partition_type_t , bdd_t ***)); |
---|
| 302 | EXTERN int bdd_iter_decomp ARGS((bdd_t *, bdd_partition_type_t , bdd_t ***)); |
---|
| 303 | EXTERN bdd_t *bdd_solve_eqn ARGS((bdd_t *f, array_t *g, array_t *unknowns)); |
---|
| 304 | EXTERN bdd_t *bdd_shortest_path ARGS((bdd_t *f, int *weight, int *support, int *length)); |
---|
| 305 | |
---|
| 306 | EXTERN bdd_t *bdd_compute_cube ARGS((bdd_manager *mgr, array_t *vars)); |
---|
| 307 | EXTERN bdd_t *bdd_compute_cube_with_phase ARGS((bdd_manager *mgr, array_t *vars, array_t *phase)); |
---|
| 308 | EXTERN bdd_node *bdd_add_compose ARGS((bdd_manager *mgr, bdd_node *fn1, bdd_node *fn2, int var)); |
---|
| 309 | EXTERN bdd_node *bdd_add_xnor ARGS((bdd_manager *mgr, bdd_node **fn1, bdd_node **fn2 )); |
---|
| 310 | EXTERN bdd_node *bdd_add_times ARGS((bdd_manager *mgr, bdd_node **fn1, bdd_node **fn2)); |
---|
| 311 | EXTERN bdd_node *bdd_add_vector_compose ARGS((bdd_manager *mgr, bdd_node *fn, bdd_node **vector)); |
---|
| 312 | EXTERN bdd_node *bdd_add_residue ARGS((bdd_manager *mgr, int n, int m, int options, int top)); |
---|
| 313 | EXTERN bdd_node *bdd_add_nonsim_compose ARGS((bdd_manager *mgr, bdd_node *fn, bdd_node **vector)); |
---|
| 314 | EXTERN bdd_node *bdd_add_apply ARGS((bdd_manager *mgr, bdd_node *(*operation)(bdd_manager *, bdd_node **, bdd_node **), bdd_node *fn1, bdd_node *fn2)); |
---|
| 315 | EXTERN bdd_node *bdd_add_exist_abstract ARGS((bdd_manager *mgr, bdd_node *fn, bdd_node *vars)); |
---|
| 316 | EXTERN void bdd_recursive_deref ARGS((bdd_manager *mgr, bdd_node *f)); |
---|
| 317 | EXTERN void bdd_ref ARGS((bdd_node *fn)); |
---|
| 318 | EXTERN bdd_node *bdd_bdd_to_add ARGS((bdd_manager *mgr, bdd_node *fn)); |
---|
| 319 | EXTERN bdd_node *bdd_add_permute ARGS((bdd_manager *mgr, bdd_node *fn, int *permut)); |
---|
| 320 | EXTERN bdd_node *bdd_bdd_permute ARGS((bdd_manager *mgr, bdd_node *fn, int *permut)); |
---|
| 321 | EXTERN bdd_node * bdd_bdd_exist_abstract ARGS((bdd_manager *mgr, bdd_node *fn, bdd_node *cube)); |
---|
| 322 | /* Added by Balakrishna Kumthekar. There are potential duplicates. */ |
---|
| 323 | |
---|
| 324 | EXTERN int bdd_equal_sup_norm ARGS((bdd_manager *mgr, bdd_node *fn, bdd_node *gn, BDD_VALUE_TYPE tolerance, int pr)); |
---|
| 325 | EXTERN bdd_node * bdd_read_logic_zero ARGS((bdd_manager *mgr)); |
---|
| 326 | EXTERN bdd_node * bdd_bdd_ith_var ARGS((bdd_manager *mgr, int i)); |
---|
| 327 | EXTERN bdd_node * bdd_add_divide ARGS((bdd_manager *mgr, bdd_node **fn1, bdd_node **fn2)); |
---|
| 328 | EXTERN bdd_node * bdd_bdd_constrain ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *c)); |
---|
| 329 | EXTERN bdd_node * bdd_bdd_restrict ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *c)); |
---|
| 330 | EXTERN bdd_node * bdd_add_hamming ARGS((bdd_manager *mgr, bdd_node **xVars, bdd_node **yVars, int nVars)); |
---|
| 331 | EXTERN bdd_node * bdd_add_ite ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g, bdd_node *h)); |
---|
| 332 | EXTERN bdd_node * bdd_add_find_max ARGS((bdd_manager *mgr, bdd_node *f)); |
---|
| 333 | EXTERN int bdd_bdd_pick_one_cube ARGS((bdd_manager *mgr, bdd_node *node, char *string)); |
---|
| 334 | EXTERN bdd_node * bdd_add_swap_variables ARGS((bdd_manager *mgr, bdd_node *f, bdd_node **x, bdd_node **y, int n)); |
---|
| 335 | EXTERN bdd_node * bdd_bdd_or ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 336 | EXTERN bdd_node * bdd_bdd_compute_cube ARGS((bdd_manager *mgr, bdd_node **vars, int *phase, int n)); |
---|
| 337 | EXTERN bdd_node * bdd_indices_to_cube ARGS((bdd_manager *mgr, int *idArray, int n)); |
---|
| 338 | EXTERN bdd_node * bdd_bdd_and ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 339 | EXTERN bdd_node * bdd_add_matrix_multiply ARGS((bdd_manager *mgr, bdd_node *A, bdd_node *B, bdd_node **z, int nz)); |
---|
| 340 | EXTERN bdd_node * bdd_add_compute_cube ARGS((bdd_manager *mgr, bdd_node **vars, int *phase, int n)); |
---|
| 341 | EXTERN bdd_node * bdd_add_const ARGS((bdd_manager *mgr, BDD_VALUE_TYPE c)); |
---|
| 342 | EXTERN bdd_node * bdd_bdd_swap_variables ARGS((bdd_manager *mgr, bdd_node *f, bdd_node **x, bdd_node **y, int n)); |
---|
| 343 | EXTERN double bdd_count_minterm ARGS((bdd_manager *mgr, bdd_node *f, int n)); |
---|
| 344 | EXTERN bdd_node * bdd_add_bdd_threshold ARGS((bdd_manager *mgr, bdd_node *f, BDD_VALUE_TYPE value)); |
---|
| 345 | EXTERN bdd_node * bdd_add_bdd_strict_threshold ARGS((bdd_manager *mgr,bdd_node *f,BDD_VALUE_TYPE value)); |
---|
| 346 | EXTERN BDD_VALUE_TYPE bdd_read_epsilon ARGS((bdd_manager *mgr)); |
---|
| 347 | EXTERN bdd_node * bdd_read_one ARGS((bdd_manager *mgr)); |
---|
| 348 | EXTERN bdd_node * bdd_bdd_pick_one_minterm ARGS((bdd_manager *mgr, bdd_node *f, bdd_node **vars, int n)); |
---|
| 349 | EXTERN bdd_t * bdd_pick_one_minterm ARGS((bdd_t *f, array_t *varsArray)); |
---|
| 350 | EXTERN array_t * bdd_bdd_pick_arbitrary_minterms ARGS((bdd_t *f, array_t *varsArray, int n, int k)); |
---|
| 351 | EXTERN bdd_t * bdd_subset_with_mask_vars ARGS((bdd_t *f, array_t *varsArray, array_t *maskVarsArray)); |
---|
| 352 | EXTERN bdd_node * bdd_read_zero ARGS((bdd_manager *mgr)); |
---|
| 353 | EXTERN bdd_node * bdd_bdd_new_var ARGS((bdd_manager *mgr)); |
---|
| 354 | EXTERN bdd_node * bdd_bdd_and_abstract ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g, bdd_node *cube)); |
---|
| 355 | |
---|
| 356 | EXTERN int bdd_test_unate ARGS((bdd_t *f, int varId, int phase)); |
---|
| 357 | EXTERN array_t * bdd_find_essential ARGS((bdd_t *)); |
---|
| 358 | EXTERN bdd_t * bdd_find_essential_cube ARGS((bdd_t *)); |
---|
| 359 | EXTERN void bdd_deref ARGS((bdd_node *f)); |
---|
| 360 | EXTERN bdd_node * bdd_add_plus ARGS((bdd_manager *mgr, bdd_node **fn1, bdd_node **fn2)); |
---|
| 361 | EXTERN int bdd_read_reorderings ARGS((bdd_manager *mgr)); |
---|
| 362 | EXTERN int bdd_read_next_reordering ARGS((bdd_manager *mgr)); |
---|
| 363 | EXTERN void bdd_set_next_reordering ARGS((bdd_manager *mgr, int next)); |
---|
| 364 | EXTERN bdd_node * bdd_bdd_xnor ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 365 | EXTERN bdd_node * bdd_bdd_xor ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 366 | EXTERN bdd_node * bdd_bdd_vector_compose ARGS((bdd_manager *mgr, bdd_node *f, bdd_node **vector)); |
---|
| 367 | |
---|
| 368 | EXTERN bdd_node * bdd_zdd_get_node ARGS((bdd_manager *mgr, int id, bdd_node *g, bdd_node *h)); |
---|
| 369 | EXTERN bdd_node * bdd_zdd_product ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 370 | EXTERN bdd_node * bdd_zdd_product_recur ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 371 | EXTERN bdd_node * bdd_zdd_union ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 372 | EXTERN bdd_node * bdd_zdd_union_recur ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 373 | EXTERN bdd_node * bdd_zdd_weak_div ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 374 | EXTERN bdd_node * bdd_zdd_weak_div_recur ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 375 | EXTERN bdd_node * bdd_zdd_isop_recur ARGS((bdd_manager *mgr, bdd_node *L, bdd_node *U, bdd_node **zdd_I)); |
---|
| 376 | EXTERN bdd_node * bdd_zdd_isop ARGS((bdd_manager *mgr, bdd_node *L, bdd_node *U, bdd_node **zdd_I)); |
---|
| 377 | EXTERN int bdd_zdd_get_cofactors3 ARGS((bdd_manager *mgr, bdd_node *f, int v, bdd_node **f1, bdd_node **f0, bdd_node **fd)); |
---|
| 378 | EXTERN bdd_node * bdd_bdd_and_recur ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 379 | EXTERN bdd_node * bdd_unique_inter ARGS((bdd_manager *mgr, int v, bdd_node *f, bdd_node *g)); |
---|
| 380 | EXTERN bdd_node * bdd_unique_inter_ivo ARGS((bdd_manager *mgr, int v, bdd_node *f, bdd_node *g)); |
---|
| 381 | EXTERN bdd_node * bdd_zdd_diff ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 382 | EXTERN bdd_node * bdd_zdd_diff_recur ARGS((bdd_manager *mgr, bdd_node *f, bdd_node *g)); |
---|
| 383 | EXTERN int bdd_num_zdd_vars ARGS((bdd_manager *mgr)); |
---|
| 384 | EXTERN bdd_node * bdd_regular ARGS((bdd_node *f)); |
---|
| 385 | EXTERN int bdd_is_constant ARGS((bdd_node *f)); |
---|
| 386 | EXTERN int bdd_is_complement ARGS((bdd_node *f)); |
---|
| 387 | EXTERN bdd_node * bdd_bdd_T ARGS((bdd_node *f)); |
---|
| 388 | EXTERN bdd_node * bdd_bdd_E ARGS((bdd_node *f)); |
---|
| 389 | EXTERN bdd_node * bdd_not_bdd_node ARGS((bdd_node *f)); |
---|
| 390 | EXTERN void bdd_recursive_deref_zdd ARGS((bdd_manager *mgr, bdd_node *f)); |
---|
| 391 | EXTERN int bdd_zdd_count ARGS((bdd_manager *mgr, bdd_node *f)); |
---|
| 392 | EXTERN int bdd_read_zdd_level ARGS((bdd_manager *mgr, int index)); |
---|
| 393 | EXTERN int bdd_zdd_vars_from_bdd_vars ARGS((bdd_manager *mgr, int multiplicity)); |
---|
| 394 | EXTERN void bdd_zdd_realign_enable ARGS((bdd_manager *mgr)); |
---|
| 395 | EXTERN void bdd_zdd_realign_disable ARGS((bdd_manager *mgr)); |
---|
| 396 | EXTERN int bdd_zdd_realignment_enabled ARGS((bdd_manager *mgr)); |
---|
| 397 | EXTERN void bdd_realign_enable ARGS((bdd_manager *mgr)); |
---|
| 398 | EXTERN void bdd_realign_disable ARGS((bdd_manager *mgr)); |
---|
| 399 | EXTERN int bdd_realignment_enabled ARGS((bdd_manager *mgr)); |
---|
| 400 | EXTERN int bdd_node_read_index ARGS((bdd_node *f)); |
---|
| 401 | EXTERN bdd_node * bdd_read_next ARGS((bdd_node *f)); |
---|
| 402 | /* This function should not be used by an external user. This will not be a |
---|
| 403 | * part of any future releases. |
---|
| 404 | */ |
---|
| 405 | EXTERN void bdd_set_next ARGS((bdd_node *f, bdd_node *g)); |
---|
| 406 | EXTERN bdd_node * bdd_add_apply_recur ARGS((bdd_manager *mgr, bdd_node *(*operation)(bdd_manager *, bdd_node **, bdd_node **), bdd_node *fn1, bdd_node *fn2)); |
---|
| 407 | EXTERN BDD_VALUE_TYPE bdd_add_value ARGS((bdd_node *f)); |
---|
| 408 | |
---|
| 409 | EXTERN bdd_node * bdd_read_plus_infinity ARGS((bdd_manager *mgr)); |
---|
| 410 | EXTERN bdd_node * bdd_priority_select ARGS((bdd_manager *mgr,bdd_node *R,bdd_node **x,bdd_node **y,bdd_node **z,bdd_node *Pi,int n, bdd_node *(*Pifunc)(bdd_manager *, int, bdd_node **, bdd_node **, bdd_node **))); |
---|
| 411 | EXTERN void bdd_set_background ARGS((bdd_manager *mgr,bdd_node *f)); |
---|
| 412 | EXTERN bdd_node * bdd_read_background ARGS((bdd_manager *mgr)); |
---|
| 413 | EXTERN bdd_node * bdd_bdd_cofactor ARGS((bdd_manager *mgr,bdd_node *f,bdd_node *g)); |
---|
| 414 | EXTERN bdd_node * bdd_bdd_ite ARGS((bdd_manager *mgr,bdd_node *f,bdd_node *g,bdd_node *h)); |
---|
| 415 | EXTERN bdd_node * bdd_add_minus ARGS((bdd_manager *mgr,bdd_node **fn1,bdd_node **fn2)); |
---|
| 416 | EXTERN bdd_node * bdd_dxygtdxz ARGS((bdd_manager *mgr,int N,bdd_node **x, bdd_node **y, bdd_node **z)); |
---|
| 417 | EXTERN bdd_node * bdd_bdd_univ_abstract ARGS((bdd_manager *mgr,bdd_node *fn,bdd_node *vars)); |
---|
| 418 | EXTERN bdd_node * bdd_bdd_cprojection ARGS((bdd_manager *mgr,bdd_node *R,bdd_node *Y)); |
---|
| 419 | EXTERN double *bdd_cof_minterm ARGS((bdd_t *)); |
---|
| 420 | EXTERN int bdd_var_is_dependent ARGS((bdd_t *, bdd_t *)); |
---|
| 421 | EXTERN int bdd_debug_check ARGS((bdd_manager *mgr)); |
---|
| 422 | EXTERN bdd_node * bdd_xeqy ARGS((bdd_manager *mgr, int N, bdd_node **x, bdd_node **y)); |
---|
| 423 | EXTERN bdd_node * bdd_add_roundoff ARGS((bdd_manager *mgr, bdd_node *f, int N)); |
---|
| 424 | EXTERN bdd_node * bdd_xgty ARGS((bdd_manager *mgr, int N, bdd_node **x, bdd_node **y)); |
---|
| 425 | EXTERN bdd_node * bdd_add_cmpl ARGS((bdd_manager *mgr, bdd_node *f)); |
---|
| 426 | EXTERN bdd_node * bdd_split_set ARGS((bdd_manager *mgr, bdd_node *f, bdd_node ** x, int n, double m)); |
---|
| 427 | |
---|
| 428 | /* |
---|
| 429 | * Queries about BDD Formulas |
---|
| 430 | */ |
---|
| 431 | EXTERN boolean bdd_equal ARGS((bdd_t *, bdd_t *)); |
---|
| 432 | EXTERN boolean bdd_equal_mod_care_set ARGS((bdd_t *, bdd_t *, bdd_t *)); |
---|
| 433 | EXTERN boolean bdd_equal_mod_care_set_array ARGS((bdd_t *, bdd_t *, array_t *)); |
---|
| 434 | EXTERN bdd_t *bdd_intersects ARGS((bdd_t *, bdd_t *)); |
---|
| 435 | EXTERN bdd_t *bdd_closest_cube ARGS((bdd_t *, bdd_t *, int *)); |
---|
| 436 | EXTERN boolean bdd_is_tautology ARGS((bdd_t *, boolean)); |
---|
| 437 | EXTERN boolean bdd_leq ARGS((bdd_t *, bdd_t *, boolean, boolean)); |
---|
| 438 | EXTERN boolean bdd_lequal_mod_care_set ARGS((bdd_t *, bdd_t *, boolean, boolean, bdd_t *)); |
---|
| 439 | EXTERN boolean bdd_lequal_mod_care_set_array ARGS((bdd_t *, bdd_t *, boolean, boolean, array_t *)); |
---|
| 440 | EXTERN boolean bdd_leq_array ARGS((bdd_t *, array_t *, boolean, boolean)); |
---|
| 441 | EXTERN double bdd_count_onset ARGS((bdd_t *, array_t *)); |
---|
| 442 | EXTERN int bdd_epd_count_onset ARGS((bdd_t *, array_t *, EpDouble *epd)); |
---|
| 443 | EXTERN int bdd_print_apa_minterm ARGS((FILE *, bdd_t *, int, int)); |
---|
| 444 | EXTERN int bdd_apa_compare_ratios ARGS((int, bdd_t *, bdd_t *, int, int)); |
---|
| 445 | |
---|
| 446 | EXTERN double bdd_correlation ARGS((bdd_t *, bdd_t *)); |
---|
| 447 | EXTERN int bdd_get_free ARGS((bdd_t *)); |
---|
| 448 | EXTERN bdd_manager *bdd_get_manager ARGS((bdd_t *)); |
---|
| 449 | EXTERN bdd_node *bdd_get_node ARGS((bdd_t *, boolean *)); |
---|
| 450 | EXTERN bdd_node *bdd_extract_node_as_is ARGS((bdd_t *)); |
---|
| 451 | EXTERN var_set_t *bdd_get_support ARGS((bdd_t *)); |
---|
| 452 | EXTERN int bdd_is_support_var ARGS((bdd_t *, bdd_t *)); |
---|
| 453 | EXTERN int bdd_is_support_var_id ARGS((bdd_t *, int)); |
---|
| 454 | EXTERN array_t *bdd_get_varids ARGS((array_t *)); |
---|
| 455 | EXTERN unsigned int bdd_num_vars ARGS((bdd_manager *)); |
---|
| 456 | EXTERN int bdd_read_node_count ARGS((bdd_manager *mgr)); |
---|
| 457 | EXTERN void bdd_print ARGS((bdd_t *)); |
---|
| 458 | EXTERN int bdd_print_minterm ARGS((bdd_t *)); |
---|
| 459 | EXTERN int bdd_print_cover ARGS((bdd_t *)); |
---|
| 460 | EXTERN void bdd_print_stats ARGS((bdd_manager *, FILE *)); |
---|
| 461 | EXTERN int bdd_set_parameters ARGS((bdd_manager *, avl_tree *valueTable, FILE *)); |
---|
| 462 | EXTERN int bdd_size ARGS((bdd_t *)); |
---|
| 463 | EXTERN int bdd_node_size ARGS((bdd_node *)); |
---|
| 464 | EXTERN long bdd_size_multiple ARGS((array_t *)); |
---|
| 465 | EXTERN boolean bdd_is_cube ARGS((bdd_t*)); |
---|
| 466 | EXTERN bdd_block * bdd_new_var_block(bdd_t *f, long length); |
---|
| 467 | EXTERN long bdd_top_var_level ARGS((bdd_manager *manager, bdd_t *fn)); |
---|
| 468 | EXTERN bdd_variableId bdd_get_id_from_level ARGS((bdd_manager *, long)); |
---|
| 469 | EXTERN bdd_variableId bdd_top_var_id ARGS((bdd_t *)); |
---|
| 470 | EXTERN int bdd_get_level_from_id ARGS((bdd_manager *mgr, int id)); |
---|
| 471 | EXTERN int bdd_check_zero_ref ARGS((bdd_manager *mgr)); |
---|
| 472 | EXTERN int bdd_estimate_cofactor ARGS((bdd_t *, bdd_t *, int )); |
---|
| 473 | /* Reordering related stuff */ |
---|
| 474 | EXTERN void bdd_dynamic_reordering ARGS((bdd_manager *, bdd_reorder_type_t, bdd_reorder_verbosity_t)); |
---|
| 475 | EXTERN void bdd_dynamic_reordering_zdd ARGS((bdd_manager *, bdd_reorder_type_t, bdd_reorder_verbosity_t)); |
---|
| 476 | EXTERN int bdd_reordering_status ARGS((bdd_manager *mgr, bdd_reorder_type_t *method)); |
---|
| 477 | EXTERN int bdd_reordering_zdd_status ARGS((bdd_manager *mgr, bdd_reorder_type_t *method)); |
---|
| 478 | EXTERN void bdd_reorder ARGS((bdd_manager *)); |
---|
| 479 | EXTERN int bdd_shuffle_heap ARGS((bdd_manager *mgr, int *permut)); |
---|
| 480 | EXTERN void bdd_dynamic_reordering_disable ARGS((bdd_manager *mgr)); |
---|
| 481 | EXTERN void bdd_dynamic_reordering_zdd_disable ARGS((bdd_manager *mgr)); |
---|
| 482 | EXTERN int bdd_read_reordered_field ARGS((bdd_manager *mgr)); |
---|
| 483 | EXTERN int bdd_add_hook ARGS((bdd_manager *, int (*procedure)(bdd_manager *, char *, void *), bdd_hook_type_t )); |
---|
| 484 | EXTERN int bdd_remove_hook ARGS((bdd_manager *, int (*procedure)(bdd_manager *, char *, void *), bdd_hook_type_t )); |
---|
| 485 | EXTERN int bdd_enable_reordering_reporting ARGS((bdd_manager *)); |
---|
| 486 | EXTERN int bdd_disable_reordering_reporting ARGS((bdd_manager *)); |
---|
| 487 | EXTERN bdd_reorder_verbosity_t bdd_reordering_reporting ARGS((bdd_manager *)); |
---|
| 488 | /* This function should not be used by an external user. It will |
---|
| 489 | * not be a part of any future release. |
---|
| 490 | */ |
---|
| 491 | EXTERN void bdd_set_reordered_field ARGS((bdd_manager *mgr, int n)); |
---|
| 492 | EXTERN bdd_node *bdd_bdd_vector_support ARGS((bdd_manager *mgr,bdd_node **F,int n)); |
---|
| 493 | EXTERN int bdd_bdd_vector_support_size ARGS((bdd_manager *mgr,bdd_node **F, int n)); |
---|
| 494 | EXTERN int bdd_bdd_support_size ARGS((bdd_manager *mgr,bdd_node *F)); |
---|
| 495 | EXTERN bdd_node *bdd_bdd_support ARGS((bdd_manager *mgr,bdd_node *F)); |
---|
| 496 | EXTERN bdd_node *bdd_add_general_vector_compose ARGS((bdd_manager *mgr,bdd_node *f,bdd_node **vectorOn,bdd_node **vectorOff)); |
---|
| 497 | EXTERN int bdd_bdd_leq ARGS((bdd_manager *mgr,bdd_node *f,bdd_node *g)); |
---|
| 498 | EXTERN bdd_node *bdd_bdd_boolean_diff ARGS((bdd_manager *mgr,bdd_node *f,int x)); |
---|
| 499 | |
---|
| 500 | /* |
---|
| 501 | ** Generator related functions. |
---|
| 502 | ** These are NOT to be used directly; only indirectly in the macros. |
---|
| 503 | */ |
---|
| 504 | EXTERN bdd_gen_status bdd_gen_read_status ARGS((bdd_gen *gen)); |
---|
| 505 | EXTERN bdd_gen *bdd_first_cube ARGS((bdd_t *, array_t **)); |
---|
| 506 | EXTERN boolean bdd_next_cube ARGS((bdd_gen *, array_t **)); |
---|
| 507 | EXTERN bdd_gen *bdd_first_disjoint_cube ARGS((bdd_t *, array_t **)); |
---|
| 508 | EXTERN boolean bdd_next_disjoint_cube ARGS((bdd_gen *, array_t **)); |
---|
| 509 | EXTERN bdd_gen *bdd_first_node ARGS((bdd_t *, bdd_node **)); |
---|
| 510 | EXTERN boolean bdd_next_node ARGS((bdd_gen *, bdd_node **)); |
---|
| 511 | EXTERN int bdd_gen_free ARGS((bdd_gen *)); |
---|
| 512 | |
---|
| 513 | /* |
---|
| 514 | * Miscellaneous |
---|
| 515 | */ |
---|
| 516 | EXTERN void bdd_set_gc_mode ARGS((bdd_manager *, boolean)); |
---|
| 517 | EXTERN bdd_external_hooks *bdd_get_external_hooks ARGS((bdd_manager *)); |
---|
| 518 | EXTERN bdd_t *bdd_construct_bdd_t ARGS((bdd_manager *mgr, bdd_node * fn)); |
---|
| 519 | EXTERN void bdd_dump_blif ARGS((bdd_manager *mgr, int nBdds, bdd_node **bdds, char **inames, char **onames, char *model, FILE *fp)); |
---|
| 520 | EXTERN void bdd_dump_blif_body ARGS((bdd_manager *mgr, int nBdds, bdd_node **bdds, char **inames, char **onames, FILE *fp)); |
---|
| 521 | EXTERN void bdd_dump_dot ARGS((bdd_manager *mgr, int nBdds, bdd_node **bdds, char **inames, char **onames, FILE *fp)); |
---|
| 522 | EXTERN bdd_node *bdd_make_bdd_from_zdd_cover ARGS((bdd_manager *mgr, bdd_node *node)); |
---|
| 523 | EXTERN bdd_node *bdd_zdd_complement ARGS((bdd_manager *mgr, bdd_node *node)); |
---|
| 524 | EXTERN int bdd_ptrcmp ARGS((bdd_t *f, bdd_t *g)); |
---|
| 525 | EXTERN int bdd_ptrhash ARGS((bdd_t *f,int size)); |
---|
| 526 | EXTERN long bdd_read_peak_memory ARGS (( bdd_manager *mgr)); |
---|
| 527 | EXTERN int bdd_read_peak_live_node ARGS (( bdd_manager *mgr)); |
---|
| 528 | EXTERN int bdd_set_pi_var ARGS((bdd_manager *mgr, int index)); |
---|
| 529 | EXTERN int bdd_set_ps_var ARGS((bdd_manager *mgr, int index)); |
---|
| 530 | EXTERN int bdd_set_ns_var ARGS((bdd_manager *mgr, int index)); |
---|
| 531 | EXTERN int bdd_is_pi_var ARGS((bdd_manager *mgr, int index)); |
---|
| 532 | EXTERN int bdd_is_ps_var ARGS((bdd_manager *mgr, int index)); |
---|
| 533 | EXTERN int bdd_is_ns_var ARGS((bdd_manager *mgr, int index)); |
---|
| 534 | EXTERN int bdd_set_pair_index ARGS((bdd_manager *mgr, int index, int pairIndex)); |
---|
| 535 | EXTERN int bdd_read_pair_index ARGS((bdd_manager *mgr, int index)); |
---|
| 536 | EXTERN int bdd_set_var_to_be_grouped ARGS((bdd_manager *mgr, int index)); |
---|
| 537 | EXTERN int bdd_set_var_hard_group ARGS((bdd_manager *mgr, int index)); |
---|
| 538 | EXTERN int bdd_reset_var_to_be_grouped ARGS((bdd_manager *mgr, int index)); |
---|
| 539 | EXTERN int bdd_is_var_to_be_grouped ARGS((bdd_manager *mgr, int index)); |
---|
| 540 | EXTERN int bdd_is_var_hard_group ARGS((bdd_manager *mgr, int index)); |
---|
| 541 | EXTERN int bdd_is_var_to_be_ungrouped ARGS((bdd_manager *mgr, int index)); |
---|
| 542 | EXTERN int bdd_set_var_to_be_ungrouped ARGS((bdd_manager *mgr, int index)); |
---|
| 543 | EXTERN int bdd_bind_var ARGS((bdd_manager *mgr, int index)); |
---|
| 544 | EXTERN int bdd_unbind_var ARGS((bdd_manager *mgr, int index)); |
---|
| 545 | EXTERN int bdd_is_lazy_sift ARGS((bdd_manager *mgr)); |
---|
| 546 | EXTERN void bdd_discard_all_var_groups ARGS((bdd_manager *mgr)); |
---|
| 547 | #endif |
---|
| 548 | |
---|