Ynot: Depent Types for Imperative Programs
- Aleksandar Nanevski,
- Greg Morrisett,
- Avi Shinnar,
- Paul Govereau,
- Lars Birkedal
- Microsoft Research,
- Harvard University
Research Output:
Conference Article in Proceeding or Book/Report chapter
Article in proceedings
Peer-reviewPublication Information
Output type
Research Output:
Conference Article in Proceeding or Book/Report chapter
Article in proceedings
Peer-reviewHost publication Subtitle
Proceeding of the 13th ACM SIGPLAN International Conference on Functional Programming,Original language
EnglishPages from-to (Number of pages)
Pages 229-240Publication milestones
- Published - 2008
Publication status
Published - 2008
Volume
session 9Publisher
Association for Computing Machinery, United StatesISBN (Print)
978-1-59593-919-7Host publication title
International Conference on Functional ProgrammingAbstract
We describe an axiomatic extension to the Coq proof assistant, that supports writing, reasoning about, and extracting higher-order, dependently-typed programs with side-effects. Coq already includes a powerful functional language that supports dependent types, but that language is limited to pure, total functions. The key contribution of our extension, which we call Ynot, is the added support for computations that may have effects such as non-termination, accessing a mutable store, and throwing/catching exceptions.
The axioms of Ynot form a small trusted computing base which has been formally justified in our previous work on Hoare Type Theory (HTT). We show how these axioms can be combined with the powerful type and abstraction mechanisms of Coq to build higher-level reasoning mechanisms which in turn can be used to build realistic, verified software components. To substantiate this claim, we describe here a representative series of modules that
implement imperative finite maps, including support for a higherorder (effectful) iterator. The implementations range from simple (e.g., association lists) to complex (e.g., hash tables) but share a common interface which abstracts the implementation details and ensures that the modules properly implement the finite map abstraction.
The axioms of Ynot form a small trusted computing base which has been formally justified in our previous work on Hoare Type Theory (HTT). We show how these axioms can be combined with the powerful type and abstraction mechanisms of Coq to build higher-level reasoning mechanisms which in turn can be used to build realistic, verified software components. To substantiate this claim, we describe here a representative series of modules that
implement imperative finite maps, including support for a higherorder (effectful) iterator. The implementations range from simple (e.g., association lists) to complex (e.g., hash tables) but share a common interface which abstracts the implementation details and ensures that the modules properly implement the finite map abstraction.
Related Event
Title
ICFP 2008 : The 13th ACM SIGPLAN International Conference on Functional Programming
Event type
ConferenceDate
22/09/2008 - 24/09/2008Location
Victoria, British ColumbiaCanada
