3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-19 07:09:03 +00:00
z3/src
Nikolaj Bjorner 75eba45926
Merge pull request #1606 from NikolajBjorner/opt
This integrates several features and improvements to the SAT and finite domain solver.

- The SAT solver by default handle cardinality and PB constraints using a custom plugin that operates directly on cardinality and PB constraints.
- A parallel mode is available for select theories, including QF_BV. By setting parallel.enable=true Z3 will spawn a number of worker threads proportional to the number of available CPU cores to apply cube and conquer solving on the goal.
- A "cube" interface is exposed over the solver API. 
- Model conversion is first class over the textual API, such that subgoals created from running a solver can be passed in text files and a model for the original formula can be recreated from the result.
- This has also led to changes in how models are tracked over tactic subgoals. The API for extracting models from apply_result have been replaced.
- An optional mode handles xor constraints using a custom xor propagator. It is off by default and its value not demonstrated.
- The SAT solver includes new inprocessing technques that are available during simplification. It performs asymmetric tautology elimination by default, and one can turn on more powerful inprocessing techniques (known as ACCE, ABCE, CCE). Asymmetric branching also uses features introduced in Lingeling by exploiting binary implication graphs.

- A breaking change to the API is that parsers for SMT-LIB2 formulas return a vector of formulas as opposed to a conjunction of formulas. The vector of formulas correspond to the set of "assert" instructions in the SMT-LIB input.
2018-05-23 08:47:08 -07:00
..
ackermannization fix build 2018-05-01 10:53:36 -07:00
api merge with master 2018-05-23 08:02:16 -07:00
ast merge with master 2018-05-23 08:02:16 -07:00
cmd_context merge with master 2018-05-23 08:02:16 -07:00
duality Use nullptr. 2018-02-12 14:05:55 +07:00
interp Remove unnecessary (and confusing) parantheses around variable name in its declaration. 2018-05-20 15:34:01 +02:00
math merge with 4.7.1 2018-05-22 17:10:36 -07:00
model merge 2018-04-30 09:30:43 -07:00
muz merge with 4.7.1 2018-05-22 17:10:36 -07:00
nlsat Merge pull request #1606 from NikolajBjorner/opt 2018-05-23 08:47:08 -07:00
opt merge with master 2018-05-23 08:02:16 -07:00
parsers merge 2018-04-30 09:30:43 -07:00
qe merge 2018-04-30 09:30:43 -07:00
sat delay dereferencing justification 2018-05-22 17:03:35 -07:00
shell merge with 4.7.1 2018-05-22 17:10:36 -07:00
smt merge with 4.7.1 2018-05-22 17:10:36 -07:00
solver merge with master 2018-05-23 08:02:16 -07:00
tactic merge with 4.7.1 2018-05-22 17:10:36 -07:00
test merge with 4.7.1 2018-05-22 17:10:36 -07:00
util merge with 4.7.1 2018-05-22 17:10:36 -07:00
CMakeLists.txt fix build 2018-05-01 09:39:19 -07:00