なぜ?
問題が発生するユースケースのコンテキスト
三角形のランダムなアイテムを 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)
質問
- 2 つの値が指定されている場合、Microsoft Z3 でピタゴラスの定理を解く方法はありますか?
- または: 非線形算術のこれらのケースを処理できる別の定理証明者はいますか?
ご協力ありがとうございます - 何か不明な点があれば、コメントしてください。