2016-11-18 9 views
3

a + (b + (c + d))のような合計があり、これを補題を適用するためにa + b + c + dに変換したいとします。Coq:合計から中括弧を削除します。

Nat.add_assocでこれを手動で行うのは非常に面倒です。もっとスマートな方法がありますか?私が使用する

答えて

4

「簡単ですが、素敵ではない」の方法は、あなたがそれはもう適用できなくなるまで、いくつかの戦術を繰り返している、repeat、戦術を使用することができますreplace (a + (b + (c + d)))) with (a + b + c + d) by now omega

+1

なぜそれはいいですか? また、 'with auto with *'を実行することもできます。 –

+1

「オメガ」によって作成された出力用語を見たことがあれば分かります。ほとんどの場合、それは過度に複雑であり、書き換えを使用した小さな証明はそれほど小さくなりません。しかし、それは個人的な意見です;) – Vinz

+0

'by omega'もうまくいくでしょう。リングでも問題を解決します。前者は、輸入される「オメガ」モジュールを必要とする。後者 - 「Arith」。 –

4

です:

repeat rewrite Nat.add_assoc. 

以上の簡潔なバージョン:

rewrite !Nat.add_assoc. 

repeatの亜種とまったく同じです。

このアプローチの欠点は、目標のどこにでも書き換えられることです。そのため、数式の一部を選択して、書き換えを実行することができます。

関連する問題