Z3优化:通过API检测无界性
Z3 optimization: detect unboundedness via API
我在检测优化问题的无界性时遇到了困难。正如这里的例子和一些答案所述,无界优化问题的打印结果等于"oo",必须进行解释(通过字符串比较?)。
我的问题是:有没有什么方法可以使用API来检测这一点?
我已经搜索了一段时间,唯一可以做我想做的事情的函数是Z3_mk_fpa_is_infinite(Z3_context c, Z3_ast t)
,它返回一些Z3_ast
对象。问题是:这是正确的方法吗?我如何从Z3_ast
对象中获得无界属性?
目前没有内置的方法来提取无界值或无穷小。当表示最大/最小值时,优化引擎使用称为"epsilon"(Real类型)和"oo"(Real或Integer类型)的特殊常量是无界的或处于严格的界。这些常量没有内置的识别器,从形式上讲,它们不属于Reals的域。它们属于一个扩展字段。因此,从形式上讲,我必须在不同的数字字段上返回一个表达式,或者返回相当于三重数字的值(epsilon,标准数字,无穷大)。例如,标准数字5.6将被表示为(0,5.6,0),并且刚好在5.6以下的数字被表示为"-1,5.6,O",并且+无穷大的数字是(0,0,1)。对我来说,返回三个值而不是一个值似乎并不能像返回一个表达式那样令人满意。我让用户对返回的表达式进行后处理,如果需要的话,可以对符号"oo"answers"epsilon"进行匹配,以分解值。
相关文章:
- 用于访问容器<T>数据成员的正确 API
- 使用CMake检测支持的C++标准
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++MySQL C api用户输入行
- 当套接字连接断开时检测C/C++Unix
- 如何使用 AWS Transcribe C++ API 中的'StartTranscriptionJobRequest'?
- 将std::string传递给WriteConsole API
- 如何在 Windows API 中检测带有虚拟代码的非字母?
- WPD API检测设备是否是手机
- 如何检测 API 挂钩
- 是否有适用于张量流对象检测 API 的C++包装器
- FFmpeg C++ API 来检测视频是否旋转(在手机上拍摄)
- WIN 32 用于检测已启动和终止的应用程序/进程的 API
- 如何找到检测到 Cuda API 错误时程序崩溃的位置:cudaMemcpy 返回 (0xb)
- 使用termios api(c++)检测Linux中的角色设备是否已断开连接
- API检测活跃的会话在Mac OS X与快速用户切换
- 是否有一个Windows API来检测USB过流
- 使用Windows API检测网卡和以太网设备的IP地址
- Z3优化:通过API检测无界性
- 任何用于检测 MTP 设备的 Windows API