質問:
公理と目標からなる問題の仕様があると仮定します(つまり、関連する証明問題は、すべての公理が与えられた場合に目標が満たされるかどうかです)。また、問題には公理間の矛盾や矛盾は含まれないと仮定します。問題を証明するには「高次の推論」が必要であることを事前に(つまり、完全な証明を構築せずに)決定する方法はありますか?
「高次の推論」とは、高次のロジックを書き留める必要がある証明手順を適用することを意味します。「高次推論」の典型的な例は帰納法です。原則として帰納法を書き留めるには、高次論理を使用する必要があります。
例:
「2つの自然数の加算は可換ですか?」という証明問題を指定できます。一次論理を使用する(つまり、コンストラクターzero / succを使用して自然数を定義し、標準公理とともに、「プラス」関数を再帰的に定義する公理と一緒に定義する)。この問題を証明するには、 "plus"の最初の引数または2番目の引数の構造の帰納が必要です( "plus"の正確な定義に依存)。入力問題の性質を分析するなどして、証明しようとする前にこれを知っていましたか?(もちろん、これは説明のための単なる例です-実際には、これはプラスの可換性よりも難しい証明問題にとって興味深いでしょう。)
もう少しコンテキスト:
私の研究では、Vampire、eproverなどの自動化された1次定理証明を適用して、証明問題(または証明問題の一部)を解決しようとすることがよくあります。多くの場合、証明者は証明を思いつくのにかなりの時間を必要とします(ただし、1次推論手法のみを必要とする証明がある場合)。もちろん、高次の推論を必要とする問題に一次定理証明器を適用しようとすると、通常はタイムアウトになります。
したがって、証明問題が高次の推論手法を必要とするかどうかを事前に伝えることができる方法/技術があるかどうか疑問に思っていました)少なくとも、特定の入力の問題のために。
私は自分の質問に対する答えを文献で探し、定理の分野の仲間の研究者にそれについて証明しましたが、今のところ、良い答えはありませんでした。私の期待は、インタラクティブな定理証明と自動化された定理証明(Coqコミュニティ?Isabelleコミュニティ(Sledgehammer)?)を組み合わせようとする人々からのこのトピックに関する研究があることです。
一般に、ここで概説した問題は決定できないと思います(そうですか?)。しかし、問題の洗練されたバージョンには良い答えがあるかもしれません...?