関数がべき等であることを証明することは可能ですか?


12

関数がor等であることを証明するために静的型または依存型を使用することは可能ですか?

GoogleとStackOverflow / StackExchangeのさまざまな場所で検索しましたが、運が悪かったのです。私が見つけた最も近いものは、イドリスに関する次の会話でした:https : //groups.google.com/forum/#! topic/ idris- lang/ yp7vrspChRg

残念ながら、その議論は私の頭の上で少しです。


3
私は100%確信がないのでこれを答えとして投稿していませんが、ライスの定理のためにこれは不可能だと思います。
gardenhead

4
これは魅力的な質問であり、私の直感では、これは制限されたチューリング完全でない言語で可能であるべきだと示しています。ただし、プログラマーはソフトウェア開発のライフサイクルに関する質問に焦点を当てています(詳細についてはヘルプセンターをご覧ください)。これはコンピューターサイエンスの質問のようです。コンピューターサイエンスのサイトはより適切で、より良い回答につながる可能性があります。
アモン

2
プログラムの動作が持ち得る任意のプロパティ与えられ、それはだとライスの定理の状態を@gardenhead 時々プログラムがその性質を持っているかどうかを決定することは不可能。「これは時々不可能」と「これは不可能」の間には大きな違いがあります。
タナースウェット

2
私の最後のコメントはかなりあいまいでした。いずれにしても、ライスの定理は次のとおりです。すべての関数をi等またはas等でないと正しく分類するアルゴリズムはありません。ただし、一部の機能をべき等であると分類する便利なアルゴリズムがまだあります。
タナースウェット

2
OPは、関数がi等であることを証明することについて質問しました。アルゴリズムが関数をidemptotentとして分類するかどうかはありません。主な違いは、人が証拠を作成できることです。チューリングの完全性に関しては、実際には問題ではありません
-gallais

回答:


3

特定の機能についてはそうです。特にあなたが機能を知っているとき;-)

「任意の関数がべき等であるかどうかを自動的に判断するアルゴリズムはありますか?」という質問の意味であれば、コメントで既に述べた定理により、答えはノーです。ただし、特定のクラスの関数については、理論上、関数がべき等であるかどうかを非常に簡単に判断できます。たとえば、関数が純粋(つまり:副作用なし)であり、与えられた入力に対して常に有限時間内に値を返すことがわかっている場合f(f(x))=f(x)、if等性は、可能な入力の場合に試すだけで決定できますx関数に。これは非常に効率的であるというわけではなく、宇宙の終わりまで実行される可能性があります。

したがって、それがあなたが探していた答えではない場合、より良い質問を書いてください。現在、あなたが本当に本当に探しているものはかなり明確ではありません。


答えてくれてありがとう。「自動的に決定する」能力はまさに私が探していたものでした。
-bmaddy

2
「特定の機能について」ステートメントを拡張するには:有限量の入力のみを受け入れる(すべてを試行する)か、再帰的に定義される入力のタイプ(自然のような)のいずれかで、dem等性を証明できますこれは、ベースケースと再帰ケースでべき等性が真であることを証明するだけでよいことを意味します。
Qqwy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.