繁体   English   中英

如何用Z3证明者检查涉及某些三角学的定理?

[英]How to check the theorem that involves some trigonometry with Z3 prover?

我正在尝试使用Z3定理Prover证明以下命题:

|CA|^2 = |AB|^2 + |BC|^2,
|AB| = cos(alpha),
|BC| = sin(alpha)
  =>
|CA| = 1

我到底在做什么:

(declare-const AB Real)
(declare-const BC Real)
(declare-const CA Real)
(declare-const alpha Real)

(assert  (and (>= AB 0) (>= BC 0) (>= CA 0)) )
(assert  (= (^ CA 2) (+ (^ AB 2) (^ BC 2))) )
(assert  (= AB (cos alpha)) )
(assert  (= BC (sin alpha)) )

(assert (not  (= CA 1) ))

(check-sat)

我期望不安,不为人知 我也知道问题集中在具有sincos函数的部分。

我究竟做错了什么? 可以做点什么吗?

感谢帮助!

z3对sincos理解相当有限,我不希望它能够解决所有这些问题。 有关此的详细讨论,请参见https://github.com/Z3Prover/z3/issues/680 对于复杂的查询,您通常unknown作为答案。

话虽如此,您真幸运! Z3实际上可以正确回答您的特定查询; 但您必须使用正确的咒语。 代替:

(check-sat)

采用

(check-sat-using qfnra-nlsat)

和z3可以正确推断出该问题的不unsat 这种形式的check-sat告诉z3使用内部nl-sat引擎进行非线性实数运算。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM