I know that the definition of Standard ML has been mechanized in Twelf, but are there tools which allow me to verify my Standard ML code satisfies certain properties or specifications?
I'm vaguely aware Don Syme had done some proof-of-concept work on this in the '90s, e.g., with:
- Syme, Donald. "Reasoning with the formal definition of Standard ML in HOL." In HOL Users' Group Workshop, pp. 43-60. Springer, Berlin, Heidelberg, 1993.
But is there some HOL or Coq (or whatever) library which lets me prove results about my code using the language definition? Like, something I can tangibly get ahold of and use right now (rather than some paper reporting some proof-of-concept trial balloons). I'll even settle for working with a "purely functional" fragment of SML.
I'm also aware of Harper's book Software Foundations which seems more general than what I'd like.
I am aware of CakeML, but it looks intractable unless you are a developer working on it. And, as I understand it, CakeML is developing its own "ML dialect" rather than adhering to Standard ML (correct me if I am wrong).