私は Prover9/Mace4 を通していくつかの格子証明を実行しています。私は格子結合操作の非標準の公理化を使用していますが、結合が交換可能、結合的、冪等であることはすぐにはわかりません。(私は Prover9 にそれが正しいことを証明してもらうことができます -- 最終的に。)
Prover9 がこれらのプロパティを探して、検索を高速化することを知っています。これらのプロパティを追加入力セクションに入れてみました (GUI バージョン 0.5 を実行しています)。
formulas(hints).
x v y = y v x.
% etc
end_of_list.
Q1: ヒントを見てもらう方法はこれですか?
Q2: 証明/ヒントとコツを高速化するためのヘルプを探すのに適した場所はありますか? (これを機能させることができれば、ヒントを提供したい演算子が他にもあります。)
参考までに、私の公理は次のとおりです(プリミティブ操作が1つだけの双格子):
x ^ y = y ^ x. % lattice meet
x ^ x = x.
(x ^ y) ^ z = x ^ (y ^ z).
x ^ (x v y) = x. % standard absorption for join
x ^ z = x & y ^ z = y <-> z ^ (x v y) = (x v y).
% non-standard absorption
(DougSの回答が投稿された後に編集してください。)
わお!ありがとうございました。桁違いのスピードアップ。
もしよろしければ、いくつかの後続のqがあります...
Q3: 生成されたヒントには、最初の公理と目標がすべて含まれているように見えます。(おそらく、すべてのヒントを必要としないというあなたのコメントです。公理を削除すると証明が速くなることを確かに経験しました。)
Q4: (結果として) 公理によって正当化されないヒントを追加するとどうなりますか? それらは無視されますか?
Q5: 公理に反するヒントを追加するとどうなりますか? (いくつかの試行から、これにより Prover9 が誤って推論することはありません。)
Q6: 証明 (試行) がタイムアウトした場合、これまでに推論された数式を取得し、次の試行を高速化するためのヒントとして再利用する方法はありますか? (Q3 と Q4 に関して私が見たものにもかかわらず、これはある種の誤謬を引きずり込むだろうと私は感じています。)