Z3 support for nonlinear arithmetic

后端 未结 1 1097
野性不改
野性不改 2020-11-30 15:10

I understand that Z3 has some supports for nonlinear arith but wondering to what extends ? Is it possible to specify what classes of nonlinear arithmetics are supported an

相关标签:
1条回答
  • 2020-11-30 15:50

    Z3 supports nonlinear polynomial Real arithmetic. So, there is no support for transcendental functions (e.g., sine and cosine), and exponential (e.g., 2^x). Actually, for the exponential, Z3 can handle exponents that can be simplified to numerals. Here is an example,

    x = Real('x')
    y = Real('y')
    solve(y == 3, x**y == 2)
    

    In this example, the y in x**y is rewritten to 3 during a preprocessing step. After preprocessing, the nlsat solver for nonlinear polynomial real arithmetic is invoked. Regarding nonlinear integer arithmetic, see this related post.

    0 讨论(0)
提交回复
热议问题