Results 1 -
5 of
5
An ML Editor Based on Proofs-as-Programs
, 1999
"... . C Y NTHIA is a novel editor for the functional programming language ML in which each function definition is represented as the proof of a simple specification. Users of C Y NTHIA edit programs by applying sequences of high-level editing commands to existing programs. These commands make ch ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
. C Y NTHIA is a novel editor for the functional programming language ML in which each function definition is represented as the proof of a simple specification. Users of C Y NTHIA edit programs by applying sequences of high-level editing commands to existing programs. These commands make changes to the proof representation from which a new program is then extracted. The use of proofs is a sound framework for analysing ML programs and giving useful feedback about errors. Amongst the properties analysed within C Y NTHIA at present is termination. C Y NTHIA has been successfully used in the teaching of ML in two courses at Napier University. 1 Introduction Current programming environments for novice functional programming (FP) are inadequate. This paper describes ways of using mechanised theorem proving to improve the situation, in the context of the language ML [9]. ML is a stronglytyped FP language with type inference [4]. ML incorporates extensive use of pattern match...
Extensions to the estimation calculus
- Proceedings of the 6th International Conference on Logic for Programming and Automated Reasoning (LPAR`99), LNAI 1705
, 1999
"... Walther’s estimation calculus was designed to prove the termination of functional programs, and can also be used to solve the similar problem of proving the well-foundedness of induction rules. However, there are certain features of the goal formulae which are more common to the problem of induction ..."
Abstract
-
Cited by 6 (1 self)
- Add to MetaCart
Walther’s estimation calculus was designed to prove the termination of functional programs, and can also be used to solve the similar problem of proving the well-foundedness of induction rules. However, there are certain features of the goal formulae which are more common to the problem of induction rule well-foundedness than the problem of termination, and which the calculus cannot handle. We present a sound extension of the calculus that is capable of dealing with these features. The extension develops Walther’s concept of an argument bounded function in two ways: firstly, so that the function may be bounded below by its argument, and secondly, so that a bound may exist between two arguments of a predicate. Our calculus enables automatic proofs of the well-foundedness of a large class of induction rules not captured by the original calculus.
Specification and Verification of a Formal System for Structurally Recursive Functions
- Types for Proof and Programs, International Workshop, TYPES ’99, volume 1956 of Lecture Notes in Computer Science
, 2000
"... A type theoretic programming language is introduced that is based on lambda calculus with coproducts, products and inductive types, and additionally allows the definition of recursive functions in the way that is common in most functional programming languages. A formal system is presented that chec ..."
Abstract
-
Cited by 6 (5 self)
- Add to MetaCart
A type theoretic programming language is introduced that is based on lambda calculus with coproducts, products and inductive types, and additionally allows the definition of recursive functions in the way that is common in most functional programming languages. A formal system is presented that checks whether such a definition is structurally recursive and a soundness theorem is shown for this system. Thus all functions passing this check are ensured to terminate on all inputs. For the moment only non-mutual recursive functions are considered. 1
Evaluating Environments for Functional Programming
- International Journal of Human-Computer Studies
, 2000
"... Functional programming presents new challenges in the design of programming environments. In a strongly typed functional language, such as ML, much conventional debugging of runtime errors is replaced by dealing with compile time error reports. On the other hand, the cleanness of functional progr ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
Functional programming presents new challenges in the design of programming environments. In a strongly typed functional language, such as ML, much conventional debugging of runtime errors is replaced by dealing with compile time error reports. On the other hand, the cleanness of functional programming opens up new possibilities for incorporating sophisticated correctness-checking techniques into such environments. C Y NTHIA is a novel editor for ML that both addresses the challenges and explores the possibilities. It uses an underlying proof system as a framework for automatically checking for semantic errors such as non-termination. In addition, C Y NTHIA embodies the idea of programming by analogy --- whereby users write programs by applying abstract transformations to existing programs. This paper investigates C Y NTHIA's potential as a novice ML programming environment. We report on two studies in which it was found that students using C Y NTHIA commit fewer er...
System Description CyNTHIA
"... This paper describes ways of using proofs as a foundation to improve the situation, in the context of the language ML [4]. The most common way to write ML programs is via a text editor and compiler (such as the Standard ML of New Jersey compiler). But program errors, in particular type errors, are g ..."
Abstract
- Add to MetaCart
This paper describes ways of using proofs as a foundation to improve the situation, in the context of the language ML [4]. The most common way to write ML programs is via a text editor and compiler (such as the Standard ML of New Jersey compiler). But program errors, in particular type errors, are generally difficult to track down. For novices, the lack of debugging support forms a barrier to learning FP concepts [5].

