2015-09-20 10 views
7

私は、機能において互いに重なり合っているCoqの戦術をたくさん見てきました。例えばCoqには最小限の戦術がありますか?

、あなたは仮説の正確な結論を持っているとき、あなたはassumptionapplyexacttrivial、そしておそらく他の人を使用することができます。その他の例には、非誘導型(??)の場合はdestructinductionが含まれます。

私の質問は次のとおりです。

は、このセットは任意のコックを証明するために使用することができますという意味で、完了です基本戦術(つまりautoを除外し、そのような)の最小限セットがあります自然数の関数に関する証明可能な定理?

この最小完全セットの戦術は理想的には基本的なものであり、それぞれが1つ(または2つ)の機能のみを実行し、その機能を容易に理解することができます。

+3

カリー・ハワード・アイソフォーフィズムのおかげで、あなたが戦術で作ることができるすべての証拠は、いくつかの言葉に相当します。従って、「正確な」戦術は、いかなる目標も証明するのに十分である。 termを一度に構築したくない場合は、代わりに 'refine'を使うことができます。 –

答えて

6

Coqの証明は、正しいタイプの用語に過ぎません。戦術は、より小さなサブ用語をより複雑なものに組み合わせることによって、これらの用語を構築するのに役立ちます。したがって、基本的な戦術の最小限のセットは、コンスタンチンが述べたように、exactの戦術しか含んでいません。

refineの戦術では、証明の言葉を直接与えることができますが、サブゴールを生成する穴があります。基本的にどんな戦術も、refine戦術の例です。

あなたが最初の戦術の唯一の最小セットを考慮したい場合は、私がintro{s}existsreflexivitysymmetryapplyrewriterevertdestructinductionを検討します。 inversionもすぐに便利になるかもしれません。

+0

'reflexivity'はあなたがsetoidsを使わず、対称もアプリケーションであれば' apply eq_refl'です。存在するのは 'constructor'です。これは順番に' apply'です。あなたは 'revert'をしばしば使いますか?一方、 'rewrite'と' simple'はおそらくこのリストに追加されます。 –

+2

あなたは 'rewrite'について言うことができます、ちょうど正しい形の補助題を適用しています。私が言いましたように、すべてが「洗練され」ます(証明用語を直接書く)。しかし、私は認めています、 'rewrite'がリストにあるはずです。私は依存型を使って多くの誘導を行うので、頻繁に復帰を使用します。 – Vinz

+2

ああ、従属型は 'revert'ingをたくさん使っています。確かに' rewrite'は実際に誘導原理を応用したものですが、事実上絶対に使用しません。 –

関連する問題