Z3 支持非线性算术

2024-03-07

我知道 Z3 对非线性算术有一些支持,但想知道扩展到什么范围?是否可以指定支持和不支持(或可能超时)哪些类别的非线性算术?提前了解这些将帮助我尽早放弃我的任务。

似乎不支持与电源相关的内容,如下所示

def pow2(x): 
    k=Int('k')
    return Exists(k, And(k>=0,2**k==x))


prove(pow2(7))
failed to prove

Z3支持非线性多项式真正的算术。因此,不支持超越函数(例如,正弦和余弦)和指数函数(例如,2^x)。实际上,对于指数,Z3 可以处理可以简化为数字的指数。这是一个example http://rise4fun.com/Z3Py/woms,

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

在此示例中,y in x**y被重写为3在预处理步骤期间。经过预处理后,nlsat http://research.microsoft.com/en-us/um/people/leonardo/files/IJCAR2012.pdf调用非线性多项式实数运算的求解器。 关于非线性整数运算,请参见这个相关帖子 https://stackoverflow.com/questions/13898175/how-does-z3-handle-non-linear-integer-arithmetic/13898524#13898524.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Z3 支持非线性算术 的相关文章

  • Z3统计:时间衡量什么?

    当使用 st 命令选项运行 Z3 3 1 时 我得到了奇怪的统计结果 如果按 Ctrl C Z3 会报告total time time 总时间 和 时间 衡量什么 这是一个错误 虽然很小 上面描述的差异 Thanks 这是 Z3 for L
  • z3 对于没有量词的断言生成未知

    我有一些简单的约束 涉及 z3 中实数的乘法 这些约束产生unknown 问题似乎是它们被包装在数据类型中 因为未包装的版本会产生sat 这是一个简化的情况 declare datatypes T NUM n Real declare co
  • 如何在z3py中连接正则表达式?

    我想构造一个正则表达式 例如a b c z3中有一个函数re 可以将3个正则表达式连接在一起 所以我可以构造a b c 如下所示 assert str in re aabbc re re str to re a re str to re b
  • 混合实数和位向量

    我有两个使用实数的 SMT2 Lib 脚本 它们在道德上是等效的 唯一的区别是 一个也使用位向量 而另一个则不使用 这是同时使用实数和位向量的版本 uses both reals and bit vectors set option pro
  • 使用 C++ API 进行数组选择和存储

    我正在使用 z3 v 4 1 我正在使用 C API 并尝试在上下文中添加一些数组约束 我在 C API 中没有看到选择和排序函数 我尝试混合使用 C 和 C API 在示例中array example1 如果我将上下文变量从Z3 Cont
  • 关于 Z3 for Java 的性能问题

    我在当前使用 Z3 for Java 的项目中遇到了一些性能问题 基本上我当前的大多数限制都非常简单 例如 f x 2 f y lt 3 f x lt 5 我正在使用整个项目共享的静态上下文和解算器实例 public class Const
  • 从 z3 模型中仅提取一个值

    我正在寻找相当于 z3 源 API获取价值 例如 当我有以下查询时 我可以轻松指定我想要查看哪些值 declare const s1 String declare const s2 String assert 8 str len s1 as
  • 哪里可以找到 z3py 教程

    由于某些安全问题 rise4fun z3py 将在几周内不可用 我试图找到一些学习z3py的资源但徒劳无功 请推荐一些学习z3py的资源 我使用 Z3Py 教程源创建了一个 zip 文件 它基本上是一些 HTML 页面和一堆 python
  • Z3 量词支持

    我需要一个定理证明器来解决一些简单的线性算术问题 然而 即使是简单的问题我也无法让 Z3 工作 我知道它不完整 但是它应该能够处理这个简单的示例 assert forall t Int t 5 check sat 我不确定我是否忽略了某些事
  • 在 Z3 中定义带有约束的代数数据类型

    我看过一些在线材料 用于定义代数数据类型 例如 Z3 中的 IntList 我想知道如何定义具有逻辑约束的代数数据类型 例如 如何定义代表正整数的 PosSort SMT中的全部功能 在 SMT 中函数总是完整的 这提出了如何对部分函数 例
  • 任意长度的通用位向量类型

    出于与此处描述相同的原因 用户定义的未解释函数 https stackoverflow com questions 7740556 equivalent of define fun in z3 api 我想定义我自己的未解释函数 bvred
  • Z3 支持非线性算术

    我知道 Z3 对非线性算术有一些支持 但想知道扩展到什么范围 是否可以指定支持和不支持 或可能超时 哪些类别的非线性算术 提前了解这些将帮助我尽早放弃我的任务 似乎不支持与电源相关的内容 如下所示 def pow2 x k Int k re
  • Z3 实数算术和数据类型理论整合得不太好

    这与我之前问过的问题有关Z3 SMT 2 0 与 Z3 py 实现 https stackoverflow com questions 13826217 z3 smt 2 0 vs z3 py implementation我实现了无穷大正实
  • Z3 SMT 求解器中的常数相等

    我正在使用 Microsoft 的 Z3 SMT 求解器 并且我正在尝试定义自定义类型的常量 默认情况下 这些常量似乎并不不平等 假设您有以下程序 declare sort S 0 declare const x S declare con
  • (Z3Py) 声明函数

    我想在简单的 result x t c 公式中找到一些给定结果 x 对的 c 和 t 系数 from z3 import x Int x c Int c t Int t s Solver f Function f IntSort IntSo
  • Z3:执行矩阵运算

    我的情况 我正在开展一个项目 需要 证明正确性3D 矩阵变换 http rodrigo silveira com 3d programming transformation matrix tutorial UU65YicWsYZ涉及矩阵运算
  • 为什么 Z3 对于很小的搜索空间来说很慢?

    我正在尝试制作一个 Z3 程序 在 Python 中 它生成执行某些任务的布尔电路 例如 添加两个 n 位数字 但性能非常糟糕 以至于对整个解决方案空间进行强力搜索将导致快一点 这是我第一次使用 Z3 所以我可能会做一些影响我性能的事情 但
  • Z3 Java API 定义函数

    我需要您帮助使用 Z3 Java API 定义函数 我尝试解决这样的问题 与 z3 exe 进程一起工作正常 declare fun a Real declare fun b Real declare fun c Bool define f
  • 使用SMT-LIB使用公式计算模块数量

    我不确定使用 SMT LIB 是否可以做到这一点 如果不可能 是否存在可以做到这一点的替代求解器 考虑方程 a lt 10 and a gt 5 b lt 5 and b gt 0 b lt c lt a with a b and c整数
  • 是否可以将一位的位向量转换为 SMTLib2 中的布尔变量?

    我想要一个布尔变量来测试 例如 位向量的第三位是否为 0 位向量的理论允许提取 1 位作为位向量 但不是布尔类型 我想知道我是否可以出演这个角色 谢谢 更新 如果我的问题不清楚 我很抱歉 但 Nikolaj Bjorner 的答案是如何测试

随机推荐