mirror of
https://github.com/ellmau/adf-obdd.git
synced 2025-12-19 09:29:36 +01:00
* Add NoGood and NoGoodStore (#65) * Update Flake to nix 22.05 * Add nogood-algorithm to the ADF * Add public api for the nogood-learner * Add direnv to gitignore * Avoid a Box, support custom heuristics functions * Add ng option with heu to binary * Introduce a new flag to handle big instances (modelcount vs adhoccount) Note that adhoccount without modelcount will not produce correct modelcounts if memoization is used * Add new heuristic * Add crossbeam-channel to represent an output-stream of stable models Uses a crossbeam-channel to fill a Queue, which can be used safely from outside the function. This rework is done to also allow ad-hoc output of results in a potentially multi-threaded setup. * Added documentation on this new feature on the module-page * Fix broken links in rust-doc * Update Readme for lib to reflect the new NoGood API * Add metadata to bin/Cargo.toml, add features * added a benchmark feature, to easily compile benchmark-releases * Fix facet count tests * Add multithread-safe functionality for the dictionary/ordering * Streamline a couple of API calls * Expose more structs and methods to the public API * Breaking some API (though nothing which is currently used in the binary) * Simple version of gh pages * Added more links and information to the landing page * Fix badges in the app-doc * Add two valued interpretation Parameterised the stable-nogood algorithm to allow a variable stability check function. * Refactor nogood-algorithm name * Update README.md and documentation (`docu` folder) `README.md` on the `/` level is now presenting the same information which is provided in `docs/index.md` * Update main - Update main functionality - Update naming * Fix cli-test * Update Version to 0.3.0 Due to braking API changes and reaching a milestone, the version is incremented to 0.3.0 (beta) * Update Documentation navigation (#81) * flake.lock: Update Flake lock file updates: • Updated input 'flake-utils': 'github:numtide/flake-utils/1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1' (2022-05-30) → 'github:numtide/flake-utils/7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249' (2022-07-04) • Updated input 'gitignoresrc': 'github:hercules-ci/gitignore.nix/bff2832ec341cf30acb3a4d3e2e7f1f7b590116a' (2022-03-05) → 'github:hercules-ci/gitignore.nix/f2ea0f8ff1bce948ccb6b893d15d5ea3efaf1364' (2022-07-21) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/8b538fcb329a7bc3d153962f17c509ee49166973' (2022-06-15) → 'github:NixOS/nixpkgs/e43cf1748462c81202a32b26294e9f8eefcc3462' (2022-08-01) • Updated input 'nixpkgs-unstable': 'github:NixOS/nixpkgs/b1957596ff1c7aa8c55c4512b7ad1c9672502e8e' (2022-06-15) → 'github:NixOS/nixpkgs/7b9be38c7250b22d829ab6effdee90d5e40c6e5c' (2022-07-30) • Updated input 'rust-overlay': 'github:oxalica/rust-overlay/9eea93067eff400846c36f57b7499df9ef428ba0' (2022-06-17) → 'github:oxalica/rust-overlay/9055cb4f33f062c0dd33aa7e3c89140da8f70057' (2022-08-02) * Add type alias for NoGood Add a type alias `Interpretation` for NoGood to reflect the duality where an Interpretation might become a NoGood. * Add documentation information about later revisions on VarContainer Co-authored-by: Maximilian Marx <mmarx@wh2.tu-dresden.de>
63 lines
4.9 KiB
Markdown
63 lines
4.9 KiB
Markdown
[](https://crates.io/crates/adf_bdd)
|
|
[](https://docs.rs/adf_bdd/latest/adf_bdd/)
|
|

|
|
[](https://coveralls.io/github/ellmau/adf-obdd)
|
|

|
|
 
|
|
[](https://github.com/ellmau/adf-obdd/releases)
|
|

|
|
[](https://github.com/ellmau/adf-obdd/discussions) 
|
|
|
|
| [Home](index.md) | [Binary](adf-bdd.md) | [Library](adf_bdd.md)| [Repository](https://github.com/ellmau/adf-obdd) |
|
|
|--- | --- | --- | --- |
|
|
|
|
# Abstract Dialectical Frameworks solved by (ordered) Binary Decision Diagrams; developed in Dresden (ADF-oBDD project)
|
|
|
|
This project is currently split into two parts:
|
|
- a [binary (adf-bdd)](adf-bdd.md), which allows one to easily answer semantics questions on abstract dialectical frameworks
|
|
- a [library (adf_bdd)](adf_bdd.md), which contains all the necessary algorithms and an open API which compute the answers to the semantics questions
|
|
|
|
Latest documentation of the API can be found [here](https://docs.rs/adf_bdd/latest/adf_bdd/).
|
|
The current version of the binary can be downloaded [here](https://github.com/ellmau/adf-obdd/releases).
|
|
|
|
Do not hesitate to report bugs or ask about features in the [issues-section](https://github.com/ellmau/adf-obdd/issues) or have a conversation about anything of the project in the [discussion space](https://github.com/ellmau/adf-obdd/discussions)
|
|
|
|
|
|
## Abstract Dialectical Frameworks
|
|
An abstract dialectical framework (ADF) consists of abstract statements. Each statement has an unique label and might be related to other statements (s) in the ADF. This relation is defined by a so-called acceptance condition (ac), which intuitively is a propositional formula, where the variable symbols are the labels of the statements. An interpretation is a three valued function which maps to each statement a truth value (true, false, undecided). We call such an interpretation a model, if each acceptance condition agrees to the interpration.
|
|
## Ordered Binary Decision Diagram
|
|
An ordered binary decision diagram is a normalised representation of binary functions, where satisfiability- and validity checks can be done relatively cheap.
|
|
|
|
## Input-file format:
|
|
Each statement is defined by an ASP-style unary predicate s, where the enclosed term represents the label of the statement.
|
|
The binary predicate ac relates each statement to one propositional formula in prefix notation, with the logical operations and constants as follows:
|
|
- and(x,y): conjunction
|
|
- or(x,y): disjunctin
|
|
- iff(x,Y): if and only if
|
|
- xor(x,y): exclusive or
|
|
- neg(x): classical negation
|
|
- c(v): constant symbol "verum" - tautology/top
|
|
- c(f): constant symbol "falsum" - inconsistency/bot
|
|
|
|
# Features
|
|
|
|
- `adhoccounting` will cache the modelcount on-the-fly during the construction of the BDD
|
|
- `adhoccountmodels` allows in addition to compute the models ad-hoc too. Note that the memoization approach for modelcounting does not work correctly if `adhoccounting` is set and `adhoccountmodels` is not.
|
|
|
|
# Development notes
|
|
Additional information for contribution, testing, and development in general can be found here.
|
|
## Contributing to the project
|
|
You want to help and contribute to the project? That is great. Please see the [contributing guidelines](https://github.com/ellmau/adf-obdd/blob/main/.github/CONTRIBUTING.md) first.
|
|
|
|
# Acknowledgements
|
|
This work is partly supported by Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) in projects number 389792660 (TRR 248, [Center for Perspicuous Systems](https://www.perspicuous-computing.science/)),
|
|
the Bundesministerium für Bildung und Forschung (BMBF, Federal Ministry of Education and Research) in the
|
|
[Center for Scalable Data Analytics and Artificial Intelligence](https://www.scads.de) (ScaDS.AI),
|
|
and by the [Center for Advancing Electronics Dresden](https://cfaed.tu-dresden.de) (cfaed).
|
|
|
|
# Affiliation
|
|
This work has been partly developed by the [Knowledge-Based Systems Group](http://kbs.inf.tu-dresden.de/), [Faculty of Computer Science](https://tu-dresden.de/ing/informatik) of [TU Dresden](https://tu-dresden.de).
|
|
|
|
# Disclaimer
|
|
Hosting content here does not establish any formal or legal relation to TU Dresden.
|