2016-11-14 3 views
1

が、私は(negb (negb true)))も同様にfalseと(trueにを簡素化したいコック:?「書き換え」または「適用」を使用して、真の簡素化(NEGB(neqb真)証明で

私はコックのnegb_involutive手順を知っています、。しかし、私の教科書は、それを導入していないので、私は私が何とかのみrewriteまたはapplyを使用してその機能を模倣するために管理する必要があることだと思う。

+2

あなたは 'simple.'を使用できませんか?また、左辺と右辺が定義的に等しいので、 'negb(negb true)= true'は' reflexivity 'によって証明できます。 –

+0

以前は「シンプル」を使っていませんでしたが、おそらく私はそれを調べるべきでしょう。 – Shuzheng

+2

私は 'simple'は今は十分だと思います。より強力な戦術「計算」もあるが、それはより大きい用語を作り出すかもしれない。あなたはこの素晴らしいチートシート(http://adam.chlipala.net/itp/tactic-reference.html)を見たいかもしれません。 –

答えて

4

アントンは、この目標を解決するための典型的な手順はreflexivityを使用することで、またはそのう、言ったように下位バージョンapply eq_refl

コックは、(私は ~~ x = negb xを省略する場合)プログラミング言語に基づいており、この場合、実際 ~~ (~~ true)の実行が容易 trueあると見られている、同じように、それは、PythonまたはC

true

を返すこと

リコールapply eq_reflは、Coqが条件を一致させるために結びつけるときに用語を「計算する」または「減らす」ことを試みるため、目標を解決します。 eq_reflのタイプはforall x, x = xなので、~~ (~~ true)trueに減らすと、あなたの目標はtrue = trueになり、解決できます。この場合、simplはあなたの目に見える目標を減らすだけですが、証明には技術的には必要ありません。

negb_involutiveを適用するのは慣用ではありません。negbの引数が~~ (~~ (~~ x)) = ~~ xのような場合、この補助定法は便利です。

rewriteを使用すると、ほとんどの目的が同等であることがわかります。

関連する問題