cadical 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +26 -0
- data/README.md +101 -0
- data/ext/cadical/cadical/LICENSE +28 -0
- data/ext/cadical/cadical/README.md +65 -0
- data/ext/cadical/cadical/VERSION +1 -0
- data/ext/cadical/cadical/src/analyze.cpp +1360 -0
- data/ext/cadical/cadical/src/arena.cpp +30 -0
- data/ext/cadical/cadical/src/arena.hpp +105 -0
- data/ext/cadical/cadical/src/assume.cpp +616 -0
- data/ext/cadical/cadical/src/averages.cpp +34 -0
- data/ext/cadical/cadical/src/averages.hpp +37 -0
- data/ext/cadical/cadical/src/backbone.cpp +631 -0
- data/ext/cadical/cadical/src/backtrack.cpp +177 -0
- data/ext/cadical/cadical/src/backward.cpp +231 -0
- data/ext/cadical/cadical/src/bins.cpp +22 -0
- data/ext/cadical/cadical/src/bins.hpp +22 -0
- data/ext/cadical/cadical/src/block.cpp +824 -0
- data/ext/cadical/cadical/src/block.hpp +37 -0
- data/ext/cadical/cadical/src/cadical.cpp +1026 -0
- data/ext/cadical/cadical/src/cadical.hpp +1419 -0
- data/ext/cadical/cadical/src/ccadical.cpp +208 -0
- data/ext/cadical/cadical/src/ccadical.h +74 -0
- data/ext/cadical/cadical/src/checker.cpp +649 -0
- data/ext/cadical/cadical/src/checker.hpp +173 -0
- data/ext/cadical/cadical/src/clause.cpp +689 -0
- data/ext/cadical/cadical/src/clause.hpp +190 -0
- data/ext/cadical/cadical/src/collect.cpp +545 -0
- data/ext/cadical/cadical/src/compact.cpp +550 -0
- data/ext/cadical/cadical/src/condition.cpp +940 -0
- data/ext/cadical/cadical/src/config.cpp +101 -0
- data/ext/cadical/cadical/src/config.hpp +20 -0
- data/ext/cadical/cadical/src/congruence.cpp +7880 -0
- data/ext/cadical/cadical/src/congruence.hpp +757 -0
- data/ext/cadical/cadical/src/constrain.cpp +64 -0
- data/ext/cadical/cadical/src/contract.cpp +27 -0
- data/ext/cadical/cadical/src/contract.hpp +139 -0
- data/ext/cadical/cadical/src/cover.cpp +704 -0
- data/ext/cadical/cadical/src/cover.hpp +34 -0
- data/ext/cadical/cadical/src/decide.cpp +347 -0
- data/ext/cadical/cadical/src/decompose.cpp +738 -0
- data/ext/cadical/cadical/src/decompose.hpp +23 -0
- data/ext/cadical/cadical/src/deduplicate.cpp +275 -0
- data/ext/cadical/cadical/src/definition.cpp +283 -0
- data/ext/cadical/cadical/src/delay.hpp +38 -0
- data/ext/cadical/cadical/src/drattracer.cpp +153 -0
- data/ext/cadical/cadical/src/drattracer.hpp +55 -0
- data/ext/cadical/cadical/src/elim.cpp +1171 -0
- data/ext/cadical/cadical/src/elim.hpp +53 -0
- data/ext/cadical/cadical/src/elimfast.cpp +570 -0
- data/ext/cadical/cadical/src/ema.cpp +95 -0
- data/ext/cadical/cadical/src/ema.hpp +68 -0
- data/ext/cadical/cadical/src/extend.cpp +289 -0
- data/ext/cadical/cadical/src/external.cpp +1034 -0
- data/ext/cadical/cadical/src/external.hpp +487 -0
- data/ext/cadical/cadical/src/external_propagate.cpp +1316 -0
- data/ext/cadical/cadical/src/factor.cpp +1011 -0
- data/ext/cadical/cadical/src/factor.hpp +54 -0
- data/ext/cadical/cadical/src/file.cpp +506 -0
- data/ext/cadical/cadical/src/file.hpp +210 -0
- data/ext/cadical/cadical/src/flags.cpp +135 -0
- data/ext/cadical/cadical/src/flags.hpp +93 -0
- data/ext/cadical/cadical/src/flip.cpp +269 -0
- data/ext/cadical/cadical/src/format.cpp +89 -0
- data/ext/cadical/cadical/src/format.hpp +36 -0
- data/ext/cadical/cadical/src/frattracer.cpp +277 -0
- data/ext/cadical/cadical/src/frattracer.hpp +67 -0
- data/ext/cadical/cadical/src/gates.cpp +766 -0
- data/ext/cadical/cadical/src/heap.hpp +212 -0
- data/ext/cadical/cadical/src/idruptracer.cpp +566 -0
- data/ext/cadical/cadical/src/idruptracer.hpp +112 -0
- data/ext/cadical/cadical/src/instantiate.cpp +365 -0
- data/ext/cadical/cadical/src/instantiate.hpp +45 -0
- data/ext/cadical/cadical/src/internal.cpp +1265 -0
- data/ext/cadical/cadical/src/internal.hpp +1941 -0
- data/ext/cadical/cadical/src/inttypes.hpp +34 -0
- data/ext/cadical/cadical/src/ipasir.cpp +47 -0
- data/ext/cadical/cadical/src/ipasir.h +37 -0
- data/ext/cadical/cadical/src/kitten.c +2599 -0
- data/ext/cadical/cadical/src/kitten.h +97 -0
- data/ext/cadical/cadical/src/level.hpp +33 -0
- data/ext/cadical/cadical/src/lidruptracer.cpp +657 -0
- data/ext/cadical/cadical/src/lidruptracer.hpp +122 -0
- data/ext/cadical/cadical/src/limit.cpp +146 -0
- data/ext/cadical/cadical/src/limit.hpp +168 -0
- data/ext/cadical/cadical/src/logging.cpp +214 -0
- data/ext/cadical/cadical/src/logging.hpp +98 -0
- data/ext/cadical/cadical/src/lookahead.cpp +520 -0
- data/ext/cadical/cadical/src/lratchecker.cpp +833 -0
- data/ext/cadical/cadical/src/lratchecker.hpp +168 -0
- data/ext/cadical/cadical/src/lrattracer.cpp +200 -0
- data/ext/cadical/cadical/src/lrattracer.hpp +61 -0
- data/ext/cadical/cadical/src/lucky.cpp +506 -0
- data/ext/cadical/cadical/src/message.cpp +218 -0
- data/ext/cadical/cadical/src/message.hpp +65 -0
- data/ext/cadical/cadical/src/minimize.cpp +224 -0
- data/ext/cadical/cadical/src/mobical.cpp +5588 -0
- data/ext/cadical/cadical/src/occs.cpp +52 -0
- data/ext/cadical/cadical/src/occs.hpp +36 -0
- data/ext/cadical/cadical/src/options.cpp +359 -0
- data/ext/cadical/cadical/src/options.hpp +442 -0
- data/ext/cadical/cadical/src/parse.cpp +471 -0
- data/ext/cadical/cadical/src/parse.hpp +75 -0
- data/ext/cadical/cadical/src/phases.cpp +56 -0
- data/ext/cadical/cadical/src/phases.hpp +19 -0
- data/ext/cadical/cadical/src/probe.cpp +990 -0
- data/ext/cadical/cadical/src/profile.cpp +107 -0
- data/ext/cadical/cadical/src/profile.hpp +283 -0
- data/ext/cadical/cadical/src/proof.cpp +691 -0
- data/ext/cadical/cadical/src/proof.hpp +125 -0
- data/ext/cadical/cadical/src/propagate.cpp +584 -0
- data/ext/cadical/cadical/src/queue.cpp +90 -0
- data/ext/cadical/cadical/src/queue.hpp +74 -0
- data/ext/cadical/cadical/src/radix.hpp +180 -0
- data/ext/cadical/cadical/src/random.cpp +207 -0
- data/ext/cadical/cadical/src/random.h +44 -0
- data/ext/cadical/cadical/src/random.hpp +98 -0
- data/ext/cadical/cadical/src/range.hpp +125 -0
- data/ext/cadical/cadical/src/reap.cpp +127 -0
- data/ext/cadical/cadical/src/reap.hpp +28 -0
- data/ext/cadical/cadical/src/reduce.cpp +278 -0
- data/ext/cadical/cadical/src/reluctant.hpp +82 -0
- data/ext/cadical/cadical/src/rephase.cpp +402 -0
- data/ext/cadical/cadical/src/report.cpp +313 -0
- data/ext/cadical/cadical/src/resources.cpp +160 -0
- data/ext/cadical/cadical/src/resources.hpp +16 -0
- data/ext/cadical/cadical/src/restart.cpp +178 -0
- data/ext/cadical/cadical/src/restore.cpp +267 -0
- data/ext/cadical/cadical/src/score.cpp +51 -0
- data/ext/cadical/cadical/src/score.hpp +16 -0
- data/ext/cadical/cadical/src/shrink.cpp +507 -0
- data/ext/cadical/cadical/src/signal.cpp +136 -0
- data/ext/cadical/cadical/src/signal.hpp +33 -0
- data/ext/cadical/cadical/src/solution.cpp +50 -0
- data/ext/cadical/cadical/src/solver.cpp +1871 -0
- data/ext/cadical/cadical/src/stable.cpp +31 -0
- data/ext/cadical/cadical/src/stack.h +110 -0
- data/ext/cadical/cadical/src/stats.cpp +920 -0
- data/ext/cadical/cadical/src/stats.hpp +418 -0
- data/ext/cadical/cadical/src/subsume.cpp +645 -0
- data/ext/cadical/cadical/src/sweep.cpp +1960 -0
- data/ext/cadical/cadical/src/sweep.hpp +61 -0
- data/ext/cadical/cadical/src/terminal.cpp +38 -0
- data/ext/cadical/cadical/src/terminal.hpp +96 -0
- data/ext/cadical/cadical/src/ternary.cpp +450 -0
- data/ext/cadical/cadical/src/testing.hpp +24 -0
- data/ext/cadical/cadical/src/tier.cpp +189 -0
- data/ext/cadical/cadical/src/tracer.hpp +186 -0
- data/ext/cadical/cadical/src/transred.cpp +253 -0
- data/ext/cadical/cadical/src/unstable.cpp +29 -0
- data/ext/cadical/cadical/src/util.cpp +129 -0
- data/ext/cadical/cadical/src/util.hpp +181 -0
- data/ext/cadical/cadical/src/var.cpp +39 -0
- data/ext/cadical/cadical/src/var.hpp +22 -0
- data/ext/cadical/cadical/src/veripbtracer.cpp +427 -0
- data/ext/cadical/cadical/src/veripbtracer.hpp +106 -0
- data/ext/cadical/cadical/src/version.cpp +107 -0
- data/ext/cadical/cadical/src/version.hpp +13 -0
- data/ext/cadical/cadical/src/vivify.cpp +1893 -0
- data/ext/cadical/cadical/src/vivify.hpp +50 -0
- data/ext/cadical/cadical/src/walk.cpp +1088 -0
- data/ext/cadical/cadical/src/walk.hpp +91 -0
- data/ext/cadical/cadical/src/walk_full_occs.cpp +966 -0
- data/ext/cadical/cadical/src/warmup.cpp +403 -0
- data/ext/cadical/cadical/src/watch.cpp +126 -0
- data/ext/cadical/cadical/src/watch.hpp +77 -0
- data/ext/cadical/cadical_ext.c +778 -0
- data/ext/cadical/extconf.rb +26 -0
- data/lib/cadical/version.rb +3 -0
- data/lib/cadical.rb +12 -0
- metadata +218 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: f84fde139dbf6d48d99ca9c0af8eede205596d7c596930659a830d824352f3c0
|
|
4
|
+
data.tar.gz: 5e93a72a594d4ca2a10ede543277a3cf3fc4753eb3076f3ce70f2e67ebda956e
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 54dde2e043141394213d5666a6733cdc979400abba48112fc1606e5914b0f45668137f41675fdf2e8be5c92c9010621db94fc45988be93a18362b7f0a7496f4b
|
|
7
|
+
data.tar.gz: 8840576c8452117127df21f20fd840c9142b9f47d75e2255d64e495ff15b68fabeb2f0d64f2330dbf625ec1a21bd02cf1e82875b98a0bd1da82c887f57fbcd0c
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Yusuke Endoh
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
This gem bundles the CaDiCaL SAT solver (ext/cadical/cadical/), which is
|
|
26
|
+
distributed under the MIT License. See ext/cadical/cadical/LICENSE.
|
data/README.md
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# cadical
|
|
2
|
+
|
|
3
|
+
A Ruby binding for [CaDiCaL](https://github.com/arminbiere/cadical), a state-of-the-art
|
|
4
|
+
incremental SAT solver. The CaDiCaL C++ sources are vendored and compiled straight into
|
|
5
|
+
the extension, so there is no external dependency.
|
|
6
|
+
|
|
7
|
+
This is a thin, general-purpose binding over CaDiCaL's C API (`ccadical_*`). The Ruby class is
|
|
8
|
+
`CaDiCaL`, and `CaDiCaL.new` creates a solver.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
gem install cadical
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Building the extension requires a C++17 compiler.
|
|
17
|
+
|
|
18
|
+
## Usage
|
|
19
|
+
|
|
20
|
+
A literal is an `Integer` in DIMACS form: positive `v` = "variable `v` is true", `-v` =
|
|
21
|
+
false. A clause is just a list of literals.
|
|
22
|
+
|
|
23
|
+
```ruby
|
|
24
|
+
require "cadical"
|
|
25
|
+
|
|
26
|
+
c = CaDiCaL.new
|
|
27
|
+
x1, x2 = c.new_var, c.new_var
|
|
28
|
+
|
|
29
|
+
c.add(x1, x2) # (x1 \/ x2)
|
|
30
|
+
c.add(x1, -x2) # (x1 \/ !x2)
|
|
31
|
+
c.add(-x1, -x2) # (!x1 \/ !x2)
|
|
32
|
+
|
|
33
|
+
c.solve # => :sat
|
|
34
|
+
c.true?(x1) # => true
|
|
35
|
+
c.true?(x2) # => false
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Incremental solving
|
|
39
|
+
|
|
40
|
+
Clauses added with `#add` stay for good, so you can keep solving as you learn more. An
|
|
41
|
+
assumption is a temporary hypothesis for the next `#solve` only -- handy to pose what-if
|
|
42
|
+
questions without rebuilding the formula:
|
|
43
|
+
|
|
44
|
+
```ruby
|
|
45
|
+
c.assume(-x1) # what if x1 were false?
|
|
46
|
+
c.solve # => :unsat -- the clauses above force x1 true
|
|
47
|
+
c.solve # => :sat again; the assumption is already gone
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
A constraint is the same idea but a whole clause (a disjunction), at most one at a time:
|
|
51
|
+
|
|
52
|
+
```ruby
|
|
53
|
+
c.constrain(-x1, x2) # require (!x1 \/ x2) for the next solve only
|
|
54
|
+
c.solve # => :unsat
|
|
55
|
+
c.constraint_failed? # => true -- the constraint is what made it unsat
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## API
|
|
59
|
+
|
|
60
|
+
`CaDiCaL` (every `ccadical_*` function, plus a couple of conveniences)
|
|
61
|
+
|
|
62
|
+
| method | C function | description |
|
|
63
|
+
| --- | --- | --- |
|
|
64
|
+
| `CaDiCaL.signature` | `ccadical_signature` | the bundled CaDiCaL version string |
|
|
65
|
+
| `CaDiCaL.new` | `ccadical_init` | create a solver |
|
|
66
|
+
| `#release` | `ccadical_release` | free the solver now (else at GC) |
|
|
67
|
+
| `#add(*lits)` | `ccadical_add` | add a permanent clause (splat an array: `add(*clause)`) |
|
|
68
|
+
| `#assume(lit)` | `ccadical_assume` | assume a literal for the next `solve` only |
|
|
69
|
+
| `#constrain(*lits)` | `ccadical_constrain` | temporary constraint clause for the next `solve` |
|
|
70
|
+
| `#constraint_failed?` | `ccadical_constraint_failed` | did the constraint cause the last UNSAT? |
|
|
71
|
+
| `#solve` | `ccadical_solve` | solve -> `:sat` / `:unsat` / `:unknown` |
|
|
72
|
+
| `#simplify` | `ccadical_simplify` | inprocessing -> `:sat` / `:unsat` / `:unknown` |
|
|
73
|
+
| `#val(lit)` | `ccadical_val` | raw model value (signed literal) |
|
|
74
|
+
| `#failed(lit)` | `ccadical_failed` | did this assumption take part in the last UNSAT core? |
|
|
75
|
+
| `#fixed(lit)` | `ccadical_fixed` | `1` / `-1` / `0`: proven true / false / not yet fixed |
|
|
76
|
+
| `#set_terminate { }` | `ccadical_set_terminate` | abort `solve` when the block is truthy (no block clears) |
|
|
77
|
+
| `#set_learn(max) { \|clause\| }` | `ccadical_set_learn` | observe learned clauses (no block clears) |
|
|
78
|
+
| `#terminate` | `ccadical_terminate` | force the running solve to stop |
|
|
79
|
+
| `#declare_one_more_variable` | `ccadical_declare_one_more_variable` | allocate one fresh variable |
|
|
80
|
+
| `#declare_more_variables(n)` | `ccadical_declare_more_variables` | allocate `n` variables |
|
|
81
|
+
| `#vars` | `ccadical_vars` | number of variables |
|
|
82
|
+
| `#phase(lit)` / `#unphase(lit)` | `ccadical_phase` / `ccadical_unphase` | set / clear a forced decision phase |
|
|
83
|
+
| `#freeze_lit(lit)` / `#melt_lit(lit)` / `#frozen_lit?(lit)` | `ccadical_freeze` / `_melt` / `_frozen` | freeze a literal against elimination |
|
|
84
|
+
| `#set_option(name, v)` / `#get_option(name)` | `ccadical_set_option` / `_get_option` | options |
|
|
85
|
+
| `#limit(name, v)` | `ccadical_limit` | set a solve limit |
|
|
86
|
+
| `#active` / `#irredundant` | `ccadical_active` / `_irredundant` | active-variable / irredundant-clause counts |
|
|
87
|
+
| `#trace_proof(path)` / `#close_proof` / `#conclude` | `ccadical_trace_proof` / `_close_proof` / `_conclude` | DRAT proof tracing |
|
|
88
|
+
| `#new_var` | -- | alias for `#declare_one_more_variable` |
|
|
89
|
+
| `#true?(lit)` | -- | convenience boolean: is `lit` assigned true? |
|
|
90
|
+
| `#true_var` / `#false_var` | -- | a variable pinned true / false, usable as a constant literal |
|
|
91
|
+
|
|
92
|
+
## Notes
|
|
93
|
+
|
|
94
|
+
Unlike many SAT-solver APIs where any integer can be used as a literal directly, the bundled
|
|
95
|
+
CaDiCaL (with its defaults) rejects a literal whose variable was not produced by `#new_var`
|
|
96
|
+
(the examples above use it). Set `c.set_option("factor", 0)` to allow raw integer literals.
|
|
97
|
+
|
|
98
|
+
## License
|
|
99
|
+
|
|
100
|
+
MIT. The bundled CaDiCaL solver (`ext/cadical/cadical/`) is also MIT-licensed; see
|
|
101
|
+
`ext/cadical/cadical/LICENSE`.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2016-2021 Armin Biere, Johannes Kepler University Linz, Austria
|
|
4
|
+
Copyright (c) 2020-2021 Mathias Fleury, Johannes Kepler University Linz, Austria
|
|
5
|
+
Copyright (c) 2020-2021 Nils Froleyks, Johannes Kepler University Linz, Austria
|
|
6
|
+
Copyright (c) 2022-2025 Katalin Fazekas, Vienna University of Technology, Austria
|
|
7
|
+
Copyright (c) 2021-2025 Armin Biere, University of Freiburg, Germany
|
|
8
|
+
Copyright (c) 2021-2025 Mathias Fleury, University of Freiburg, Germany
|
|
9
|
+
Copyright (c) 2023-2025 Florian Pollitt, University of Freiburg, Germany
|
|
10
|
+
Copyright (c) 2024-2024 Tobias Faller, University of Freiburg, Germany
|
|
11
|
+
|
|
12
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
13
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
14
|
+
in the Software without restriction, including without limitation the rights
|
|
15
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
16
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
17
|
+
furnished to do so, subject to the following conditions:
|
|
18
|
+
|
|
19
|
+
The above copyright notice and this permission notice shall be included in all
|
|
20
|
+
copies or substantial portions of the Software.
|
|
21
|
+
|
|
22
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
23
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
24
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
25
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
26
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
27
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
28
|
+
SOFTWARE.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
[](https://opensource.org/licenses/MIT)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
CaDiCaL Simplified Satisfiability Solver
|
|
5
|
+
===============================================================================
|
|
6
|
+
|
|
7
|
+
The goal of the development of CaDiCaL was to obtain a CDCL solver,
|
|
8
|
+
which is easy to understand and change, while at the same time not being
|
|
9
|
+
much slower than other state-of-the-art CDCL solvers.
|
|
10
|
+
|
|
11
|
+
Originally we wanted to also radically simplify the design and internal data
|
|
12
|
+
structures, but that goal was only achieved partially, at least for instance
|
|
13
|
+
compared to Lingeling.
|
|
14
|
+
|
|
15
|
+
However, the code is much better documented and CaDiCaL actually became in
|
|
16
|
+
general faster than Lingeling even though it is missing some preprocessors
|
|
17
|
+
(mostly parity and cardinality constraint reasoning), which would be crucial
|
|
18
|
+
to solve certain instances.
|
|
19
|
+
|
|
20
|
+
Use `./configure && make` to configure and build `cadical` and the library
|
|
21
|
+
`libcadical.a` in the default `build` sub-directory. The header file of
|
|
22
|
+
the library is [`src/cadical.hpp`](src/cadical.hpp) and includes an example
|
|
23
|
+
for API usage.
|
|
24
|
+
|
|
25
|
+
See [`BUILD.md`](BUILD.md) for options and more details related to the build
|
|
26
|
+
process and [`test/README.md`](test/README.md) for testing the library and
|
|
27
|
+
the solver. Since release 1.5.1 we have a [`NEWS.md`](NEWS.md) file.
|
|
28
|
+
You might also want to check out [`CONTRIBUTING.md`](CONTRIBUTING.md) on
|
|
29
|
+
if you want to contribute.
|
|
30
|
+
|
|
31
|
+
The solver has the following usage `cadical [ dimacs [ proof ] ]`.
|
|
32
|
+
See `cadical -h` for more options.
|
|
33
|
+
|
|
34
|
+
If you want to cite CaDiCaL please use as reference our CaDiCaL 2.0 tool
|
|
35
|
+
paper which appeared at CAV'24:
|
|
36
|
+
|
|
37
|
+
<p>
|
|
38
|
+
<a
|
|
39
|
+
href="https://cca.informatik.uni-freiburg.de/papers/BiereFallerFazekasFleuryFroleyksPollitt-CAV24.pdf">CaDiCaL
|
|
40
|
+
2.0</a>
|
|
41
|
+
<br>
|
|
42
|
+
<a href="https://cca.informatik.uni-freiburg.de/biere">Armin Biere</a>,
|
|
43
|
+
<a href="https://cca.informatik.uni-freiburg.de/fallert">Tobias Faller</a>,
|
|
44
|
+
<a href="https://kfazekas.github.io">Katalin Fazekas</a>,
|
|
45
|
+
<a href="https://cca.informatik.uni-freiburg.de/fleury">Mathias Fleury</a>,
|
|
46
|
+
<a href="https://fmv.jku.at/froleyks">Nils Froleyks</a> and
|
|
47
|
+
<a href="https://cca.informatik.uni-freiburg.de/pollittf">Florian Pollitt</a>
|
|
48
|
+
<br>
|
|
49
|
+
<i>
|
|
50
|
+
Proc. Computer Aidded Verification - 26th Intl. Conf. (CAV'24)</i>
|
|
51
|
+
<br>
|
|
52
|
+
Lecture Notes in Computer Science (LNCS)
|
|
53
|
+
<br>
|
|
54
|
+
vol. 14681,
|
|
55
|
+
pages 133-152,
|
|
56
|
+
Springer 2024
|
|
57
|
+
<br>
|
|
58
|
+
[ <a href="https://cca.informatik.uni-freiburg.de/papers/BiereFallerFazekasFleuryFroleyksPollitt-CAV24.pdf">paper</a>
|
|
59
|
+
| <a href="https://cca.informatik.uni-freiburg.de/papers/BiereFallerFazekasFleuryFroleyksPollitt-CAV24.bib">bibtex</a>
|
|
60
|
+
| <a href="https://cca.informatik.uni-freiburg.de/papers/BiereFallerFazekasFleuryFroleyksPollitt-CAV24-Springer.pdf">official</a>
|
|
61
|
+
| <a href="https://zenodo.org/records/10943125">artifact</a>
|
|
62
|
+
| <a href="https://github.com/arminbiere/cadical">github</a>
|
|
63
|
+
| <a href="https://doi.org/10.1007/978-3-031-37703-7">doi</a>
|
|
64
|
+
]
|
|
65
|
+
</p>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.0.0
|