From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.0 required=5.0 tests=AWL,DNS_FROM_SECURITYSAGE autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail1-relais-roc.national.inria.fr (mail1-relais-roc.national.inria.fr [192.134.164.82]) by yquem.inria.fr (Postfix) with ESMTP id B7996BB84 for ; Wed, 12 Nov 2008 16:46:17 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: An4DAB+JGknAXQImgWdsb2JhbACUNAEBFiK7CYNX X-IronPort-AV: E=Sophos;i="4.33,590,1220220000"; d="scan'208";a="19880564" Received: from discorde.inria.fr ([192.93.2.38]) by mail1-smtp-roc.national.inria.fr with ESMTP; 12 Nov 2008 16:46:17 +0100 Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id mACFkH9Z016159 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=OK) for ; Wed, 12 Nov 2008 16:46:17 +0100 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqYCAFSJGknBMxgBhWdsb2JhbACUNAEBAQoLCgUTuwiDVw X-IronPort-AV: E=Sophos;i="4.33,590,1220220000"; d="scan'208";a="19118259" Received: from soleil.uvsq.fr ([193.51.24.1]) by mail3-smtp-sop.national.inria.fr with ESMTP; 12 Nov 2008 16:46:16 +0100 Received: from hydrogene.pps.jussieu.fr (hydrogene.pps.jussieu.fr [134.157.168.1]) by soleil.uvsq.fr (8.14.1/jtpda-5.4) with ESMTP id mACFk5RA053913 for ; Wed, 12 Nov 2008 16:46:10 +0100 (CET) Received: from hydrogene.pps.jussieu.fr (localhost.localdomain [127.0.0.1]) by hydrogene.pps.jussieu.fr (8.13.4/jtpda-5.4) with ESMTP id mACFB8j6028679 for ; Wed, 12 Nov 2008 16:11:08 +0100 Received: (from abate@localhost) by hydrogene.pps.jussieu.fr (8.13.4/8.13.2/Submit) id mACFB8x7028678 for caml-list@inria.fr; Wed, 12 Nov 2008 16:11:08 +0100 Date: Wed, 12 Nov 2008 16:11:08 +0100 From: Pietro Abate To: caml-list@inria.fr Subject: BDD reloaded Message-ID: <20081112151108.GA18384@uranium.pps.jussieu.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline Content-Transfer-Encoding: 8bit X-Operating-System: GNU/Linux User-Agent: Mutt/1.5.9i X-Greylist: Delayed for 00:34:52 by milter-greylist-3.0 (soleil.uvsq.fr [193.51.24.1]); Wed, 12 Nov 2008 16:46:10 +0100 (CET) X-Miltered: at discorde with ID 491AFA49.000 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Miltered: at soleil.uvsq.fr with ID 491AFA3D.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Score: MSGID : 491AFA3D.000 on soleil.uvsq.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham X-Virus-Scanned: ClamAV 0.92.1/8622/Wed Nov 12 12:59:01 2008 on soleil.uvsq.fr X-Virus-Status: Clean X-Spam: no; 0.00; ocaml:01 ocaml:01 bindings:01 inrialpes:01 bindings:01 lri:01 filliatr:01 publis:01 hash-consing:01 lri:01 filliatr:01 inrialpes:01 pop-art:01 univ-evry:01 solver:01 Hi all, I've done my homework and I've collected few links about bdd libraries. I still have few questions: + Is there a native (and efficient) ocaml BDD implementation ? In particular, as pointed out on this mailing list, with variable ordering and other possible optimizations that can be compared in speed with buddy/cudd (c/c++). = From what I can see, the answer is no. A lot of toy implementations though... + Do you know if there is an ocaml binding for buddy ? = I guess no, but I hope I'm wrong... + Does anybody have experience with the bindings done at inrialpes to CUDD ? Is this project still actively maintained / used ? How does it compare efficiency-wise with other bdd libraries ? + If I was to start writing my ocaml bindings, which c/c++ library would you advice ? Buddy seems widely used, but I wasn't able to find any hard evidence that it is the best bdd library available... Do you know of any paper surveying different bdd implementations ? thanks :) p ----------------------------- My links for reference ---------------- Please add to the list if you know of other libraries that I forgot to mention. This might end up to be a FAQ... ==Ocaml libraries (bindings and native in no particular order) :== * Jean-Christophe Filliâtre (ocaml implementation) http://www.lri.fr/~filliatr/ftp/publis/hash-consing2.ps.gz Paper http://www.lri.fr/~filliatr/ftp/ocaml/bdd/ Code * bindings to the CUDD BDD library http://www.inrialpes.fr/pop-art/people/bjeannet/mlxxxidl-forge/ Code * Olivier Michel (ocaml implementation) http://www.ibisc.univ-evry.fr/~michel/BDD/ Code * Xavier Leroy (part of an experimental sat solver) https://gforge.inria.fr/plugins/scmsvn/viewcvs.php/attic/xlsat/?root=sodiac Code * John Harrison http://www.cl.cam.ac.uk/~jrh13/atp/OCaml/bdd.ml Code * Ocaml implementation (who is the author ?) http://oops.tepkom.ru/projects/ocamlbdd/ Wiki ==C/C++ Libraries== * http://buddy.wiki.sourceforge.net/ Buddy * http://vlsicad.eecs.umich.edu/BK/Slots/cache/www.itu.dk/research/buddy/index.html Old version of Buddy * http://vlsi.colorado.edu/~fabio/CUDD/cuddIntro.html CUDD * many other cited in the wikipedia link on bdds ==Relevant Mailing list Messages== The ocaml ml has several references to BDDs. These are 3 interesting threads that I've used as a starting point for my research. In this thread http://caml.inria.fr/pub/ml-archives/caml-list/2000/01/405b651014b09c51c691aab72d69166a.en.html there is mention of a possible binding for Jørn Lind-Nielsen's BDD library BuDDy. I'm wondering if this binding was ever released. In this thread http://groups.google.com/group/fa.caml/browse_frm/thread/4af5391f52279e38/550b7df324ae1900#550b7df324ae1900 Alain Frish points out that none of existing ocaml libraries implements automatic reordering of variables... And I don't know if the state of affairs is changed at this regard. In this thread http://caml.inria.fr/pub/ml-archives/caml-list/2001/04/8bbf7629ef3ef299c16f78bd2b986e36.en.html David Mentre announces a preliminary work on binding for the cudd library, but the link is broken... this link currently is broken: http://www-rocq.inria.fr/~mentre/software/ocaml-bdd/ and there is a mention to a caml-light implementation of a robdd library that I was also not able to retrieve.