Closed soonhokong closed 10 years ago
$ ../../bin/solver stefan.smt2 --proof --delta --precision=0.001 && cat stefan.smt2.proof
sat
SAT with the following box:
one : [0.9999614900119359 , 1];
x_6 : [0.1929218830719585 , 0.1929603930600227];
x_4 : [0.1339424194862116 , 0.1339809294742757];
x_5 : [0.1321056610073776 , 0.1321441709954418];
x_2 : [0.1286661151957076 , 0.1287046251837718];
x_0 : [0.117727297963041 , 0.1177658079511051];
x_3 : [0.1629731132876394 , 0.1630116232757036];
x_1 : [0.131625 , 0.1316635099880642]
0: 0.066667<=((x_0*x_1)+(x_2*x_3)+(x_0*x_3)) : 3.164779577065347e-05; [delta = 0.001000000000000001]
1: 0.066667<=((x_1*x_2)+(x_3*x_4)+(x_1*x_4)) : 3.168946857472211e-05; [delta = 0.001000000000000001]
2: 0.066667<=((x_2*x_3)+(x_4*x_5)+(x_2*x_5)) : 3.152329865879767e-05; [delta = 0.001000000000000001]
3: 0.066667<=((x_3*x_4)+(x_5*x_6)+(x_3*x_6)) : 3.766098158561327e-05; [delta = 0.001000000000000001]
4: 0.066667<=((x_4*x_5)+(x_6*x_0)+(x_4*x_0)) : 3.190485153067857e-05; [delta = 0.001000000000000001]
5: 0.066667<=((x_5*x_6)+(x_0*x_1)+(x_5*x_1)) : 3.228007452643622e-05; [delta = 0.001000000000000001]
6: 0.066667<=((x_6*x_0)+(x_1*x_2)+(x_6*x_2)) : 3.437570302558535e-05; [delta = 0.001000000000000001]
7: (x_0+x_1+x_2+x_3+x_4+x_5+x_6)=one : 0.0003080799045129812; [delta = 0.001000000000000001]
8: one<=1.0 : 3.850998806420592e-05; [delta = 0.001000000000000001]
$ ../../bin/solver stefan.smt2 --proof --precision=0.001 && cat stefan.smt2.proof
sat
SAT with the following box:
one : [0.6245885997586125 , 0.625];
x_6 : [0.07053545039892909 , 0.07094685064031648];
x_4 : [0.07053545039892922 , 0.07094685064031659];
x_5 : [0.006176467699647607 , 0.006587867941034942];
x_2 : [0.1201056846593743 , 0.1205170849007617];
x_0 : [0.1329269676996476 , 0.1333383679410351];
x_3 : [0.1329269676996476 , 0.1333383679410351];
x_1 : [0.09138161120243715 , 0.09179301144382452]
I checked the constraint
0: 0.066667<=((x_0*x_1)+(x_2*x_3)+(x_0*x_3))
and found that it is unsat whether I run with or without the —delta flag. This suggests a problem in realpaver because it is not showing the constraint as unsat, regardless of which termination test we are using. ICP shouldn’t even get to the termination check b/c realpaver should prove unsat with these boxes.
Fixed by 01bddbe. Now it returns UNSAT
.
I got a benchmark from Stefan Kiefer at Oxford:
When I run
dReal
with the following options, it returns SAT:As we see from the bottom part of the output, the errors on the literals are very small (10^-16). However when I compute the values using the assignment in Python, the errors are actually pretty big:
This is the result from the python script:
The errors are around 10^-2, which is much bigger than what dReal claims (10^-16).
@danbryce, do you have any idea what's going on here?