{"id":24865542,"url":"https://github.com/kfl/muddy","last_synced_at":"2025-03-26T18:44:49.604Z","repository":{"id":910919,"uuid":"670786","full_name":"kfl/muddy","owner":"kfl","description":"MuDDy is a ML interface to the Binary Decision Diagrams package BuDDy","archived":false,"fork":false,"pushed_at":"2010-05-21T09:05:28.000Z","size":272,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-01T00:00:00.456Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kfl.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2010-05-17T11:25:21.000Z","updated_at":"2016-10-09T02:51:13.000Z","dependencies_parsed_at":"2022-08-16T11:25:20.755Z","dependency_job_id":null,"html_url":"https://github.com/kfl/muddy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kfl%2Fmuddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kfl%2Fmuddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kfl%2Fmuddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kfl%2Fmuddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kfl","download_url":"https://codeload.github.com/kfl/muddy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245717689,"owners_count":20661146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-01T00:00:05.220Z","updated_at":"2025-03-26T18:44:49.574Z","avatar_url":"https://github.com/kfl.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"MuDDy - ML interface to BuDDy\n=============================\n\nHomepage:\n  \u003chttp://github.com/kfl/muddy\u003e\n\nAuthors:\n  Ken Friis Larsen and Jakob Lichtenberg\n\nCopyright (C) 1997-2010 by Ken Friis Larsen and Jakob Lichtenberg.\n\n\nThis README file contains:\n\n1. WHAT IS MUDDY\n2. ML IMPLEMENTATIONS AND PLATFORMS\n3. REQUIREMENTS\n4. INSTALLATION\n5. STARTUP\n6. DOCUMENTATION\n7. EXAMPLES\n8. HISTORY AND ACKNOWLEDGEMENTS\n\n\n\n1. WHAT IS MUDDY\n----------------\n\nMuDDy is a ML interface to the Binary Decision Diagrams package BuDDy\nwritten in C.  BuDDy is written by Jørn Lind-Nielsen and is available\nat the homepage: \n  \u003chttp://www.itu.dk/research/buddy\u003e\n\nNewer versions are at:\n  \u003chttp://sourceforge.net/projects/buddy/\u003e\n\nMuDDy is used by a small set of people, and the functionality and\ndesign of the interface corresponds to these people's need.  Please\ncomment on the design of the interface to the authors.\n\nMuDDy-SML is the SML interface and MuDDy-OCaml is the O'Caml\ninterface.\n\n\n2. ML IMPLEMENTATIONS AND PLATFORMS\n-----------------------------------\n\nFrom MuDDy 2.01 we support three ML implementations:\n \n  * MuDDy-SML is the Moscow ML and MLton SML interface and\n  * the MuDDy-OCaml is the O'Caml interface.\n\nAnd we support three platforms:\n\n  * Mac OS-X\n  * Linux and\n  * Windows.\n\n3. REQUIREMENTS\n---------------\n\n###On all platforms:\n\nMake:  MuDDy needs a non-broken make to install.\n\nWe recommend GNU make from Free Software Foundation. GNU make is included in\nmost Linux distributions, and is furthermore available from:\n  \u003chttp://www.gnu.org/software/make/make.html\u003e\n\n\n###On Linux platforms:\n\nMuDDy is developed under Linux and is not tested on other\nUNIX-like systems.  However, it should work without problems on\nother UNIX-like systems.  MuDDy/Mosml requires a UNIX-like system\nwith Moscow ML dynlib support.  Please report back if you are\nable to compile MuDDy on other UNIX-like systems.\n\n\n###On Windows platform\n\nMuDDy is (was once) tested on:\n\n* Windows XP,\n* Using Visual Studio 6 SP5 (native) (compiler: cl and linker: link)\n* GNU Make included in CygWin\n\n\n###To use MuDDy-SML:\n\nWe use Moscow ML's foreign function interface to call the C functions\nin BuDDy.  Therefore, MuDDy can only be used with Moscow ML (version\n1.44 or newer).  (However, we are very interested if somebody wants to\nport MuDDy to other SML systems and are willing to provide information\nand help.)\n\nThis version of MuDDy is only tested under Moscow ML 2.00 and newer\ncompiled with dynlib support, however, the code should work on version\n1.44 or newer compiled with dynlib support.  Moscow ML is available\nfrom:\n  \u003chttp://www.itu.dk/~sestoft/mosml.html\u003e\n\n\n###To use MuDDy-OCaml:\n\nWe have tested with various O'Caml versions starting from 3.04 to\n3.11.1. O'Caml is available from:\n  \u003chttp://www.ocaml.org\u003e\n\nWindows: We have only tested the native distribution.\n\n\n4. INSTALLATION\n---------------\n\n### 4.1. Extracting the sources\nTo extract the package:\n    tar xzf muddy.tgz\n    cd muddy\n\nThe directory you are in now will be refered to as the MuDDy home dir.\n\n    Todo: config-file\n\n### 4.2. Building BuDDy (required)\n\nFirst build BuDDy with:\n    make buddy\n\nThe result of this process is:\n    buddy/src/libbdd.a                # BuDDy static bdd library, Linux\n    buddy/src/libbdd.lib              # BuDDy static bdd library, Windows\n    buddy/src/{bdd,fdd,bvec}.h        # BuDDy header files\n\nDocumentation can be found in:\n    buddy/doc/buddy.ps\n    buddy/doc/bddnotes.ps\n    buddy/doc/tech.txt\n\n\n### 4.3. Building MuDDy-SML (optional)\n\nAfter BuDDy is build you can build MuDDy-SML:\n    make muddy-sml\n\nThe result of this process is the following files:\n    muddy-sml/{bdd,fdd,bvec,MuddyCore}.ui  # Compiled signatures\n    muddy-sml/{bdd,fdd,bvec,MuddyCore}.uo  # Compiled byte-code\n    muddy-sml/muddy.so                     # Dynamic library, Linux\n    muddy-sml/muddy.dll                    # Dynamic library, Windows\n\nComment: 1) The bdd, fdd and bvec SML modules all utilizes the\n(internal) MuddyCore SML module.  2) The MuddyCore SML modules loads\nthe dynamic C library muddy.{so,dll}. 3) The dynamic C library\nmuddy.{so,dll} contains the interface code and the BuDDy static\nlibrary libbdd.{a,lib}.\n\nThe documentation is a README.sml file and three signature files:\n    README.sml\n    muddy-sml/{bdd,fdd.bvec}.sig\n    muddy-sml/examples\n\n\n\n### 4.4 Building MuDDy-OCaml (optional)\n\nAfter BuDDy is build you can build MuDDy-OCaml:\n    make muddy-ocaml\n\nThe result of this process is the following files:\n    muddy-ocaml/{bdd,fdd,bvec}.cmi # Compiled signatures\n    muddy-ocaml/{bdd,fdd,bvec}.cmo # Compiled Byte-code\n    muddy-ocaml/{bdd,fdd,bvec}.cmx # Compiled native-code cmx files\n    muddy-ocaml/{bdd,fdd,bvec}.o   # Compiled native-code objects (Linux)\n    muddy-ocaml/{bdd,fdd,bvec}.obj # Compiled native-code objects (Windows)\n\n    Todo:\n    muddy-ocaml/libmuddy.a         # Todo\n    muddy-ocaml/libmuddy.lib       # Todo\n    muddy-ocaml/muddy.a            # Todo\n    muddy-ocaml/muddy.cma          # Todo\n    muddy-ocaml/muddy.cmxa         # Todo\n\n\nThe documentation is a README.ocaml file and three signature files:\n    README.ocaml\n    muddy-ocaml/{bdd,fdd.bvec}.mli\n    muddy-ocaml/examples\n\n\n\n5. STARTUP\n----------\n\n### 5.1 MuDDy-SML\n\nTo use the MuDDy-SML package, the Moscow ML runtime system must have\naccess to:\n * The shared library `muddy.so`\n * The compiled ML modules.\n\nThese files are all available in the MuDDy-SML dir after build.\n\nIf the `MUDDYHOME` environment variable points to the MuDDy home dir, MuDDy\nwill be able to find the shared library.\n\nTherefore, assuming MuDDy home dir is the current directory, and you\nuse the bash shell:\n    export MUDDYHOME=`pwd`\n\nOr, if you use tcsh shell:\n    setenv MUDDYHOME `pwd`\n\nNow, when you use Moscow ML you must remember to tell it where the\ncompiled SML modules can found.  For example, to invoke the\ninteractive environment do:\n    mosml -I $MUDDYHOME/muddy-sml\n\n(If the `MUDDYHOME` environment variable is not set, the shared library\nmust be placed in the dynamic library load path, controlled by the\nLD_LIBRARY_PATH environment variable, and you must still provide the\npath to the SML modules when invoking Moscow ML.  For more information\non these matters refer to the Moscow ML documentation.)\n\n\n### 5.2 MuDDy-OCaml\n\nTo build a new MuDDy enabled top level environment with MuDDy:\n    ocamlmktop -I $MUDDYHOME/muddy-ocaml muddy.cma -o ocamlmuddy\n\nTo byte-code compile a file `foo.ml` that uses the MuDDy library:\n    ocamlc -I $MUDDYHOME/muddy-ocaml muddy.cma foo.ml -o foo\n\nTo native-code compile a file foo.ml that uses the MuDDy library:\n    ocamlopt -I $MUDDYHOME/muddy-ocaml muddy.cmxa foo.ml -o foo\n\n\n6. DOCUMENTATION\n----------------\n\nSince MuDDy is just an interface to BuDDy, the documentation is based\non the documentation for BuDDy, available in $MUDDYHOME/buddy/doc/buddy.ps\n\nMuDDy consists of three modules:\n\n  * `bdd` implementing the functionality of the BuDDy `bdd.h` header\n  * `fdd` implementing the functionality of the BuDDy `fdd.h` header\n  * `bvec` implementing the functionality of the BuDDy `bvec.h` header\n\nEach module has a sig/mli file.  In this file you can find:\n\n  * Short documentation of the types and values.\n  * A comparison to the BuDDy C types and function declarations.\n\nYou should be aware, that there is the general difference between\nMuDDy and BuDDy that when you use MuDDy, reference counting of BDD\nnodes is managed automatically.\n\nIdentifiers are almost the same in MuDDy-SML and MuDDy-OCaml.\nHowever, since SML and O'Caml disagrees about what is a valid\nidentifier there are some minor differences:\n\n    MuDDy-OCaml:  MuDDy-SML:\n\n    tt            TRUE\n    ff            FALSE\n     \n    diff          DIFF\n    imp           IMP\n    lessth        LESSTH\n    biimp         BIIMP\n    bor           OR\n    invimp        INVIMP\n    nand          NAND\n    nor           NOR\n    band          AND\n    xor           XOR\n    \n    not           NOT\n    \n    ite           ITE\n    \n    ordering      method      (this is a type)\n    win2          WIN2\n    win2ite       WIN2ITE\n    sift          SIFT\n    siftite       SIFTITE\n    random        RANDOM\n    reorder_none  REORDER_NONE\n\n\nSome tutorial material is includes in:\n\n* University of Cambridge Computer Laboratory Technical Report No. 481 \n  _Combining the Hol98 Proof Assistant with the BuDDy BDD package_\n  by Mike Gordon and Ken Friis Larsen.  The report is available at \n  \u003chttp://www.cl.cam.ac.uk/~mjcg/BDD/#TR\u003e\n\n* _A MuDDy Experience–ML Bindings to a BDD Library_ by Ken Friis Larsen.\n  Available from: \u003chttp://www.springerlink.com/content/07618767282187nv/\u003e\n\n7. EXAMPLES\n-----------\n\nSurprisingly, the examples are in the examples directories!  In\nmuddy-sml/examples you find SML examples and in muddy-ocaml/examples\nyou find O'Caml examples.\n\n(For now, we only provide one example: test.sml / test.ml)\n\nTo run the test example under MuDDy-SML, start Moscow ML in the\n$MUDDYHOME/muddy-sml/examples dir, and write:\n\n    use \"test.sml\";\n\nRemember to follow the instructions in the STARTUP section regarding\nthe MUDDYHOME variable, and the -I $MUDDYHOME directive.\n\nTo run the test example under MuDDy-OCaml, start your MuDDy enabled\ntop environment in the $MUDDYHOME/muddy-ocaml/examples dir, and write:\n\n    #use \"test.ml\";;\n\nRemember to follow the instructions in the STARTUP section to see how\nto make a MuDDy enabled top environment.\n\n\n8. HISTORY AND ACKNOWLEDGEMENTS\n-------------------------------\n\nThe first version of MuDDy was written by Ken Friis Larsen while\nvisiting Mike Gordon at Computer Lab. at University of Cambridge (UK),\nin autumn 1997 and spring 1998.  Jakob Lichtenberg then extended MuDDy\nto cope with the new BuDDy features: Finite Domain Blocks (`fdd`s) and\nBoolean Vectors (`bvec`s).  In 2001-2002 we added support for\nO'Caml. In 2003 Ken Friis Larsen added support for MLton while\nvisiting Oege de Moor and Ganesh Sittampalam at Oxford University\nComputing Laboratory.\n\nIt should be stressed that MuDDy is only a type safe SML wrapping\naround Jørn Lind-Nielsen's great BuDDy package, and that all the \"hard\nwork\" is done by the BuDDy package.  Jørn Lind-Nielsen has answered\nlots of BuDDy questions (and BDD questions), and have been willing to\nchange the BuDDy package to make the SML wrapping easier.\n\nA special thanks should also go to Peter Sestoft who have answered\ntons of questions about the Moscow ML/Caml Light runtime system, and\nhe even audited the C code at one point to help us find a bug.\n\nThe wrapping of C functions caused surprisingly few problems, this is\nmainly due to the magnificent designed Caml Light runtime system that\nMoscow ML is based upon.  Caml Light is created by Xavier Leroy and\nDamien Doligez and is available from:\n  \u003chttp://pauillac.inria.fr/caml/overview-caml-light-eng.html\u003e\n\nThe first usage of MuDDy was in the Hol98 theorem prover.  This usage\nhas influenced lots of decisions about design of the interface.\n\nWe would also like to thanks the following people who have provided\nlots of good feedback and encouragement (listed in alphabetic order):\n\n    Henrik Reif Andersen (IT University of Copenhagen)\n    Mike Gordon          (Computer Lab. Univerity of Cambridge (UK))\n    Jesper Møller        (IT University of Copenhagen)\n    Michael Norris       (Computer Lab. Univerity of Cambridge (UK))\n    Konrad Slind         (Computer Lab. Univerity of Cambridge (UK))\n\n\n\nCOPYRIGHT NOTICE for MuDDy\n--------------------------\n\nMuDDy - a SML interface to the Binary Decision Diagrams package BuDDy\nCopyright (c) 1997-2010 Ken Friis Larsen and Jakob Lichtenberg\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkfl%2Fmuddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkfl%2Fmuddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkfl%2Fmuddy/lists"}