Nikolaj Bjorner
c387b20ac6
move smt params to params directory, update release.yml
2025-06-09 10:47:22 -07:00
Nikolaj Bjorner
87f7a20e14
Add (updated and general) solve_for functionality for arithmetic, add congruence_explain to API to retrieve explanation for why two terms are congruent Tweak handling of smt.qi.max_instantations
...
Add API solve_for(vars).
It takes a list of variables and returns a triangular solved form for the variables.
Currently for arithmetic. The solved form is a list with elements of the form (var, term, guard).
Variables solved in the tail of the list do not occur before in the list.
For example it can return a solution [(x, z, True), (y, x + z, True)] because first x was solved to be z,
then y was solved to be x + z which is the same as 2z.
Add congruent_explain that retuns an explanation for congruent terms.
Terms congruent in the final state after calling SimpleSolver().check() can be queried for
an explanation, i.e., a list of literals that collectively entail the equality under congruence closure.
The literals are asserted in the final state of search.
Adjust smt_context cancellation for the smt.qi.max_instantiations parameter.
It gets checked when qi-queue elements are consumed.
Prior it was checked on insertion time, which didn't allow for processing as many
instantations as there were in the queue. Moreover, it would not cancel the solver.
So it would keep adding instantations to the queue when it was full / depleted the
configuration limit.
2024-12-19 23:27:57 +01:00
Nuno Lopes
3586b613f7
remove default destructors
2024-10-02 22:20:12 +01:00
Nikolaj Bjorner
48712b4f60
Add initial value setting for variables in Z3 API, solver, and optimize modules
2024-09-18 16:13:15 +03:00
Nikolaj Bjorner
f6d411d54b
experimental feature to access congruence closure of SimpleSolver
...
This update includes an experimental feature to access a congruence closure data-structure after search.
It comes with several caveats as pre-processing is free to eliminate terms. It is therefore necessary to use a solver that does not eliminate the terms you want to track for congruence of. This is partially addressed by using SimpleSolver or incremental mode solving.
```python
from z3 import *
s = SimpleSolver()
x, y, z = Ints('x y z')
s.add(x == y)
s.add(y == z)
s.check()
print(s.root(x), s.root(y), s.root(z))
print(s.next(x), s.next(y), s.next(z))
```
2022-12-30 21:41:27 -08:00
Nikolaj Bjorner
1dca6402fb
move model and proof converters to self-contained module
2022-11-03 05:23:01 -07:00
Nikolaj Bjorner
107981f099
update proof formats for new core
...
- update proof format for quantifier instantiation to track original literals
- update proof replay tools with ability to extract proof object
The formats and features are subject to heavy revisions.
Example
```
(set-option :sat.euf true)
(set-option :sat.smt.proof eufproof.smt2)
(declare-fun f (Int) Int)
(declare-const x Int)
(assert (or (= (f (f (f x))) x) (= (f (f x)) x)))
(assert (not (= (f (f (f (f (f (f x)))))) x)))
(check-sat)
```
eufproof.smt2 is:
```
(declare-fun x () Int)
(declare-fun f (Int) Int)
(define-const $24 Int (f x))
(define-const $25 Int (f $24))
(define-const $26 Int (f $25))
(define-const $27 Bool (= $26 x))
(define-const $28 Bool (= $25 x))
(assume $27 $28)
(define-const $30 Int (f $26))
(define-const $31 Int (f $30))
(define-const $32 Int (f $31))
(define-const $33 Bool (= $32 x))
(assume (not $33))
(declare-fun rup () Proof)
(infer (not $33) rup)
(declare-fun euf (Bool Bool Proof Proof Proof Proof) Proof)
(declare-fun cc (Bool) Proof)
(define-const $42 Bool (= $32 $30))
(define-const $43 Proof (cc $42))
(define-const $40 Bool (= $31 $24))
(define-const $41 Proof (cc $40))
(define-const $38 Bool (= $30 $25))
(define-const $39 Proof (cc $38))
(define-const $36 Bool (= $24 $26))
(define-const $37 Proof (cc $36))
(define-const $34 Bool (not $33))
(define-const $44 Proof (euf $34 $28 $37 $39 $41 $43))
(infer (not $28) $33 $44)
(infer (not $28) rup)
(infer $27 rup)
(declare-fun euf (Bool Bool Proof Proof Proof) Proof)
(define-const $49 Bool (= $32 $26))
(define-const $50 Proof (cc $49))
(define-const $47 Bool (= $31 $25))
(define-const $48 Proof (cc $47))
(define-const $45 Bool (= $24 $30))
(define-const $46 Proof (cc $45))
(define-const $51 Proof (euf $34 $27 $46 $48 $50))
(infer $33 $51)
(infer rup)
```
Example of inspecting proof from Python:
```
from z3 import *
def parse(file):
s = Solver()
set_option("solver.proof.save", True)
set_option("solver.proof.check", False)
s.from_file(file)
for step in s.proof().children():
print(step)
parse("../eufproof.smt2")
```
Proof checking (self-validation) is on by default.
Proof saving is off by default.
You can use the proof logs and the proof terms to retrieve quantifier instantiations from the new core.
The self-checker contains a few built-in tuned checkers but falls back to self-checking inferred clauses using SMT.
2022-09-28 10:40:43 -07:00
Nikolaj Bjorner
3cc9d7f443
improve pre-processing
2022-04-15 12:55:26 +02:00
Nikolaj Bjorner
3f5eb7fcf2
re-enable pre-process
2022-04-13 11:24:24 +02:00
Nikolaj Bjorner
8384f38eb5
fix #5254
2021-05-17 15:42:01 -07:00
Nikolaj Bjorner
a19e469cc2
fix #5212
2021-04-24 13:27:41 -07:00
Nikolaj Bjorner
0ec567fe15
integrate v2 of lns
2021-02-04 15:47:40 -08:00
Nikolaj Bjorner
fb1509d011
expose internal API for set_phase
2021-02-02 14:29:06 -08:00
Nikolaj Bjorner
367e5fdd52
delay internalize ( #4714 )
...
* adding array solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* use default in model construction
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* debug delay internalization
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* bv
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* arrays
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* get rid of implied values and bounds
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* redo egraph
* remove out
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* remove files
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-09-28 19:24:16 -07:00
Nikolaj Bjorner
cfa7c733db
fixing #4670 ( #4682 )
...
* fixing #4670
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* init
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* arrays
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* arrays
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* arrays
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
* na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-09-10 04:35:11 -07:00
Nikolaj Bjorner
59d8895d15
add accessors for implied values to API
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-28 19:46:39 -07:00
Nikolaj Bjorner
d0e20e44ff
booyah
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-07-04 15:56:30 -07:00
Nikolaj Bjorner
40b4ca7f86
fix #3950
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-04-15 15:07:53 -07:00
Nikolaj Bjorner
b889b110ee
bool_vector, some spacer tidy
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-04-05 12:59:04 -07:00
Nikolaj Bjorner
8893913c98
remove internal referenes to set_activity
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-05-30 16:06:05 -07:00
Nikolaj Bjorner
89bf2d4368
add API for setting variable activity
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-02-15 12:05:24 -08:00
Nikolaj Bjorner
8d20310758
adding trail/levels
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-01-29 14:45:51 -08:00
Nikolaj Bjorner
498864c582
adding dump facility for cancelation #2095 , easing dimacs in/out
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-01-24 12:21:23 -08:00
Nikolaj Bjorner
74621e0b7d
first eufi example running
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-06-14 16:08:52 -07:00
Nikolaj Bjorner
a81a8de975
remove lns
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-25 19:54:11 -07:00
Nikolaj Bjorner
c513f3ca09
merge with master
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-25 14:57:01 -07:00
Nikolaj Bjorner
205d77d591
save last model to ensure it is available fixes #1514
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-03-03 19:26:31 -08:00
Bruce Mitchener
7167fda1dc
Use override rather than virtual.
2018-02-10 09:56:33 +07:00
Nikolaj Bjorner
a74d18a695
prepare for variable scoping and autarkies
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-12-13 20:11:16 -08:00
Nikolaj Bjorner
0d15b6abb7
add stubs for converting assertions, consolidate filter_model_converter
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-17 14:51:13 -08:00
Nikolaj Bjorner
454e12fc49
update to vector format
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-10 15:28:16 -08:00
Nikolaj Bjorner
75b8d10f48
add backtrack level to cuber interface
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-08 21:44:21 -08:00
Nikolaj Bjorner
3de8c193ea
implementing model updates
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-10-30 16:11:51 -05:00
Nikolaj Bjorner
92b5301b7f
adding Cube method to .NET API, removing lookahead and get-lemmas
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-10-29 08:57:24 -07:00
Nikolaj Bjorner
e507a6ccd1
adding incremental cubing from API
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-09-28 09:06:17 -07:00
Nikolaj Bjorner
651587ce01
merge with master branch
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-09-19 09:39:22 -07:00
Nikolaj Bjorner
b19f94ae5b
make include paths uniformly use path relative to src. #534
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-07-31 13:24:11 -07:00
Nikolaj Bjorner
ce592d7716
add facility to add lemmas
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-12 19:44:02 -07:00
Nikolaj Bjorner
af6ebbcd92
init search before returning
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-11 13:08:05 -07:00
Nikolaj Bjorner
c870b77366
fixes to lookahead
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-06-08 17:25:06 -07:00
Nikolaj Bjorner
0aa912371b
Another fix for #847 . Reset wmax theory solver state between lex calls, otherwise it uses stale constraints
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-01-17 14:19:24 -08:00
Nikolaj Bjorner
dea3b8ddf7
address warnings from #836
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-12-10 13:14:36 +01:00
Nikolaj Bjorner
024082a45f
adding preferred sat, currently disabled, to wmax. Fixing issue #815
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-11-30 09:52:05 -08:00
Nikolaj Bjorner
8d2b70a5e2
better encodings for at-most-1, #755
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-10-10 23:46:03 -07:00
Nikolaj Bjorner
491b3b34aa
tune consequence finding. Factor solver pretty-printing as SMT-LIB into top-level
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-08-03 11:14:29 -07:00
Nikolaj Bjorner
c7ff05cc78
enable core minimization with qsat in case it turns out to be useful
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-06-12 15:58:12 -07:00
Nikolaj Bjorner
67397bf71e
enable logic parameter update to configure SMTLIB logic
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-03-01 09:48:24 -08:00
Nikolaj Bjorner
85d44c5d66
fix axioms for extract, add extensionality checking for shared variables, convert exceptions to unknown status per #419
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-01-18 11:09:41 +05:30
Nikolaj Bjorner
baee4225a7
reworking cancellation
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-12-11 16:21:24 -08:00
Nikolaj Bjorner
0592e76574
Enhancement for Valentin #332
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-11-19 10:26:01 -08:00