私のcoqの開発では、私の問題ドメインに合った新しい戦術、a la Prof. Adam Chlipalaを作成する方法を学んでいます。そのページで、彼は強力なカスタム戦術を作成する方法を説明します。 repeat
とmatch
を組み合わせる。オートの検索とヒントデータベースをカスタム戦略でどのように活用するのですか?
今、私はすでに強力なワンショット戦術を使用しています。auto
。これは、ヒントデータベースから見つかった一連のステップをまとめます。私はそれらのヒントデータベースをキュレーションすることに多少の努力をしてきましたので、私もそれを使い続けたいと思います。
ただし、これは問題を示します。 auto
の機能をカスタマイズされた戦術に組み込むことが「正しい」方法であるかどうかは不明です。
たとえば、(ページごとに)auto
は常に目標を解決するか何もしないので、ループ内に置くことはループの後で一度呼び出すよりも強力ではありません。
これが理想的ではない理由を知りたい場合は、auto
という1つの「ステップ」を直接呼び出す仮説的な方法を検討してください(ゴールを解決したときだけではなく) 。このような単一ステップは、マッチリピートループにおいてカスタム動作でインターリーブされ、例えば、 try contradiction
またはtry congruence
である。
カスタム戦略にauto
の機能を組み込むための良いデザインパターンはありますか?
auto
の動作を「シングルステップ」の戦術に分解できますか?
これは、どのようにして、自動類似検索を、「合同」または制限付きフラグメントの他のソルバーと組み合わせることができますか? – phs
@phs:私が提案しているのは、一致戦術などを自動戦術から呼び出すことです。 –
ああ、そうです。明示的な用語を検索に追加することができる 'auto using ...'と同様の 'typeclasses eauto'の変形を知っていますか?それがマニュアルの中にあれば、私はどこかで見ることができません。 – phs