One of the goals of the Programatica Project is to develop tool support for high-assurance programming in Haskell [21]. We have extended Haskell with syntax for property assertions, and envision the use of various techniques to provide evidence for the validity of assertions. We expect our tools to assist the programmer with evidence management, using certificates to record evidence, and to provide whatever translation of Haskell code needed to enable the use of theorem provers and other tools that can serve as sources of evidence. The Programatica Tools, while still work in progress, can manipulate Haskell programs in various ways and have some support for evidence management. In Section 2, we describe a selection of the functionality provided by the tools, starting with functionality that might be of interest to Haskell programmers in general, and ending with functionality more directly aimed at supporting the goals of the Programatica Project. Section 3 contains some notes on the implementation.
[1]
Andreas Abel.
foetus - Termination Checker for Simple Functional Programs
,
2002
.
[2]
Mark P. Jones,et al.
Typing Haskell in Haskell
,
1999
.
[3]
Mark P. Jones,et al.
Type Classes with Functional Dependencies
,
2000,
ESOP.
[4]
Simon J. Thompson.
Refactoring Functional Programs
,
2004,
Advanced Functional Programming.
[5]
Tim Sheard.
Generic unification via two-level types and parameterized modules
,
2001,
ICFP '01.
[6]
Mark P. Jones,et al.
A formal specification of the Haskell 98 module system
,
2002,
Haskell '02.
[7]
Koen Claessen,et al.
QuickCheck: a lightweight tool for random testing of Haskell programs
,
2000,
ICFP.
[8]
T. A. Team.
Programatica Tools for Certifiable , Auditable Development of High-assurance Systems in Haskell
,
2003
.
[9]
Ana Bove,et al.
General Recursion in Type Theory
,
2002,
TYPES.