Giter Site home page Giter Site logo

bellacompiler's Introduction

Bella

A knowledge compiler for wDNNF and (s)d-DNNF circuits.

Supported operating systems platforms: Linux, macOS (Apple silicon), and Windows.

⚠️ On Windows, hMETIS is significantly slower since communication via files is used. Therefore, we suggest using KaHyPar (the argument -ka).

Running Bella

To run the knowledge compiler:

./Bella -h
./Bella < -w | -d | -sd > < -ph | -ka | -cd > -i input_file [-c] [-e] [-r] [-s statistics_file] [-o output_file] [-t positive_number] 
        [ -r_dh | -dlcs_dh | -dlis_dh | -dlcs_dlis_dh | -vsids_dh | -vsads_dh | -jwos_dh | -jwts_dh | -eupc_dh | -aupc_dh ] 
        [ -n_ccs | -s_ccs | -h_ccs | -b_ccs | -c_ccs ] [ -n_cccs | -s_cccs | -c_cccs ]
        [ -n_hnw | -s_hnw | -cl_hnw ] [ -a_rhc | iup_rhc | -fs_rhc | -ehc_rhc | -iup_fs_rhc ]

Configurations

Circuit types:
     -w - wDNNF circuit
     -d - d-DNNF circuit
     -sd - sd-DNNF circuit

Partitioning hypergraph types:
     -ph - PaToH (Linux, macOS), hMETIS (Windows)
     -ka - KaHyPar (Linux, macOS, Windows)
     -cd - Cara (Linux, macOS)

Files:
     -i - specifies the CNF file name
     -s - specifies the file name where the statistics will be saved
     -o - specifies the file name where the compiled circuit will be saved

Decision heuristics:
     -r_dh - random
     -dlcs_dh - dynamic largest combined sum (DLCS)
     -dlis_dh - dynamic largest individual sum (DLIS)
     -dlcs_dlis_dh - DLCS + DLIS as a tie-breaker (DLCS-DLIS)
     -vsids_dh - variable state independent decaying sum (VSIDS)
     -vsads_dh - variable state aware decaying sum (VSADS) (default)
     -jwos_dh - Jeroslow-Wang (one-sided)
     -jwts_dh - Jeroslow-Wang (two-sided)
     -eupc_dh - exact unit propagation count (EUPC)
     -aupc_dh - approximate unit propagation count (AUPC)

Component caching schemes:
     -n_ccs - none
     -s_ccs - standard
     -h_ccs - hybrid
     -b_ccs - basic (default)
     -c_ccs - Cara

Component cache cleaning strategies:
     -n_cccs - none
     -s_cccs - sharpSAT
     -c_cccs - Cara (default)

Hypergraph node weight types:
     -n_hnw - none
     -s_hnw - standard
     -cl_hnw - clause length (default)

Recomputing hypergraph cut types:
     -a_rhc - hypergraph cuts are computed at each node
     -iup_rhc - a new hypergraph cut is computed when immense unit propagation is performed (default)
     -fs_rhc - a new hypergraph cut is computed when the current formula is split
     -ehc_rhc - a new hypergraph cut is computed when the current hypergraph cut is empty
     -iup_fs_rhc - a new hypergraph cut is computed when immense unit propagation is performed, or the current formula is split

-h - help
-c - counts the models
-e - uses the equivalence simplification method (recommended)
-t - sets the compilation timeout (default: 86400 s)
-r - the statistics file is in a form readable by a human

Syntax of circuit files

The file format is the same as defined in the user manual (Section C) of the c2d compiler.

  • a weak AND node is specified as follows: B c i1 i2 ... ic
  • a decomposable AND node is specified as follows: A c i1 i2 ... ic

Used software

SAT solver

Hash map

Hypergraph partitioning

Other

Paper

If you use Bella in an academic setting, please cite the following paper describing the knowledge compiler:

@inproceedings{illner2024compiler,
    title     = {A Compiler for Weak Decomposable Negation Normal Form},
    author    = {Illner, Petr and Ku{\v{c}}era, Petr},
    booktitle = {Proceedings of the AAAI Conference on Artificial Intelligence},
    volume    = {38},
    number    = {9},
    pages     = {10562--10570},
    year      = {2024}
}

bellacompiler's People

Contributors

illner avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.