Nikolaj Bjorner
|
993ff40826
|
fixes to proof logging and checking
|
2022-10-15 12:42:50 +02:00 |
|
Nikolaj Bjorner
|
a2e0646eed
|
wip - proof checker
|
2022-10-12 09:34:49 +02:00 |
|
Nikolaj Bjorner
|
de69874076
|
wip - adding proof checkers, fixes to quantifier proof certificates
|
2022-10-10 09:46:22 +02:00 |
|
Nikolaj Bjorner
|
35639c5ac0
|
adding q proof hints
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-07 19:21:21 +02:00 |
|
Nikolaj Bjorner
|
5c9f69829b
|
fixes to trim
|
2022-10-07 09:58:12 +02:00 |
|
Nikolaj Bjorner
|
9f78a96c1d
|
wip - trim
|
2022-10-06 18:19:03 +02:00 |
|
Nikolaj Bjorner
|
4e780d0cc8
|
trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-05 05:43:48 +02:00 |
|
Nikolaj Bjorner
|
c1c659dc93
|
trying trim
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-10-04 16:25:40 +02:00 |
|
Nikolaj Bjorner
|
ab045f0645
|
fix build
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-09-30 16:52:19 -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
|
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
|
6a61efbf99
|
add missing override
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-09-05 13:35:53 -07:00 |
|
Nikolaj Bjorner
|
3011b34b3b
|
log E-matching based quantifier instantiations as hints
|
2022-08-31 18:59:02 -07:00 |
|
Nikolaj Bjorner
|
4abff18e8d
|
fill in missing pieces of proof hint checker for Farkas and RUP
The proof validator based on SMT format proof logs uses RUP to check propositional inferences and has plugins for theory axioms/lemmas.
|
2022-08-31 05:29:15 -07:00 |
|
Nikolaj Bjorner
|
0f475f45b5
|
Add RUP checking mode to proof checker.
|
2022-08-30 09:45:19 -07:00 |
|
Nikolaj Bjorner
|
8b8caf9ded
|
re-add smt-solver for proof_cmds
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-08-28 18:19:30 -07:00 |
|
Nikolaj Bjorner
|
f65a244385
|
move proof_cmds
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
|
2022-08-28 18:11:26 -07:00 |
|