とすれば:
- 非常に表現力豊かな型システムを持つ言語(例:Idris)は、外部関数インターフェース/ unsafePerformIOのようなエスケープメカニズムを持つこともできます。
- これらのプロパティを表現できる型システムがない言語で書かれたプログラムのいくつかのプロパティを証明するために使用できる証明アシスタントがあります。
- Curry–Howardの対応は、特定の型の関数の型チェックが正常に実装されていることが、その型で表現されているものの証明であることを示しています。
母国語の型システムで外国語コードのいくつかのプロパティの自明でない証明を表現できますか?
たとえば、すでに等しい要素の順序を維持しながら数値を非常に賢く効率的な方法でソートするstable_qsortと呼ばれるC関数と、FFIを介してstable_qsortを呼び出すIdrisプログラムがあるとしますが、これは比較的あいまいですC関数。別の証明アシスタントを使用する代わりに、関数がすべての入力に対して、イドリスコードで等しい要素を並べ替えないことを証明できますか?