3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 01:25:31 +00:00
Commit graph

1362 commits

Author SHA1 Message Date
Nikolaj Bjorner
9bf5e3f5fc fixes for #6388 2022-10-13 15:22:19 +02:00
Nikolaj Bjorner
ccda49bad5 fix #6376
have solver throw an exception when user supplies a non-propositional assumption
2022-09-30 13:03:34 -04: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
1f150ecd52 #6319
#6319 - fix incompleteness in propagation of default to all array terms in the equivalence class.

Fix bug with q_mbi where domain restrictions are not using values because the current model does not evaluate certain bound variables to values. Set model completion when adding these bound variables to the model to ensure their values are not missed.

Add better propagation of diagnostics when tactics and the new solver return unknown. The reason for unknown can now be traced to what theory was culprit (currently no additional information)
2022-09-23 22:22:34 -05:00
Nikolaj Bjorner
c24d445886 fix #6355
conversion from AIG to expressions should always use the optimized conversion function.

the aig-tactic should throttle regarding output bloat from AIG.
If the expression after AIG simpification, for whatever reason, is bloated the rewrite does not take place.
2022-09-22 17:05:32 -05:00
Bruce Mitchener
706f7fbdc7
Fix some warnings about unused stuff. (#6290) 2022-08-21 12:39:30 -07:00
Bruce Mitchener
5014b1a34d Use = default for virtual constructors. 2022-08-05 18:11:46 +03:00
Nikolaj Bjorner
4a1baa7d2d fix #6165 2022-07-30 17:10:01 +02:00
Bruce Mitchener
5d0dea05aa
Remove empty leaf destructors. (#6211) 2022-07-30 10:07:03 +01:00
Nikolaj Bjorner
2a8e73f34f Merge branch 'master' of https://github.com/z3prover/z3 2022-07-29 23:30:37 +02:00
Nikolaj Bjorner
6d71d9e816 update coding style to C++11
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-29 23:30:33 +02:00
Bruce Mitchener
1eb84fe4b9
Mark override methods appropriately. (#6207) 2022-07-29 23:29:15 +02:00
Nikolaj Bjorner
85c3d874dc neatify
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-05 16:57:41 -07:00
Nikolaj Bjorner
f23dc894b4 add disabled pass to detect upper bound range constraints
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-05 16:51:05 -07:00
Nikolaj Bjorner
06771d1ac5 missing virtual functions
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 18:31:08 -07:00
Nikolaj Bjorner
4f9ef12f34 create dummy tactics for single threaded mode
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-07-01 18:13:36 -07:00
Clemens Eisenhofer
2fa60aa43c
Added function to select the next variable to split on (User-Propagator) (#6096)
* Added function to select the next variable to split on

* Fixed typo

* Small fixes

* uint -> int
2022-06-19 10:49:25 -07:00
Nuno Lopes
d9fcfdab34 fix debug build 2022-06-17 14:35:33 +01:00
Nuno Lopes
73a24ca0a9 remove '#include <iostream>' from headers and from unneeded places
It's harmful to have iostream everywhere as it injects functions in the compiled files
2022-06-17 14:10:19 +01:00
Nikolaj Bjorner
0e6c64510a display model in add/del format
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-06-07 13:14:36 -07:00
Nikolaj Bjorner
97af3a6120 fix #6021
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-08 11:25:24 -07:00
Nikolaj Bjorner
cca49154ff fix #6021
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-05-08 11:24:56 -07:00
Nikolaj Bjorner
f4c500c519 fix build
reference types are not part of C
2022-04-16 15:16:53 +02:00
Clemens Eisenhofer
e11496bc65
Added decide-callback to user-propagator (#5978)
* Fixed registering expressions in push/pop

* Reused existing function

* Reverted reusing can_propagate

* Added decide-callback to user-propagator

* Refactoring

* Fixed index
2022-04-15 20:07:17 +02:00
Nikolaj Bjorner
3cc9d7f443 improve pre-processing 2022-04-15 12:55:26 +02:00
Clemens Eisenhofer
b0d8b27f37
Fixed registering expressions in push/pop (#5964)
* Fixed registering expressions in push/pop

* Reused existing function
2022-04-11 16:50:13 +02:00
Nikolaj Bjorner
011c1b2dd2 remove refs to bare_str 2022-04-09 12:06:27 +02:00
Nikolaj Bjorner
46cc54fbab outdated warning 2022-04-03 07:55:51 -07:00
Nikolaj Bjorner
34272152bb add stubs to control memory usage 2022-04-02 17:52:54 -07:00
Nikolaj Bjorner
4b495e4b96 nits 2022-04-02 17:50:45 -07:00
Nikolaj Bjorner
d0ef5948aa nits 2022-04-02 17:49:03 -07:00
Nikolaj Bjorner
25feb0ebed #5938 catch also rewriter_exception that can be raised on cancelation and memory pressure 2022-04-02 17:43:12 -07:00
Nikolaj Bjorner
302c0d178c fix #5867 2022-02-26 09:52:23 -08:00
Nikolaj Bjorner
f2e712b0d6 throttle is_compatible to check variables at most once
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-02-23 08:45:22 -08:00
Nikolaj Bjorner
061e94d723 #5858
COI model converter has to use constraints from the body and work in disjunctive mode. It needs a pre-condition that the body does not depend on other rules, in the case that it is used in a different pre-processing step for in-lining. The in-lined occurrence of the predicate has to correspond to the model construction version.
2022-02-21 17:45:00 -08:00
Nikolaj Bjorner
5c2624950b #5849 2022-02-20 09:52:42 -08:00
Nikolaj Bjorner
4d184fe65d skip expensive equality rewriting of Booleans 2022-02-20 10:31:10 +02:00
Nikolaj Bjorner
2e00f2f32d
Propagator (#5845)
* user propagator without ids

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* user propagator without ids

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix signature

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* references #5818

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* fix c++ build

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* switch to vs 2022

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* switch 2022

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Update propagator example (I) (#5835)

* fix #5829

* na

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* switch to vs 2022

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Adapted the example to the changes in the propagator

Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* context goes out of scope in stack allocation, so can't used scoped context when passing objects around

* parameter check

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* add rewriter

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>

* Fixed bug in user-propagator "created" (#5843)

Co-authored-by: Clemens Eisenhofer <56730610+CEisenhofer@users.noreply.github.com>
2022-02-17 09:21:41 +02:00
Qix
9cf50766a6
fix compiler warnings under clang (#5839) 2022-02-16 23:36:34 +02:00
Nikolaj Bjorner
5bbb8fb807 add bail #5825 2022-02-16 23:30:12 +02:00
Nikolaj Bjorner
9a4d6cee6c overhead with push-ite on shared terms 2022-02-14 19:36:14 +02:00
Nikolaj Bjorner
f3fc6a50f3 formatting 2022-01-31 11:57:42 -08:00
Nikolaj Bjorner
d02235fe08 #5778
not really specific to euf.true, but about rem(x,0) semantics that should align with mod semantics. It also reproduces without sat.euf=true.
2022-01-22 16:16:48 +01:00
Nikolaj Bjorner
08294d62e5 separate dependencies for qe_lite 2022-01-12 03:26:22 -08:00
Nikolaj Bjorner
571a74c061 counting function applications #5766
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-01-10 14:51:25 -08:00
Nikolaj Bjorner
4cd818b578 #5766 2022-01-10 14:40:27 -08:00
Nikolaj Bjorner
88707f37e7 Better error reporting #5746 2022-01-02 11:31:50 -08:00
Nikolaj Bjorner
543c16c73e Trace unexpected exceptions in or-else code #5746 2022-01-02 10:22:51 -08:00
Nikolaj Bjorner
aa901c4e88 axiom solver improvements 2021-12-31 11:53:40 -08:00
Nikolaj Bjorner
79f0ceac4c na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-12-30 19:13:23 -08:00