在 Z3 求解器中,有没有一种方法可以用支持算术运算的定点表示法来表示数字
In Z3 solver , is there a way to represent numbers in fixed point notation with arithmetic operations support
在 Z3 求解器中,我想使用定点表示法表示数字并执行四舍五入的算术运算。
例子:假设X、Y、Z代表定点数类型,
X[4,3] Total 4 digits number with 3 digits after the decimal.
Y[4,2]
Z[4,1]
Assign fixed point numbers to X, Y
X = 1.234 ( here there are total 4 digits & decimal digits are 3 )
Y = 45.67
Perform the Fixed point numbers Arithmetic operation
Z = X * Y(结果56.35678需要四舍五入赋给Z即56.36)
我了解到,Z3支持数字的浮点理论,但不支持算术运算的数字的定点理论!
有没有计划支持数字的不动点理论?如果没有,是否有任何方法可以使用 Z3 求解器中的任何现有理论和示例来实现此目的?
提前感谢您的帮助!
我从 Z3 论坛获得了有关数字不动点理论的信息。
请在下面找到 link 以获取信息
An SMT Theory of Fixed-Point Arithmetic
它通过 PySMT 提供了一个 API 来处理定点数:
您随时可以在 https://github.com/Z3Prover/z3/issues
“请求”此类功能
但 SMT 求解器通常遵循 SMTLib 倡议;因此,除非 SMTLib 提出定点数的“逻辑”,否则它不太可能实现。看这里:http://smtlib.cs.uiowa.edu/
有一个 SMTLib 讨论论坛,您可以在其中post提出您的请求并寻求指导:https://groups.google.com/forum/#!forum/smt-lib
但是,在当前功能范围内,开箱即用不支持这些类型的号码。鉴于此,我会尝试在 SMT 求解器的“外部”建模并使用常规整数库,但具体细节取决于您要投资多少以及您要处理的问题类型。 (例如,您可以用两个整数表示定点数,一个用于“整数”部分,一个用于“分数”部分,然后自己完成所有算术和舍入等。这可能需要大量工作,但鉴于目前没有对这些数字的直接支持,这可能是您最好的选择。)
在 Z3 求解器中,我想使用定点表示法表示数字并执行四舍五入的算术运算。
例子:假设X、Y、Z代表定点数类型,
X[4,3] Total 4 digits number with 3 digits after the decimal.
Y[4,2]
Z[4,1]
Assign fixed point numbers to X, Y
X = 1.234 ( here there are total 4 digits & decimal digits are 3 )
Y = 45.67
Perform the Fixed point numbers Arithmetic operation
Z = X * Y(结果56.35678需要四舍五入赋给Z即56.36)
我了解到,Z3支持数字的浮点理论,但不支持算术运算的数字的定点理论! 有没有计划支持数字的不动点理论?如果没有,是否有任何方法可以使用 Z3 求解器中的任何现有理论和示例来实现此目的?
提前感谢您的帮助!
我从 Z3 论坛获得了有关数字不动点理论的信息。 请在下面找到 link 以获取信息
An SMT Theory of Fixed-Point Arithmetic
它通过 PySMT 提供了一个 API 来处理定点数:
您随时可以在 https://github.com/Z3Prover/z3/issues
“请求”此类功能但 SMT 求解器通常遵循 SMTLib 倡议;因此,除非 SMTLib 提出定点数的“逻辑”,否则它不太可能实现。看这里:http://smtlib.cs.uiowa.edu/
有一个 SMTLib 讨论论坛,您可以在其中post提出您的请求并寻求指导:https://groups.google.com/forum/#!forum/smt-lib
但是,在当前功能范围内,开箱即用不支持这些类型的号码。鉴于此,我会尝试在 SMT 求解器的“外部”建模并使用常规整数库,但具体细节取决于您要投资多少以及您要处理的问题类型。 (例如,您可以用两个整数表示定点数,一个用于“整数”部分,一个用于“分数”部分,然后自己完成所有算术和舍入等。这可能需要大量工作,但鉴于目前没有对这些数字的直接支持,这可能是您最好的选择。)