On Thursday, 23 October 2014 at 09:41:04 UTC, thedeemon wrote:
Yes, dependent types allow expressing properties like the ones you describe. However a) it's not easy at all even for simple data structures, often requiring defining many additional types and lemmas,

Which is why I only suggest language-builtin-propositions on the library level.

b) checking them requires turning your compiler into a proof-checker,

I don't propose checking, as in an assert(). I propose to assume() them and then run regular dataflow over the assumptions that have been vetted by the library author.

Pretty close to what Walter wanted in the "assert as assume" thread, but safer.

c) what works in "clean room" (like high-level total functional language) is hardly feasible in a "dirty" language like D where you can go as unsafe as you want.

That is true, which is why you have to do this at the high level, and assume the worst.

To scare you well, here, for example, is my Smoothsort implementation in ATS
http://stuff.thedeemon.com/lj/smooth_dats.html

Thanks! I'll look at it later, but note that I am not proposing something like coq, ats or agda. No theorem prover.

What I am proposing is that libraries can provide assumed facts about the result, then propagate those facts in the dataflow until they have all become invalid.

properties. Writing it took me a few weeks. You don't want to turn D into this mess. ;)

No, I want to turn it into a more pragmatic mess. ;-)

Reply via email to