java - z3 java API中的划分
问题描述
我刚刚发现 Z3 JAVA API 中名为“mkDiv()”的除法是指整数除法,而不是普通除法。例如:
ArithExpr a = ctx.mkDiv(ctx.mkInt(3),ctx.mkInt(5)).simplify();
a 的结果是“0”但“3/5”。
在导师中,除法和整数除法似乎分别是2部分: (assert (= r1 (div a 4))) ; 整数除法(assert (>= b (/c 3.0))) Z3 java api中的除法在哪里?
解决方案
mkDiv
将根据其论点做正确的事。由于您要传递整数,因此它将进行整数除法。要使用实数除法,您需要将实数作为参数传递:
import com.microsoft.z3.*;
class A {
public static void main(String [] args) {
Context ctx = new Context();
ArithExpr a = ctx.mkDiv(ctx.mkReal(3),ctx.mkReal(5));
System.out.println(a.simplify());
};
};
这打印:
3/5
推荐阅读
- c# - 如何根据 SQL 数据库值在 Visual Studio C# 中的 WinForm 上设置复选框状态?
- spring-boot - spring-boot-thymeleaf-starter -“圆形视图路径[着陆],检查您的 ViewResolver 设置!错误
- android - Gomobile 库使用隐藏的 API 方法
- css - 如何防止 Gmail 应用解析地址并将链接注入我的电子邮件正文?
- php - 如何根据 MySQL 和 PHP 中的用户权限创建两个不同的会话
- c++ - GCC、Apple LLVM 和 MSVC 编译器的不同部分的名称是什么?
- r - 使用权重将数据表正确转换为频率表
- css - CSS 仅在 TOR 浏览器上显示,其他浏览器不显示
- visual-studio - 为什么vsshell中的DynamicResources:VsBrushes没有解决
- php - 简化代码以在其他控制器中使用