が、私は(negb (negb true))
)も同様にfalse
と(true
にを簡素化したいコック:?「書き換え」または「適用」を使用して、真の簡素化(NEGB(neqb真)証明で
私はコックのnegb_involutive
手順を知っています、。しかし、私の教科書は、それを導入していないので、私は私が何とかのみrewrite
またはapply
を使用してその機能を模倣するために管理する必要があることだと思う。
が、私は(negb (negb true))
)も同様にfalse
と(true
にを簡素化したいコック:?「書き換え」または「適用」を使用して、真の簡素化(NEGB(neqb真)証明で
私はコックのnegb_involutive
手順を知っています、。しかし、私の教科書は、それを導入していないので、私は私が何とかのみrewrite
またはapply
を使用してその機能を模倣するために管理する必要があることだと思う。
アントンは、この目標を解決するための典型的な手順は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
を使用すると、ほとんどの目的が同等であることがわかります。
あなたは 'simple.'を使用できませんか?また、左辺と右辺が定義的に等しいので、 'negb(negb true)= true'は' reflexivity 'によって証明できます。 –
以前は「シンプル」を使っていませんでしたが、おそらく私はそれを調べるべきでしょう。 – Shuzheng
私は 'simple'は今は十分だと思います。より強力な戦術「計算」もあるが、それはより大きい用語を作り出すかもしれない。あなたはこの素晴らしいチートシート(http://adam.chlipala.net/itp/tactic-reference.html)を見たいかもしれません。 –