因此?
我的问题发生的用例上下文
我定义了一个三角形的 3 个随机项。Microsoft Z3 应输出:
- 约束是否满足或是否有无效的输入值?
- 所有其他三角形项目的模型,其中所有变量都分配给具体值。
为了约束我需要assert
三角形等式的项目 - 我想从勾股定理((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)
问题
- 如果给出两个值,有没有办法让 Microsoft Z3 解决勾股定理?
- 或者:是否有另一个定理证明器能够处理这些非线性算术的情况?
感谢您对此的帮助 - 如果有任何不清楚的地方,请发表评论。