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
Nikolaj Bjorner
b4cb51cdb3
working on Forking/Serializing a z3 Solver #209
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-11-06 17:29:24 -08:00
Nikolaj Bjorner
4bc044c982
update header guards to be C++ style. Fixes issue #9
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-07-08 23:18:40 -07:00
Nikolaj Bjorner
ffff006945
remove old files
...
Signed-off-by: Nikolaj Bjorner <nbjorner@hotmail.com>
2015-06-02 09:15:08 -07:00
Nikolaj Bjorner
64bd62b17e
fix gcc compiler warnings
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2015-05-16 11:56:04 +01:00