証明では(同様に) に単純化(negb (negb true))
したいと思います。true
false
Coq の手順は知っていますが、私の教科書では紹介されていないので、 ornegb_involutive
のみを使用して何とかその機能を模倣する必要があると思います。rewrite
apply
証明では(同様に) に単純化(negb (negb true))
したいと思います。true
false
Coq の手順は知っていますが、私の教科書では紹介されていないので、 ornegb_involutive
のみを使用して何とかその機能を模倣する必要があると思います。rewrite
apply
アントンが言ったように、この目標を解決するための典型的な手順はreflexivity
、またはその下位バージョンを使用することapply eq_refl
です。
Coq はプログラミング言語に基づいていることを思い出してください。この場合、Python や C で返されるのと同じ方法で、実際に の実行~~ (~~ true)
が簡単にわかりますtrue
(ここでは を省略しています)。~~ x = negb x
true
apply eq_refl
Coqは、一致させるために結合するときに項を「計算」または「削減」しようとするため、目標を解決します。のタイプeq_refl
はforall x, x = x
であるため、が目標~~ (~~ true)
に還元されると になり、解決することができます。この場合、あなたがそれを見るために目標を減らすだけですが、技術的には証明には必要ありません。true
true = true
simpl
あなたの場合に適用するのは慣用的ではありませんnegb_involutive
。この補題はnegb
、のように への引数が変数の場合に役立ち~~ (~~ (~~ x)) = ~~ x
ます
rewrite
平等を含むほとんどの目標で使用していることに気付くでしょう。