3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 00:55:31 +00:00
z3/src/nlsat
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
..
tactic merge with master 2018-03-25 14:57:01 -07:00
CMakeLists.txt [CMake] Move CMake files into their intended location so the 2017-06-12 11:59:00 +01:00
nlsat_assignment.h Use override rather than virtual. 2018-02-09 21:19:27 +07:00
nlsat_clause.cpp make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
nlsat_clause.h adding pre-processing to nlsat for equations 2017-12-30 20:35:33 -08:00
nlsat_evaluator.cpp make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
nlsat_evaluator.h make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
nlsat_explain.cpp fix bug reported in #1637 2018-05-22 20:02:08 -07:00
nlsat_explain.h make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
nlsat_interval_set.cpp Use nullptr. 2018-02-12 14:05:55 +07:00
nlsat_interval_set.h Use nullptr. 2018-02-12 14:05:55 +07:00
nlsat_justification.h Use nullptr. 2018-02-12 14:05:55 +07:00
nlsat_params.pyg add __copy__, __deepcopy__ as alias to translate on same context #1427. Add generalized Gaussian elimination as an option to first-pass NL solver 2018-01-01 17:11:43 -08:00
nlsat_scoped_literal_vector.h make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
nlsat_solver.cpp Use nullptr. 2018-02-12 14:05:55 +07:00
nlsat_solver.h Use nullptr. 2018-02-12 14:05:55 +07:00
nlsat_types.cpp make include paths uniformly use path relative to src. #534 2017-07-31 13:24:11 -07:00
nlsat_types.h adding pre-processing to nlsat for equations 2017-12-30 20:35:33 -08:00