|
|
|
|
|
by thesz
1688 days ago
|
|
The article mentions the inability to decide equality of functions. A paper [1] about proving properties of functional programs shows how to do that modulo halting theorem. E.g., if (\x -> f x == g x) halts we can decide whether f and g are equal. [1] http://xenon.kiam.ru/~roman/doc/2009-Klyuchnikov_Romanenko--... Basically, if supercompilation of the expression above results in a huge nested case that has either True as a result (termination) or an application of function (not terminated due to infinite data structures, for example), then functions are equivalent. Otherwise, if there is at least one False, they are not, the path to False provides a counterexample. |
|
[1]: https://github.com/ilya-klyuchnikov/mrsc
[2]: https://github.com/ilya-klyuchnikov/ttlite