Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Unsoundness with powers #321

@kunalsheth

Description

@kunalsheth

Correct case ($2^{-1074}$):

(declare-fun x () Real)
(assert (= x (^ 0.5 1074.0)))
(assert (> x 0))
(check-sat)

dReal v4.21.06.1 returns:

delta-sat with delta = 0.001
x : [4.9406564584124654e-324, 4.9406564584124654e-324]

Unsound case ($2^{-1075}$):

(declare-fun x () Real)
(assert (= x (^ 0.5 1075.0)))
(assert (> x 0))
(check-sat)

dReal v4.21.06.1 returns:

unsat

The threshold of 1075 (approx. 1024) reminds me of floating point FTZ/DAZ, I will look into that too.
z3 and cvc5 both return SAT, but their internal representation is as a rational of two integers.
dReal3 also has this issue, but the threshold is between 100 and 101.

EDIT:

  1. 1075 makes sense for a FP FTZ/DAZ issue. See https://stackoverflow.com/questions/79359588/with-ieee-754-floating-point-numbers-is-underflow-still-better-than-overflow

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions