- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我定义了三角形的 3 个随机项。 Microsoft Z3 应输出:
为了约束我需要断言
三角形等式的项目 - 我想从毕达哥拉斯定理开始((h_c² + p² = b²) ^ (h_c² + q² = a²)
)。
我知道 Microsoft Z3 解决非线性算术问题的能力有限。但即使是一些手持计算器也能够解决非常简化的版本,如下所示:
(set-option :print-success true)
(set-option :produce-proofs true)
(declare-const a Real)
(declare-const b Real)
(assert (= a 1.0))
(assert (= b 1.0))
(assert
(exists
((c Real))
(=
(+
(* a a)
(* b b)
)
(* c c)
)
)
)
(check-sat)
(get-model)
感谢您对此的帮助 - 如果有任何不清楚的地方,请发表评论。
最佳答案
Z3 有一个用于非线性算术的新求解器 (nlsat)。它比其他求解器更高效 ( see this article )。新的求解器对于无量词问题来说是完整的。然而,新的求解器不支持证明生成。如果我们禁用证明生成,那么 Z3 将使用 nlsat 并轻松解决问题。根据您的问题,您似乎确实在寻找解决方案,因此禁用证明生成似乎不是问题。
此外,Z3 不产生近似解(如手持计算器)。它使用实代数数的精确表示。我们还可以要求 Z3 以十进制表示法显示结果(选项 :pp-decimal
)。 Here is your example online .
在此示例中,当使用精确表示时,Z3 将显示以下 c
结果。
(root-obj (+ (^ x 2) (- 2)) 1)
也就是说,c
是多项式x^2 - 2
的第一个根。当我们使用(set-option :pp-decimal true)
时,会显示
(- 1.4142135623?)
问号用于表示结果被截断。请注意,结果是否定的。不过,这确实是您发布的问题的解决方案。由于您正在寻找三角形,因此您应该断言常数都 > 0。
顺便说一句,您不需要存在量词。我们可以简单地使用常量c
。这是一个示例(也可用 online at rise4fun ):
(set-option :pp-decimal true)
(declare-const a Real)
(declare-const b Real)
(declare-const c Real)
(assert (= a 1.0))
(assert (= b 1.0))
(assert (> c 0))
(assert (= (+ (* a a) (* b b)) (* c c)))
(check-sat)
(get-model)
这是另一个没有解决方案的示例(也可用 online at rise4fun ):
(set-option :pp-decimal true)
(declare-const a Real)
(declare-const b Real)
(declare-const c Real)
(assert (> c 0))
(assert (> a c))
(assert (= (+ (* a a) (* b b)) (* c c)))
(check-sat)
顺便说一句,您应该考虑 Python interface for Z3 。它更加用户友好。我链接的教程有运动学方面的示例。他们还使用非线性算术来编码简单的高中物理问题。
关于logic - Z3定理证明者 : Pythagorean Theorem (Non-Linear Artithmetic),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15110692/
分布式系统如何保持一致和可用-CA。因为当分区发生时,CA是不可能的。如果我们说不会发生分区,那么只有它们是CA,那么如果分区不会发生,那么所有CP或AP系统也将是CA。 最佳答案 不可以 如常提到的
考虑以下片段: import Data.List %default total x : Elem 1 [1, 2] x = Here type : Type type = Elem 1 [1, 2]
我有以下目标: ∀x ∈ {0,1,2,3,4,5}. P x 我想将这个目标分解为六个子目标 P 0、P 1、P 2、P 3、P 4 和 P 5。这可以通过 apply auto 轻松完成。但是 a
我有以下目标: ∀x ∈ {0,1,2,3,4,5}. P x 我想将这个目标分解为六个子目标 P 0、P 1、P 2、P 3、P 4 和 P 5。这可以通过 apply auto 轻松完成。但是 a
主定理可用于求解递归关系,例如T(n)= aT(n/b)+f(n)。 那么,如果 f(n)=O(n) 或 f(n)=cn 两者的值是否相同?我也可以对 f(n)=cn 使用主定理吗? 最佳答案 假设
我是一个绝对的初学者,不是程序员,正在尝试使用 Logic and Proof 学习形式验证.我无法在精益中导入任何东西。 我将二进制文件的 tar 文件提取到 /tmp 然后执行 /tmp/lean
如果我理解正确(主要来自 applyTactic 函数的存在),则可以为 Idris 中的定理证明器编写自定义策略。我可以用什么(或哪里)的例子来学习如何做到这一点? 最佳答案 在 Idris 中有两
如何导出该类型的自由定理: data F a = C1 Nat | C2 Bool Nat a Nat 就是 data Nat = Z | S Nat? 原则上,Haskell 的“free-theo
我正在尝试使用 Kowalski 图算法来求解定理证明。算法的描述位于 http://www.doc.ic.ac.uk/~rak/对于如何处理大事件却保持沉默它生成的重复子句的数量。我想知道是否有处理
我对此很沮丧。 在 CLRS 第 3 版第 95 页(第 4.5 章)中,它提到像 T(n) = 2T(n/2) + n lg n 不能用主定理解决,因为差异 f(n)/n^(log_b(a)) =
沿着 The Haskell Road to Logic, Maths and Programming,你可以找到第 48 页 定理 2.12.1 ¬ ⊤ ≡ ⊥和它的反面 ¬ ⊥ ≡ ⊤ 本书使用
在我的网页上,我展示了数学定理,页面设计与学术数学论文 (LaTeX) 中使用的风格非常接近。标题结构可能如下: 几何 平面几何 定理。 我们有 a²+b²=c²。 问题:我应该使用 吗?标签附上
我(错误地)学习了关于验证并发程序的类(class),到目前为止我们已经介绍了这种称为“Owicki-Gries 方法”的方法。显然,可以通过将断言与每个语句相关联来证明有关程序的各种结果,并表明这些
我正在做一个 bookdown 项目,遇到了定理环境的问题。当我编译为 gitbook、epub_book 或 tufte_html_book 时它可以工作,但是 不是 到 pdf_book。以下是我
我从 Isabelle 的维基百科页面获得了以下代码: theorem sqrt2_not_rational: "sqrt (real 2) ∉ ℚ" proof assume "sqrt (
问题: 我的碰撞函数的某些输入似乎没有给出正确的结果。我实现了 SAT 算法来测试边界框和三角形的碰撞。当边界框处于负坐标并且三角形的 1 个点伸入其中时,输入不起作用。 示例输入: 这个输入没有发生
我一般看过两个版本的大师定理。 版本 1: (来自 Tim Roughgarden's course) 对于形式的递归关系, T(n) = 1, b > 1, and d >= 0 有3种情况, ca
我正在尝试证明在Agda中的简单引理,我认为这是对的。 If a vector has more than two elements, taking its head following taking
关于 list 1,需要类型级公理 (t a) = (t (getUI(t a))) 应该作为每个特定类型类实例的定理可推导。 test 函数的编译是否证明类型级公理适用于程序中的特定类型?编译是否提
根据Automating Induction with an SMT Solver以下应该适用于 Dafny: ghost method AdjacentImpliesTransitive(s: se
我是一名优秀的程序员,十分优秀!