Closed recoules closed 3 years ago
What version of Boolector are using? I just tried with 4d24043 and got sat on your file; I then added some assertions/declarations after your assert and I also got what I would expect:
sat
(
(define-fun !7 () (_ BitVec 8) #b01001110)
(define-fun !a () (_ BitVec 8) #b01001101)
(define-fun !1 () (_ BitVec 32) #b00000000000000000000000000000000)
(define-fun !y () (_ BitVec 32) #b00000000000000000000000000000000)
(define-fun !b () (_ BitVec 8) #b01000100)
(define-fun !9 () (_ BitVec 8) #b01000011)
(define-fun !5 () (_ BitVec 8) #b01000100)
(define-fun !4 () (_ BitVec 8) #b01000100)
(define-fun !3 () (_ BitVec 8) #b01001001)
(define-fun !2 () (_ BitVec 8) #b01001000)
(define-fun !6 () (_ BitVec 8) #b01000101)
(define-fun !8 () (_ BitVec 8) #b01011111)
(define-fun !0 (
(!0_x0 (_ BitVec 32))) (_ BitVec 8)
(ite (= !0_x0 #b00001000000011011011111011111000) #b00000010
(ite (= !0_x0 #b00000000000000000000000000001111) #b00000001
(ite (= !0_x0 #b00000000000000000000000000001110) #b00000001
(ite (= !0_x0 #b00000000000000000000000000001101) #b00000001
(ite (= !0_x0 #b00000000000000000000000000001100) #b00000001
(ite (= !0_x0 #b00000000000000000000000000010011) #b00000000
(ite (= !0_x0 #b00000000000000000000000000010010) #b00000000
(ite (= !0_x0 #b00000000000000000000000000010001) #b00000000
(ite (= !0_x0 #b00000000000000000000000000010000) #b00000000
(ite (= !0_x0 #b00001000000011011011111011111001) #b00000000
(ite (= !0_x0 #b00001000000011011011111011111010) #b00000000
(ite (= !0_x0 #b00001000000011011011111011111011) #b00000000
#b00000000)))))))))))))
(define-fun !B () (_ BitVec 32) #b00001000000011011010010010011100)
(define-fun !F () (_ BitVec 32) #b00000000000000000000000000010100)
(define-fun !H () (_ BitVec 32) #b11111111111111111111000000001000)
(define-fun !K () (_ BitVec 32) #b11111111111111111111000000000000)
(define-fun !N () (_ BitVec 32) #b11111111111111111110111111111100)
(define-fun !O () (_ BitVec 32) #b11111111111111111110111111111000)
(define-fun !R () (_ BitVec 32) #b11111111111111111110111111110100)
(define-fun !U () (_ BitVec 32) #b11111111111111111110111110111100)
(define-fun !X () (_ BitVec 32) #b11111111111111111110111111101100)
(define-fun !Z () (_ BitVec 32) #b11111111111111111110111110101000)
(define-fun !$ () (_ BitVec 32) #b11111111111111111110111110100100)
(define-fun !& () (_ BitVec 32) #b11111111111111111110111110100000)
(define-fun !- () (_ BitVec 32) #b11111111111111111110111110011100)
(define-fun !/ () (_ BitVec 32) #b11111111111111111110111110011000)
(define-fun != () (_ BitVec 32) #b11111111111111111110111101111000)
(define-fun !? () (_ BitVec 32) #b11111111111111111110111101110100)
(define-fun !^ () (_ BitVec 32) #b11111111111111111110111101110000)
(define-fun $0 () (_ BitVec 32) #b11111111111111111110111101101100)
(define-fun $1 () (_ BitVec 32) #b11111111111111111110111111001110)
(define-fun $2 () (_ BitVec 32) #b11111111111111111110111111001111)
(define-fun $3 () (_ BitVec 32) #b11111111111111111110111111010000)
(define-fun $4 () (_ BitVec 32) #b11111111111111111110111111010001)
(define-fun $6 () (_ BitVec 32) #b11111111111111111110111111001110)
(define-fun $8 () (_ BitVec 32) #b11111111111111111110111111010010)
(define-fun $9 () (_ BitVec 32) #b11111111111111111110111111010011)
(define-fun $a () (_ BitVec 32) #b11111111111111111110111111010100)
(define-fun $b () (_ BitVec 32) #b11111111111111111110111111010101)
(define-fun $c () (_ BitVec 32) #b11111111111111111110111111010110)
(define-fun $d () (_ BitVec 32) #b11111111111111111110111111010111)
(define-fun $f () (_ BitVec 32) #b11111111111111111110111111001110)
(define-fun $h () (_ BitVec 32) #b00000000000000000000000000001100)
(define-fun $j () (_ BitVec 32) #b00001000000011011011111011111000)
(define-fun $n () (_ BitVec 32) #b00000000000000000000000000010000)
(define-fun abc () (_ BitVec 8) #b00001000)
)
(abc
is what I added)
Thank you for your quick answer, I was off by several months (august 2019) but being in sync with master
does not solve the problem.
Really strange, I get the error only when I run boolector
interactively in stdin
.
If I feed the formula in a file, it works fine, but if I run
boolector -i -m
I got:
boolector: <stdin>:48:2: unexpected command 'check-sat'
The tool that generated the formula directly feed it in pipe
so the problem arise.
I'm on macOS and using iTerm, if I do this:
cat > moo.smt2
then I get a truncated file (to get it working, I used vim
with :set paste
).
I then I had to use this: https://unix.stackexchange.com/a/204820 ; basically:
stty -icanon; cat > moo.smt2
stty sane
which then gave me the full content.
Basically, this probably isn't a Boolector issue, but a terminal/shell issue.
Hum, sorry for this inconvenience, you should be right, it is only a buffer problem. Have a nice day,
Hi,
I got an error when I try to solve this formula with
boolector
: after the big all inclusiveassert
, any command issue anunexpected command
error. Note that this formula is auto-generated (yet it is pretty uggly) but I am confident that it is well formed. The onlineZ3
demonstrator (https://compsys-tools.ens-lyon.fr/z3/index.php) successfully parses and solves the formula.Do you have any insight of the problem?