Guilt free ivory

Ivory is a language that enforces memory safety and avoids most undefined behaviors while providing low-level control of memory- manipulation. Ivory is embedded in a modern variant of Haskell, as implemented by the GHC compiler. The main contributions of the paper are two-fold. First, we demonstrate how to embed the type-system of a safe-C language into the type extensions of GHC. Second, Ivory is of interest in its own right, as a powerful language for writing high-assurance embedded programs. Beyond invariants enforced by its type-system, Ivory has direct support for model-checking, theorem-proving, and property-based testing. Ivory’s semantics have been formalized and proved to guarantee memory safety.

[1]  Mary Sheeran,et al.  The Design and Implementation of Feldspar - An Embedded Language for Digital Signal Processing , 2010, IFL.

[2]  Hovav Shacham,et al.  Comprehensive Experimental Analyses of Automotive Attack Surfaces , 2011, USENIX Security Symposium.

[3]  Simon L. Peyton Jones,et al.  Type checking with open type functions , 2008, ICFP.

[4]  James Cheney,et al.  Cyclone: A Safe Dialect of C , 2002, USENIX Annual Technical Conference, General Track.

[5]  Mark P. Jones,et al.  High-level views on low-level representations , 2005, ICFP '05.

[6]  Panagiotis Manolios,et al.  Computer-Aided Reasoning: An Approach , 2011 .

[7]  John Launchbury,et al.  Building embedded systems with embedded DSLs , 2014, ICFP 2014.

[8]  Conor McBride,et al.  Hasochism: the pleasure and pain of dependently typed haskell programming , 2013, Haskell '13.

[9]  Simon L. Peyton Jones,et al.  Lazy functional state threads , 1994, PLDI '94.

[10]  Alwyn E. Goodloe,et al.  Copilot: A Hard Real-Time Runtime Monitor , 2010, RV.

[11]  Tom Hawkins,et al.  Controlling Hybrid Vehicles with Haskell , 2008, Proceedings of the 13th ACM SIGPLAN international conference on Functional programming.

[12]  Amr Sabry,et al.  Extensible effects: an alternative to monad transformers , 2013, Haskell '13.

[13]  Geoffrey Mainland Why it's nice to be quoted: quasiquoting for haskell , 2007, Haskell '07.

[14]  John G. P. Barnes,et al.  High Integrity Software - The SPARK Approach to Safety and Security , 2003 .

[15]  Nicholas D. Matsakis,et al.  The rust language , 2014, HILT '14.

[16]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.

[17]  John Launchbury,et al.  Building Embedded Systems with Embedded DSLs ( Experience Report ) , 2014 .

[18]  Panagiotis Manolios,et al.  Practical Formal Verification of Domain-Specific Language Applications , 2015, NFM.

[19]  Jonathan S. Shapiro,et al.  Bitc: a safe systems programming language , 2009 .

[20]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[21]  Ganesh Gopalakrishnan,et al.  Proceedings of the 23rd international conference on Computer aided verification , 2011 .

[22]  Simon L. Peyton Jones,et al.  Giving Haskell a promotion , 2012, TLDI '12.

[23]  Mark P. Jones,et al.  Strongly typed memory areas programming systems-level data structures in a functional language , 2006, Haskell '06.

[24]  Marco Pacino,et al.  A STANAG 4586 Oriented Approach to UAS Navigation , 2013, J. Intell. Robotic Syst..

[25]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[26]  José Pedro Magalhães The right kind of generic programming , 2012, WGP '12.

[27]  Chung-chieh Shan,et al.  Lightweight monadic regions , 2008, Haskell '08.