鉴于:
- 具有非常有表现力的类型系统的语言(例如Idris)也可以具有转义机制,例如外部函数接口/ unsafePerformIO。
- 有一些证明助手可以用来证明用某种语言编写的程序的某些特性,而该语言没有能够表达这些特性的类型系统。
- Curry-Howard的对应关系表明,具有给定类型的函数的类型检查成功实现是该类型所表示内容的证明。
可以在母语的类型系统中表达外语代码某些属性的非平凡的证明吗?
例如,假设我有一个名为stable_qsort的C函数,该函数以非常巧妙和高效的方式对数字进行排序,同时保持已经相等的元素的顺序,还有一个Idris程序通过其FFI调用stable_qsort,但是我不相信这种相对晦涩的方法C函数。我可以证明该函数不会在我的Idris代码中对所有输入重新排序相等的元素,而不是使用单独的证明助手吗?