Results 1 
8 of
8
Dependent Types Ensure Partial Correctness of Theorem Provers
, 2002
"... Static type systems in programming languages allow many errors to be detected at compile time that wouldn't be detected until runtime otherwise. Dependent types are more expressive than the type systems in most programming languages, so languages that have them should allow programmers to detec ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
Static type systems in programming languages allow many errors to be detected at compile time that wouldn't be detected until runtime otherwise. Dependent types are more expressive than the type systems in most programming languages, so languages that have them should allow programmers to detect more errors earlier. In this paper, using the Twelf system, we show that dependent types in the logic programming setting can be used to ensure partial correctness of programs which implement theorem provers, and thus avoid runtime errors in proof search and proof construction. We present two examples: a tacticstyle interactive theorem prover and a unionfind decision procedure.
A Tutorial on Proof Theoretic Foundations of Logic Programming
, 2003
"... Abstract logic programming is about designing logic programming languages via the proof theoretic notion of uniform provability. It allows the design of purely logical, very expressive logic programming languages, endowed with a rich meta theory. ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract logic programming is about designing logic programming languages via the proof theoretic notion of uniform provability. It allows the design of purely logical, very expressive logic programming languages, endowed with a rich meta theory.
Contents Preface 6
, 2006
"... 1.1 Supported Platforms and System Requirements................... 8 ..."
(Show Context)
Refinement of HigherOrder Logic Programs
"... Abstract. A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. In this paper we extend the refinement calculus for logic programs to include higherorder programming capabilities in spe ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. A refinement calculus provides a method for transforming specifications to executable code, maintaining the correctness of the code with respect to its specification. In this paper we extend the refinement calculus for logic programs to include higherorder programming capabilities in specifications and programs, such as procedures as terms and lambda abstraction. We use a higherorder type and term system to describe programs, and provide a semantics for the higherorder language and refinement. The calculus is illustrated by refinement examples. 1