3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-01-20 09:13:20 +00:00
Commit graph

65 commits

Author SHA1 Message Date
Nikolaj Bjorner
cafe3acff1 delay detach
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-10-15 12:41:34 -07:00
Nikolaj Bjorner
b2efa592ce #6523
deal with memory leak on exceptions
2023-10-15 12:17:08 -07:00
Nikolaj Bjorner
41b1f47d77 #6523
deal with memory leak when there is an exception
2023-10-15 12:15:28 -07:00
Nikolaj Bjorner
48deb4d3e0 fix proof generation for euf-solver
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-07-23 14:31:44 -07:00
Nikolaj Bjorner
8970a54eaa expose parameters to control behavior for #5660 2023-01-10 22:06:19 -08:00
Nikolaj Bjorner
30c9cda61e increment generation for literals created during E-matching 2022-12-01 10:04:33 +09:00
Nikolaj Bjorner
842e8057bc log also quantifier generation (besides binding)
We add also logging for quantifier generation.
It is auxiliary information that is of use for diagnostics (axiom profiler).
2022-10-20 17:49:15 -07:00
Nikolaj Bjorner
de69874076 wip - adding proof checkers, fixes to quantifier proof certificates 2022-10-10 09:46:22 +02: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
9be8fc7857 Add EUF (congruence closure) proof hints and checker to the new core
EUF proofs are checked modulo union-find.
Equalities are added to to union-find if they are assumptions or if they can be derived using congruence closure. The congruence closure assumptions are added as proof-hints.
Note that this proof format does not track equality inferences, symmetry and transitivity. Instead they are handled by assuming a union-find based checker.
2022-09-25 14:26:20 -07:00
Nikolaj Bjorner
3011b34b3b log E-matching based quantifier instantiations as hints 2022-08-31 18:59:02 -07:00
Nikolaj Bjorner
a628e4c4e5 updates to printer to get instantiations, take 1 2022-08-25 11:22:35 -07:00
Nikolaj Bjorner
c6263587c3 fix validator bug returning true for unprocessed case, bug reported in #6116 2022-08-23 20:17:32 -07:00
Nikolaj Bjorner
ce1f3987d9 fix unsoundness in quantifier propagation #6116 and add initial lemma logging 2022-08-23 19:10:01 -07:00
Nikolaj Bjorner
0a665b0fa0 #5778 2022-04-25 14:27:38 +01:00
Nikolaj Bjorner
489459a1f7 #5778
reprogram flush, mark clauses during reinit as non-redundant.
2022-04-25 11:22:00 +01:00
Nikolaj Bjorner
24baf56e27 fix missing propagation on final 2022-04-24 16:29:25 +01:00
Nikolaj Bjorner
ec57d3b15c missing switch cases 2022-04-19 16:20:02 +01:00
Nikolaj Bjorner
9969809745 #5778 2022-01-21 09:40:06 +01:00
Nikolaj Bjorner
1b5f7cd9e5 na 2022-01-15 10:05:26 -08:00
Nikolaj Bjorner
74824ac901 #5753
get_antecedent has to be well-founded. It got broken when using eval during propagation and egraph explain during conflict resolution.
2022-01-15 09:35:25 -08:00
Nikolaj Bjorner
90fd3d82fc enable propagation 2022-01-08 19:00:56 -08:00
Nikolaj Bjorner
fc741cf018 rename module
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2022-01-03 14:23:22 -08:00
Nikolaj Bjorner
69b4392210 na
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-12-29 13:04:31 -08:00
Nikolaj Bjorner
f215b18e0e change registration mode for relevant_eh 2021-12-29 13:03:43 -08:00
Nikolaj Bjorner
8ff8252e89 debug relevancy mode 2021-12-28 13:02:09 -08:00
Nikolaj Bjorner
28bce8f09c working on relevant 2021-12-28 11:00:02 -08:00
Nikolaj Bjorner
d5e5dcfe45 add nff and auto-relevant
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-10-18 15:32:55 -07:00
Nikolaj Bjorner
115203e87c fixes to sat.euf ematching #5573 2021-10-16 15:52:37 -07:00
Nikolaj Bjorner
c0c3e685e7 disable all propagation until ematch incompleteness is fixed
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-10-05 11:25:35 -07:00
Nikolaj Bjorner
94cc4ead72 remove arith_lhs simplification from preamble tactic
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-10-05 10:55:38 -07:00
Nikolaj Bjorner
33f4e65fa9 redo bindings/fingerprints
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-10-05 10:15:56 -07:00
Nikolaj Bjorner
281fb67d88 unit propagate with fingerprints 2021-10-04 20:01:46 -07:00
Nikolaj Bjorner
cbe7dd4a48 missing continue fixes unsound sat result from #5573 2021-09-29 14:26:09 -07:00
Nikolaj Bjorner
2e176a0e02 count lazy bindings 2021-09-28 08:27:46 -07:00
Nikolaj Bjorner
6c71baf77b lifting iff to binary 2021-09-27 03:45:54 -07:00
Nikolaj Bjorner
af5c6e43b9 #5528 2021-09-02 11:21:57 -07:00
Nikolaj Bjorner
7ab7b8646b #5454 2021-08-10 14:47:26 -07:00
Nikolaj Bjorner
b84b5d091e #5420 2021-07-20 08:02:21 -07:00
Nikolaj Bjorner
3156ca5e77 #5417 - delay propagation from callbacks from mam
mam assumes the egraph isn't updated during callbacks.
2021-07-19 11:10:48 -07:00
Nikolaj Bjorner
776f270b64 #5417 normalize clause 2021-07-19 09:08:51 -07:00
Nikolaj Bjorner
7d915eb295 #5417 - revise q_eval based on bug based on non-chronological dependencies with post-hoc explain function 2021-07-19 07:40:46 -07:00
Nikolaj Bjorner
a4f4975092 #5336 2021-07-11 21:08:53 +02:00
Nikolaj Bjorner
4a0a678e3f #5336 2021-06-19 22:21:45 -07:00
Nikolaj Bjorner
1dedfe3164 #5336 2021-06-16 21:24:50 -05:00
Nikolaj Bjorner
ed49c1eae3 #5324 2021-06-06 15:14:38 -07:00
Nikolaj Bjorner
df95ed64e0 #5324 2021-06-05 15:44:47 -07:00
Nikolaj Bjorner
d450fd4227 #5215 2021-05-19 10:03:49 -07:00
Nikolaj Bjorner
5ecc32e731 #5215
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-04-27 20:46:25 -07:00
Nikolaj Bjorner
25f53c0467 deal with warnings reported in https://launchpadlibrarian.net/522361319/buildlog_ubuntu-groovy-s390x.z3_4.8.10-1ubuntu4ppa1_BUILDING.txt.gz
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2021-02-11 13:49:47 -08:00