Functional declarative language design and predicate calculus
Author:
Open Access
- 1 September 2005
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 27 (5) , 988-1047
Abstract
In programming language and software engineering, the main mathematical tool isde factosome form of predicate logic. Yet, as elsewhere in applied mathematics, it is used mostly far below its potential, due to its traditional formulation as just a topic in logic instead of a calculus for everyday practical use.The proposed alternative combines a language of utmost simplicity (four constructs only) that is devoid of the defects of common mathematical conventions, with a set of convenient calculation rules that is sufficiently comprehensive to make it practical for everyday use in most (if not all) domains of interest.Its main elements are a functional predicate calculus and concrete generic functionals. The first supports formal calculation with quantifiers with the same fluency as with derivatives and integrals in classical applied mathematics and engineering. The second achieves the same for calculating with functionals, including smooth transition between pointwise and point-free expression.The extensive collection of examples pertains mainly to software specification, language semantics and its mathematical basis, program calculation etc., but occasionally shows wider applicability throughout applied mathematics and engineering. Often it illustrates how formal reasoning guided by the shape of the expressions is an instrument for discovery and expanding intuition, or highlights design opportunities in declarative and (functional) programming languages.Keywords
This publication has 30 references indexed in Scilit:
- On the desirability of mechanizing calculational proofsInformation Processing Letters, 2001
- Supertotal function definition in mathematics and software engineeringIEEE Transactions on Software Engineering, 2000
- A small OpenMath type systemACM SIGSAM Bulletin, 2000
- Adapting Calculational Logic to the UndefinedThe Computer Journal, 1999
- Subtypes for specifications: predicate subtyping in PVSIEEE Transactions on Software Engineering, 1998
- Boolean formalism and explanations1996
- Counting solutions to Presburger formulasACM SIGPLAN Notices, 1994
- Predicate logic for software engineeringIEEE Transactions on Software Engineering, 1993
- The Euclidean definition of the functions div and modACM Transactions on Programming Languages and Systems, 1992
- A heretical view on type embeddingACM SIGPLAN Notices, 1990