3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-06-22 13:53:39 +00:00
Commit graph

117 commits

Author SHA1 Message Date
Nikolaj Bjorner
17d47ca8c7 fix #7493 2025-02-02 15:00:31 -08:00
Nuno Lopes
3586b613f7 remove default destructors 2024-10-02 22:20:12 +01:00
Nikolaj Bjorner
01e47bfe26 fix #7245 2024-06-15 02:29:32 -07:00
Nikolaj Bjorner
b40e3015ef fix #7053 2023-12-13 19:25:18 -08:00
Nikolaj Bjorner
0e651eee04 #6421 2022-10-28 14:12:28 -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
d14f00d61a with no last model
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-01-06 13:02:13 -08:00
Nikolaj Bjorner
130a0c4aa0 resurrect infinitesimals from maximization function #5720
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-01-06 08:34:45 -08:00
Nikolaj Bjorner
122b0fec0f fix #5710 2021-12-16 12:30:29 -08: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
4a6083836a call it data instead of c_ptr for approaching C++11 std::vector convention. 2021-04-13 18:17:35 -07:00
Nikolaj Bjorner
c0e74f946b patch to fix #5145
underlying issue is that model updates for multi-objective and single objective solving are too brittle to serve its use cases among different plugins.
For maxlex, the last model is always the best and it doesn't use multiple objectives.
2021-04-02 12:23:01 -07:00
Nikolaj Bjorner
fc3a642876 fix #4948 2021-01-11 19:26:16 -08:00
Nikolaj Bjorner
0aac7e54a9 fix #4942
Patching model update. Could use a more thorough revision.
2021-01-11 15:48:49 -08: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
Nuno Lopes
bb26f219fe remove unneeded constructors (last round) 2020-07-12 17:41:57 +01:00
Nuno Lopes
23e6adcad3 fix a couple hundred deref-after-free bugs due to .c_str() on a temporary string 2020-07-11 20:24:45 +01:00
Nikolaj Bjorner
becf423c77
remove level of indirection for context and ast_manager in smt_theory (#4253)
* remove level of indirection for context and ast_manager in smt_theory

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

* add request by #4252

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

* move to def

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

* int

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-05-08 16:46:03 -07:00
Nikolaj Bjorner
236edad8dc fix #4111 2020-04-26 14:44:50 -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
044d6316ca fix #3417
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-03-19 09:39:21 -07:00
Nikolaj Bjorner
b3e1e302f7 fix #3320
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-03-18 13:22:17 -07:00
Nikolaj Bjorner
19cdf08818 fix #3396
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-03-18 12:45:37 -07:00
Nikolaj Bjorner
6ad261e24c fix #3330
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-03-15 09:49:44 -07:00
Nikolaj Bjorner
82273da630 fix #2945
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-02-09 15:43:21 -08:00
Nikolaj Bjorner
918846a97e fix #2814
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-12-20 16:35:38 -08:00
Nikolaj Bjorner
1fca76b0a1 relax restriction on infinitesimal for rdl, #2410
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-07-18 08:26:23 -07:00
Nikolaj Bjorner
5820b16800 mark assumption literals to be skolem to hide them from models #2406
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-07-18 08:25:42 -07:00
Nikolaj Bjorner
7aa8b4ac2a restrict idiv-bound checks to bounded terms
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2019-03-03 19:11:22 -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
8744c62fca fix #1755
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2018-07-16 10:55:25 +01: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
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
76eb7b9ede Use nullptr. 2018-02-12 14:05:55 +07: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
fd49a0c89c added facility to persist model transformations
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-11-02 00:05:52 -05: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
e4b595d490 add solver pool abstraction for Spacer
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-10-28 16:10:20 -07:00
Nikolaj Bjorner
2897b98ed2 remove simplify dependencies
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-08-26 00:37:22 -07:00
Nikolaj Bjorner
2b82fd5d0c updated include directives
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-08-01 10:51:47 -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
911b24784a merge LRA
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-05-09 10:46:11 -07:00
Nikolaj Bjorner
c56c7fd649 add handlers for dense difference logic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-03-24 01:31:00 -07:00
Nikolaj Bjorner
a0237ed2a6 fix crash reported in #946
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2017-03-16 18:56:43 -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
aaf6e67ec8 add restart.max parameter to control cancellation based on restart count
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-12-25 17:43:47 -08:00
Nikolaj Bjorner
2bd29548da improve parser error message over API, streamline names of statistics for arithmetic solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2016-12-25 17:27:56 -08:00