Camila revival: VDM meets haskell

We have experimented with modeling some of the key concepts of the VDM specification language inside the functional programming language Haskell. For instance, VDM’s sets and maps are directly available as data types defined in standard libraries; we merely needed to define some additional functions to make the match complete. A bigger challenge is posed by VDM’s data type invariants, and preand postconditions. For these we resorted to Haskell’s constructor class mechanism, and its support for monads. This allows us to switch between different modes of evaluation (e.g. with or without property checking) by simply coercing user defined functions and operations to different specific types.

[1]  José Nuno Oliveira,et al.  A reification calculus for model-oriented software specification , 1990, Formal Aspects of Computing.

[2]  José Nuno Oliveira,et al.  CAMILA: formal software engineering supported by functional programming , 1997 .

[3]  Simon L. Peyton Jones,et al.  Object-Oriented Style Overloading for Haskell , 2001, BABEL.

[4]  Simon L. Peyton Jones,et al.  State in Haskell , 1995, LISP Symb. Comput..

[5]  José Nuno Oliveira,et al.  CAMILA: Prototyping and Refinement of Constructive Specifications , 1997, AMAST.

[6]  Philip Wadler,et al.  The marriage of effects and monads , 1998, ICFP '98.

[7]  N. Meyers,et al.  H = W. , 1964, Proceedings of the National Academy of Sciences of the United States of America.

[8]  Simon Peyton Jones,et al.  Engineering parallel symbolic programs in GPH , 1999 .

[9]  Philip Wadler Monads for Functional Programming , 1995, Advanced Functional Programming.

[10]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[11]  Henrique Madeira,et al.  Xception: Software Fault Injection and Monitoring in Processor Functional Units1 , 1995 .

[12]  José Nuno Oliveira,et al.  Software Reification using the SETS Calculus , 1992, Refine.

[13]  Peter Gorm Larsen,et al.  The IFAD VDM-SL toolbox: a practical approach to formal specifications , 1994, SIGP.

[14]  Simon Peyton Jones,et al.  Tackling the Awkward Squad: monadic input/output, concurrency, exceptions, and foreign-language calls in Haskell , 2005 .

[15]  Joost Visser,et al.  Development of an Industrial Strength Grammar for VDM , 2005 .

[16]  José Nuno Oliveira,et al.  Bringing CAMILA and SETS Together - the bams.cam and ppd.cam CAMILA Toolset Demos , 1997 .

[17]  Sun Meng,et al.  On Refinement of Generic State-Based Software Components , 2004, AMAST.

[18]  José Nuno Oliveira,et al.  Converting Informal Meta-data to VDM-SL: A Reverse Calculation Approach , 1999 .

[19]  Paul Mukherjee Automatic Translation of VDM-SL Specifications into Gofer , 1997, FME.

[20]  Peter Gorm Larsen,et al.  Modelling Systems: Practical Tools and Techniques in Software Development , 1998 .

[21]  Ralf Lämmel,et al.  Haskell's overlooked object system , 2005, ArXiv.

[22]  Peter Gorm Larsen,et al.  Validated Designs for Object-oriented Systems , 2004 .

[23]  Silvio Romero de Lemos Meira,et al.  From VDM specifications to functional prototypes , 1993, J. Syst. Softw..

[24]  Luís Soares Barbosa,et al.  A Relational Model for Component Interconnection , 2004, J. Univers. Comput. Sci..

[25]  José Nuno Oliveira,et al.  From Algebras to Objects: Generation and Composition , 2005, J. Univers. Comput. Sci..

[26]  José Nuno Oliveira,et al.  Strategic Term Rewriting and Its Application to a VDMSL to SQL Conversion , 2005, FM.