mirror of
https://github.com/Z3Prover/z3
synced 2025-06-04 13:21:22 +00:00
sketch vnext
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
c1365b6ba8
commit
1197c4d416
1 changed files with 15 additions and 1 deletions
|
@ -380,4 +380,18 @@ print("non-strict")
|
||||||
search_dual(ULE(v, w))
|
search_dual(ULE(v, w))
|
||||||
|
|
||||||
|
|
||||||
|
# Sketch v-next approach that
|
||||||
|
# Maintain a transition relation T(B0, B1)
|
||||||
|
# where B := (lo(v), hi(v), lo(w), hi(w)) are variables.
|
||||||
|
# Initially T is B0 = B1
|
||||||
|
# Enumerate representative values of B0
|
||||||
|
# Enumerate solutions for T(B0, B1) given value for B0
|
||||||
|
# Check if B & v < w and v = lo(v) is unsat (similar to w = lo(w), v = hi(v)-1, )
|
||||||
|
# If it is unsat then find predicate cover P for B1
|
||||||
|
# B1 |= P,
|
||||||
|
# * P & v < w & not in_bounds(v, lo(v)', hi(v)') is unsat
|
||||||
|
# where lo(v)', hi(v)' is a tightest bound under B1
|
||||||
|
# Update T by adding transition (P => B2 = lo(v)', hi(v)', lo(w), hi(w)) & (~P => B2 = B1)
|
||||||
|
# * P & v < w is unsat
|
||||||
|
# Update T by adding not P
|
||||||
|
#
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue