Results 1 
9 of
9
The Expressive Power of Higherorder Types or, Life without CONS
, 2001
"... Compare firstorder functional programs with higherorder programs allowing functions as function parameters. Can the the first program class solve fewer problems than the second? The answer is no: both classes are Turing complete, meaning that they can compute all partial recursive functions. In pa ..."
Abstract

Cited by 30 (1 self)
 Add to MetaCart
Compare firstorder functional programs with higherorder programs allowing functions as function parameters. Can the the first program class solve fewer problems than the second? The answer is no: both classes are Turing complete, meaning that they can compute all partial recursive functions. In particular, higherorder values may be firstorder simulated by use of the list constructor ‘cons’ to build function closures. This paper uses complexity theory to prove some expressivity results about small programming languages that are less than Turing complete. Complexity classes of decision problems are used to characterize the expressive power of functional programming language features. An example: secondorder programs are more powerful than firstorder, since a function f of type &lsqb;Bool&rsqb;〉Bool is computable by a consfree firstorder functional program if and only if f is in PTIME, whereas f is computable by a consfree secondorder program if and only if f is in EXPTIME. Exact characterizations are given for those problems of type &lsqb;Bool&rsqb;〉Bool solvable by programs with several combinations of operations on data: presence or absence of constructors; the order of data values: 0, 1, or higher; and program control structures: general recursion, tail recursion, primitive recursion.
What Can we Gain by Integrating a Language Processor with a Theorem Prover?
, 2003
"... this paper is to investigate the impact on the design of a programming language of tight integration of a language processor with a theorem prover (intelligent proof assistant). What improvements in syntax, semantics, and computation do we gain by this? We assume as selfevident the obvious gain wh ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
(Show Context)
this paper is to investigate the impact on the design of a programming language of tight integration of a language processor with a theorem prover (intelligent proof assistant). What improvements in syntax, semantics, and computation do we gain by this? We assume as selfevident the obvious gain which is quite substantial. The language obtains a sound semantics by its interpretation into a formal logical theory. By proving theorems about our programs we can prove them correct. From the many language systems with theorem provers we mention just two: PVS and Isabelle/HOL [6, 5]. Both of them are more general theorem provers than programming languages. On the other hand, our system CL (Clausal Language) , has been designed as a programming language from the start. It is not a language which can be used for industrial applications (yet, we hope), but neither is it a toy language. It has been used in our undergraduate teaching for seven years now. About four hundred students yearly actively use it in the four courses based on CL [2]. While, the formal basis for PVS and Isabelle is high order logic with typed functionals, CL is based on the simplest nontrivial formal theory: Peano Arithmetic (PA)
Theorems of Péter and Parsons in Computer Programming
 Proceedings of CSL'98, number 1584 in LNCS
, 1999
"... This paper describes principles behind a declarative programming language CL (Clausal Language) which comes with its own proof system for proving properties of defined functions and predicates. We use our own implementation of CL in three courses in the first and second years of undergraduate study. ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
This paper describes principles behind a declarative programming language CL (Clausal Language) which comes with its own proof system for proving properties of defined functions and predicates. We use our own implementation of CL in three courses in the first and second years of undergraduate study. By unifying the domain of LISP's Sexpressions with the domain N of natural numbers we have combined the LISPlike simplicity of coding with the simplicity of semantics. We deal just with functions over N within the framework of formal Peano arithmetic. We believe that most of the time this is as much as is needed. CL is thus an extremely simple language which is completely based in mathematics.
Programming by Logic and Logic by Programming (Extended Abstract)
 In Proceedings of SOFSEM'94 (Milovy, Czech Republic
, 1994
"... ) Paul J. Voda, J'an Komara Institute of Informatics, Comenius University Bratislava, Mlynsk'a dolina, 842 43 Bratislava, Slovakia. Email: voda@fmph.uniba.sk, komara@fmph.uniba.sk Abstract: This paper is an extended abstract of parts I and II of a monograph with the same title being p ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
) Paul J. Voda, J'an Komara Institute of Informatics, Comenius University Bratislava, Mlynsk'a dolina, 842 43 Bratislava, Slovakia. Email: voda@fmph.uniba.sk, komara@fmph.uniba.sk Abstract: This paper is an extended abstract of parts I and II of a monograph with the same title being prepared by the authors. Logic was developed before the arrival of computers and it can be presented without reference to them. The main idea of the monograph is to stress the mutual links between logic and computer programming by taking those parts of logic which deal with computability and finitary logic (proof theory) and presenting them by employing the techniques of computer programming. The techniques involve the use of a good programming language with good data structures and proving the properties of functions written in this language. Keywords: computability, logic, computer programming 1 Introduction Nobody disputes the importance of mathematical logic to computer science but the influence...
Extraction of Efficient Programs in ...Arithmetic
"... C lausal Language (CL) is a declarative programming and verifying system used in our teaching of computer science. CL is an implementation of, what we call, PR+I1 paradigm (primitive recursive functions with I1arithmetic). This paper introduces an extension of I1proofs called extraction proofs ..."
Abstract
 Add to MetaCart
C lausal Language (CL) is a declarative programming and verifying system used in our teaching of computer science. CL is an implementation of, what we call, PR+I1 paradigm (primitive recursive functions with I1arithmetic). This paper introduces an extension of I1proofs called extraction proofs where one can extract from the proofs of 2speci cations primitive recursive programs as ecient as the handcoded ones. This is achieved by having the programming constructs correspond exactly to the proof rules with the computational content.
Towards Provably Correct Programming
"... . C lausal Language (CL) is a really used declarative programming and verifying system with an extremely simple semantics (primitive recursive functions). We can in CL prove properties of our programs. This paper is mostly concerned with the combination of programming and verication where one do ..."
Abstract
 Add to MetaCart
. C lausal Language (CL) is a really used declarative programming and verifying system with an extremely simple semantics (primitive recursive functions). We can in CL prove properties of our programs. This paper is mostly concerned with the combination of programming and verication where one does the former at the same time as one veri es that a specication is satised. Our contribution is the design of CL and of its proof system where the programming constructs correspond exactly to the proof rules with computational content and so the programs extracted by CL from proofs are as ecient as handprogrammed ones. 1 Introduction The class of eectively computable functions over natural numbers coincides by the thesis of Church with recursive functions as dened by HerbrandGodel style equations. We use the latter as the basis for CL because such denitions oer the programming comfort with almost unrestricted kinds of recursion and the computation of recursive equations b...
An Exercise in Programming in PA: Fast Growing Hierarchy Functions
"... this paper is to illustrate that the techniques of computer programming can be used in mathematical logic. We apply the wellknown list processing techniques to the task of introducing into PA (i.e. programming) the functions F of the Fast Growing Hierarchy (see [LW70,Wa70,Wa72,Ro84]). Although comp ..."
Abstract
 Add to MetaCart
(Show Context)
this paper is to illustrate that the techniques of computer programming can be used in mathematical logic. We apply the wellknown list processing techniques to the task of introducing into PA (i.e. programming) the functions F of the Fast Growing Hierarchy (see [LW70,Wa70,Wa72,Ro84]). Although computationally unfeasible (already F! grows as Ackermann), the functions are important because all 0 ordinal recursive functions, which are the provably recursive functions of PA, can be de ned from them by propositional connectives and bounded quanti cation, i.e. by 0 (fF j 0 g) formulas
Recursion and Coding in PA by Techniques of Computer Programming
, 2001
"... The recursive development of Peano Arithmetic... In this paper we reverse the situation. We first show how to introduce into PA in a surprisingly simple way the primitive recursive functions by showing PA closed under course of values recursion. Essentially no coding is needed for this. We do this b ..."
Abstract
 Add to MetaCart
(Show Context)
The recursive development of Peano Arithmetic... In this paper we reverse the situation. We first show how to introduce into PA in a surprisingly simple way the primitive recursive functions by showing PA closed under course of values recursion. Essentially no coding is needed for this. We do this by a simplified use of markers invented by [Nel86] (see also [HP93]). We use the markers also in Sect. 3 to introduce the graph of exponentiation 2^x = y as a &Sigma;_0predicate. This was discovered by Bennett [Ben62]. Ours is probably the simplest known definition which we did independently (see [Vo98]) of a quite similar (but slightly more complicated) one by Immerman [Imm98] who was inspired by Lindell [Lind9?]. Immerman did not work in PA but in a slightly different context of finite models (which is a branch of complexity theory). We use primitive...