uuverifiers / ostrich

An SMT Solver for string constraints

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Refutation soundness issue on QF_SLIA formula

rainoftime opened this issue · comments

Hi, for the following instance

(declare-const v0 Bool)
(declare-const v1 Bool)
(declare-const v2 Bool)
(declare-const v3 Bool)
(declare-const i2 Int)
(declare-const i5 Int)
(declare-const i6 Int)
(declare-const i9 Int)
(declare-const i10 Int)
(declare-const i11 Int)
(declare-const Str0 String)
(declare-const Str1 String)
(declare-const Str2 String)
(declare-const Str3 String)
(declare-const Str4 String)
(declare-const Str5 String)
(declare-const Str9 String)
(declare-const Str10 String)
(declare-const Str11 String)
(declare-const Str12 String)
(declare-const Str14 String)
(declare-const Str16 String)
(declare-const Str17 String)
(push 1)
(declare-const v4 Bool)
(declare-const i12 Int)
(declare-const v5 Bool)
(declare-const v6 Bool)
(declare-const i13 Int)
(declare-const i14 Int)
(declare-const v7 Bool)
(assert (>= (str.len Str14) 39))
(push 1)
(declare-const v8 Bool)
(declare-const v9 Bool)
(push 1)
(push 1)
(assert (>= (str.len (str.++ Str16 "bqlmww" Str17 Str9)) 31))
(assert (>= (str.len Str5) i5))
(declare-const v22 Bool)
(push 1)
(assert (>= (str.len (str.substr (str.++ Str1 "akkoco" "ambeqq") 0 19)) (mod (+ i5 i2 56 74) 307)))
(push 1)
(assert (>= (str.len Str3) (mod (mod (+ i5 i2 56 74) 0) 0)))
(push 1)
(assert (or (or (<= (- i10 25 i10) i13) (<= (- i10 25 i10) i13) (<= (- i10 25 i10) i13)) false))
(assert (or (or (<= (- i10 25 i10) i13) (<= (- i10 25 i10) i13) (<= (- i10 25 i10) i13)) false))
(check-sat)

ostrich 2b3eb9b returns unsat,
But both z3 and CVC4 return sat

May be caused by some non-linear constraints in the formula?

This is fixed in version 1.2, thanks for the report!