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