Jakob Rath
|
bef1be8cb5
|
should not happen anymore
|
2022-10-07 10:11:00 +02:00 |
|
Jakob Rath
|
af368b39c9
|
less output
|
2022-10-07 10:10:44 +02:00 |
|
Nikolaj Bjorner
|
5c9f69829b
|
fixes to trim
|
2022-10-07 09:58:12 +02:00 |
|
Nuno Lopes
|
a792251a82
|
remove old compat code
|
2022-10-06 17:22:17 +01:00 |
|
Nikolaj Bjorner
|
9f78a96c1d
|
wip - trim
|
2022-10-06 18:19:03 +02:00 |
|
Jakob Rath
|
f184545aca
|
Debug dlist insertion
Found because of assertion failure in
test_polysat::test_fixed_point_arith_div_mul_inverse()
|
2022-10-05 17:24:28 +02:00 |
|
Nikolaj Bjorner
|
4e780d0cc8
|
trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-05 05:43:48 +02:00 |
|
Nikolaj Bjorner
|
f8ca692dee
|
fixes to trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-05 04:32:00 +02:00 |
|
Jakob Rath
|
e58815884f
|
Remove debugging leftover
|
2022-10-04 17:10:10 +02:00 |
|
Jakob Rath
|
dc9373dcbd
|
Change old solver::propagate method
|
2022-10-04 17:09:09 +02:00 |
|
Nikolaj Bjorner
|
c1c659dc93
|
trying trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-04 16:25:40 +02:00 |
|
Jakob Rath
|
a0fe568561
|
Another possible case for subsumption
|
2022-10-04 14:13:51 +02:00 |
|
Jakob Rath
|
e18dfb2253
|
revert_bool_decision
|
2022-10-04 14:13:39 +02:00 |
|
Jakob Rath
|
ad5c4145c1
|
pop non-asserting lemmas
|
2022-10-04 14:10:54 +02:00 |
|
Jakob Rath
|
46c69766d1
|
output
|
2022-10-04 14:09:57 +02:00 |
|
Jakob Rath
|
9cc9d1fac4
|
count
|
2022-10-04 14:08:44 +02:00 |
|
Nikolaj Bjorner
|
d22c86f9fe
|
init spacer_iuc_solver properly
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-03 15:53:58 -04:00 |
|
Nikolaj Bjorner
|
6e05162df0
|
update solver only if there is a manager
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-03 15:27:26 -04:00 |
|
Nikolaj Bjorner
|
b03d4e4fc2
|
update solver only if there is a manager
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-03 15:26:10 -04:00 |
|
Nikolaj Bjorner
|
5b71f7cf9e
|
Merge branch 'master' of https://github.com/z3prover/z3
|
2022-10-03 15:19:01 -04:00 |
|
Jakob Rath
|
3d27ec41d0
|
Bring back boolean decisions (wip)
The backtracking code doesn't know about boolean decisions yet
|
2022-10-03 18:36:16 +02:00 |
|
Jakob Rath
|
811843cf45
|
Fix interval check
|
2022-10-03 15:35:07 +02:00 |
|
Jakob Rath
|
e09cf4faa5
|
Remove broken method
|
2022-10-03 11:05:07 +02:00 |
|
Jakob Rath
|
6caa3ba1b7
|
Skip redundant intervals in viable::resolve (disabled for now)
|
2022-10-03 11:03:05 +02:00 |
|
Jakob Rath
|
0b560e5117
|
Improve sharing
|
2022-10-03 10:57:56 +02:00 |
|
Jakob Rath
|
cd2d197bb9
|
Add compact version of std::all_of
|
2022-10-03 10:55:13 +02:00 |
|
Jakob Rath
|
0bea276e82
|
Add dll_iterator
|
2022-10-03 10:54:24 +02:00 |
|
Nuno Lopes
|
be3c7d7115
|
delete dead code
|
2022-10-02 21:44:08 +01:00 |
|
Nuno Lopes
|
1eed058b98
|
use std::move
|
2022-10-02 21:34:17 +01:00 |
|
Nikolaj Bjorner
|
ad49dd739b
|
initialize variables to avoid warning messages whether real or spurious
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-01 17:08:02 -04:00 |
|
Nikolaj Bjorner
|
cffe5fe1a5
|
remove debug print
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-01 17:05:36 -04:00 |
|
Nuno Lopes
|
24ff0f2d36
|
attempt to fix cmake build
|
2022-10-01 21:48:27 +01:00 |
|
Naxaes
|
49ebca6c1c
|
Fix clang build (#6378)
|
2022-10-01 14:01:36 +01:00 |
|
Nuno Lopes
|
47e44c5538
|
fix build
|
2022-10-01 12:17:15 +01:00 |
|
Nikolaj Bjorner
|
903cddcaaa
|
fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-09-30 17:10:18 -04:00 |
|
Nikolaj Bjorner
|
ab045f0645
|
fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-09-30 16:52:19 -04:00 |
|
Nikolaj Bjorner
|
876ca2f1a5
|
fix #6371
|
2022-09-30 14:51:28 -04:00 |
|
Nikolaj Bjorner
|
b9cba82531
|
work on proof checking
- add outline of trim routine
- streamline how proof terms are checked and how residue units are extracted.
|
2022-09-30 13:04:19 -04: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 |
|
Jakob Rath
|
05442e8788
|
lemma_invariant
|
2022-09-30 13:12:47 +02:00 |
|
Jakob Rath
|
5e54cd3e44
|
Add basic support for not, or, xor, nand, nor via rewriting
|
2022-09-30 13:02:32 +02:00 |
|
Jakob Rath
|
9b907d709f
|
minor
|
2022-09-29 18:25:28 +02:00 |
|
Jakob Rath
|
8242069ba6
|
One more case for ule_constraint::is_always_false
|
2022-09-29 18:22:31 +02:00 |
|
Jakob Rath
|
6218931dde
|
We only need one of is_true/is_false
|
2022-09-29 17:19:47 +02:00 |
|
Jakob Rath
|
79c82a3d97
|
update ule_constraint::is_currently_true
|
2022-09-29 17:02:30 +02:00 |
|
Nikolaj Bjorner
|
6eb2d2acfa
|
update dependencies for build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-09-28 11:25:36 -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 |
|
Jakob Rath
|
8d803a1266
|
Move unfinished make_asserting code
|
2022-09-28 19:19:33 +02:00 |
|
Jakob Rath
|
0dae3bad6a
|
Fix subsumption terminology
|
2022-09-28 15:35:05 +02:00 |
|
Jakob Rath
|
7be82a36f2
|
Recognize x != k among new literals in lemma
|
2022-09-28 15:16:05 +02:00 |
|