z3中的划分javaAPI
The division in the z3 java API
我刚刚在 Z3 JAVA API 中发现名为“mkDiv()”的 division 指的是整数 division 而不是正常的。例如:
ArithExpr a = ctx.mkDiv(ctx.mkInt(3),ctx.mkInt(5)).simplify();
a 的结果是“0”但是“3/5”。
在 tutor 中,division 和整数 division 似乎是分开的 2 部分:
(断言 (= r1 (div a 4))) ;整数 division
(断言 (>= b (/ c 3.0)))
Z3 中的 division 在哪里 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
我刚刚在 Z3 JAVA API 中发现名为“mkDiv()”的 division 指的是整数 division 而不是正常的。例如:
ArithExpr a = ctx.mkDiv(ctx.mkInt(3),ctx.mkInt(5)).simplify();
a 的结果是“0”但是“3/5”。
在 tutor 中,division 和整数 division 似乎是分开的 2 部分: (断言 (= r1 (div a 4))) ;整数 division (断言 (>= b (/ c 3.0))) Z3 中的 division 在哪里 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