12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394(* ----------------------------------------------------------------
Interface ocaml pour gbdd
-------------------------------------------------------------------
On garde les noms compatibles "cudd-idl" utilisés dans lurette :
Bdd._print ??
Bdd.draw
Bdd.nbminterms
---------------------------------------------------------------- *)(* Le type abstrait *)typet(* Init du module *)externalinit_psz_verb:int->bool->unit="gbdd_cml_init_with_psz_verb"letinit:?pagesize:(int)->?verbose:(bool)->unit->unit=fun?(pagesize=10000)?(verbose=true)_->init_psz_verbpagesizeverbose(* Accès aux noeuds *)externalroot_var:t->int="gbdd_cml_root_var"externalhigh_part:t->t="gbdd_cml_high_part"externallow_part:t->t="gbdd_cml_low_part"(* Tests *)externalis_leaf:t->bool="gbdd_cml_is_leaf"externalis_true:t->bool="gbdd_cml_is_true"externalis_false:t->bool="gbdd_cml_is_false"(* Constantes *)externaldtrue:unit->t="gbdd_cml_true"externaldfalse:unit->t="gbdd_cml_false"externalnull:unit->t="gbdd_cml_null"(* Identité et Inverse *)externalidy:int->t="gbdd_cml_idy"externalnidy:int->t="gbdd_cml_nidy"(* Opérations booléennes *)externaldnot:t->t="gbdd_cml_not"externaldor:t->t->t="gbdd_cml_or"externaldand:t->t->t="gbdd_cml_and"externalxor:t->t->t="gbdd_cml_xor"externaleq:t->t->t="gbdd_cml_eq"externalite:t->t->t->t="gbdd_cml_ite"(* Infos sur la structure *)externalsize:t->int="gbdd_cml_size"externalsupportsize:t->int="gbdd_cml_supportsize"(* quantification *)externalexist_local:t->t->t="gbdd_cml_exist"externalforall_local:t->t->t="gbdd_cml_forall"letsupport_of_listvars=assert(vars<>[]);List.fold_left(funacci->dandacc(idyi))(idy(List.hdvars))(List.tlvars)letrec(exist:intlist->t->t)=funvarsbdd->exist_local(support_of_listvars)bddletrec(forall:intlist->t->t)=funvarsbdd->forall_local(support_of_listvars)bdd(* Extra *)externalprint_mons:t->unit="gbdd_cml_print_mons"(* compatibilité cudd *)externaltopvar:t->int="gbdd_cml_root_var"externaldthen:t->t="gbdd_cml_high_part"externaldelse:t->t="gbdd_cml_low_part"externalithvar:int->t="gbdd_cml_idy"externalis_cst:t->bool="gbdd_cml_is_leaf"externalsupport:t->t="gbdd_cml_cube"(* Extra programmés directement en caml *)letreclist_of_support(b:t)=(letreclosx=(if(is_leafx)then[]else((topvarx)::(los(dthenx))))inlos(supportb))