2013-03-09 14 views
5

を適用における目標で前提しかし、私はBを必要としません。私はドロップのは私が目標</p> <pre><code>1. A ⟹ B ⟹ C ⟹ D </code></pre> <p>を取得するには、次の補題</p> <pre><code>lemma "⟦ A; B; C ⟧ ⟹ D" </code></pre> <p>を表示したいとしましょうスタイル

1. A ⟹ C ⟹ D 

のようなものに私の目標を転送することができますどのようにしてスタイルを適用するには、元の文lemma、ちょうど現在の目標を変更する必要はありません。

答えて

5

希望するものはapply (thin_tac B)です。しかし、私が最後にこのことをしたとき、Peter Lammichは "Oh god、なぜあなたはこれをしているのですか"と叫んだ。嫌になり、thin_tacを取り除くために私の証明を書き直した。だから、この戦術を使うことは、もはやまさに奨励されるようには見えません。

+1

ここでは何を示して現実的な例でありますいつも 'thin_tac'を使うと起こります:http://afp.sourceforge.net/entries/Group-Ring-Module.shtml – Makarius

+3

' thin_tac'の中でパターンを使うこともできます:例えば 'apply( (1 + 1 = 2)∧(2 + 2 = 4) 'を破棄する。これにより、プルーフスクリプトでの入力/複製の量を減らすことができます。 – davidg

5

通常、後で削除するのではなく、ゴール状態で望ましくないものを避ける方がよいでしょう。あなたが証明問題を定式化する方法は、あなたがそれを解決する方法に影響します。

これは、構造化された証明のために特に重要である:あなたの代わりに否定それらのいくつかを抑制する、積極証明の次のステップに参加すべきであるそれらの事実にをアピール。

など。

校正に関連する事実を知ることは、既に読みやすさの出発点です。

そのスタイルに続いて、あなたの最初の問題は次のようになります。減少した冗長性と

lemma 
    assumes A and B and C 
    shows D 
proof - 
    from `A` and `C` show D sorry 
qed 

かのように、ABCDが大命題であれば:

​​
+1

適用スタイルのスクリプトでそのような「魅力的な」魅力を発揮できますか?もちろん、当初の仮定に名前を付けることができますが、中間仮説はどうですか? – davidg

+3

大きな証明書を適用するための1つの大きなスクリプトを主張すると、難しくなってきます。しかし、なぜこれを行うのですか?あなたは簡単に適切なIsarで外部構造を作ることができますし、葉の位置にのみスクリプトを適用するように劣化します。 – Makarius

関連する問題