Results 1  10
of
36
Automating the Meta Theory of Deductive Systems
, 2000
"... not be interpreted as representing the o cial policies, either expressed or implied, of NSF or the U.S. Government. This thesis describes the design of a metalogical framework that supports the representation and veri cation of deductive systems, its implementation as an automated theorem prover, a ..."
Abstract

Cited by 84 (16 self)
 Add to MetaCart
not be interpreted as representing the o cial policies, either expressed or implied, of NSF or the U.S. Government. This thesis describes the design of a metalogical framework that supports the representation and veri cation of deductive systems, its implementation as an automated theorem prover, and experimental results related to the areas of programming languages, type theory, and logics. Design: The metalogical framework extends the logical framework LF [HHP93] by a metalogic M + 2. This design is novel and unique since it allows higherorder encodings of deductive systems and induction principles to coexist. On the one hand, higherorder representation techniques lead to concise and direct encodings of programming languages and logic calculi. Inductive de nitions on the other hand allow the formalization of properties about deductive systems, such as the proof that an operational semantics preserves types or the proof that a logic is is a proof calculus whose proof terms are recursive functions that may be consistent.M +
Modelling General Recursion in Type Theory
 Mathematical Structures in Computer Science
, 2002
"... Constructive type theory is an expressive programming language where both algorithms and proofs can be represented. However, general recursive algorithms have no direct formalisation in type theory since they contain recursive calls that satisfy no syntactic condition guaranteeing termination. ..."
Abstract

Cited by 41 (6 self)
 Add to MetaCart
Constructive type theory is an expressive programming language where both algorithms and proofs can be represented. However, general recursive algorithms have no direct formalisation in type theory since they contain recursive calls that satisfy no syntactic condition guaranteeing termination.
Nested General Recursion and Partiality in Type Theory
 Theorem Proving in Higher Order Logics: 14th International Conference, TPHOLs 2001, volume 2152 of Lecture Notes in Computer Science
, 2000
"... We extend Bove's technique for formalising simple general recursive algorithms in constructive type theory to nested recursive algorithms. The method consists in defining an inductive specialpurpose accessibility predicate, that characterises the inputs on which the algorithm terminates. As a ..."
Abstract

Cited by 27 (10 self)
 Add to MetaCart
We extend Bove's technique for formalising simple general recursive algorithms in constructive type theory to nested recursive algorithms. The method consists in defining an inductive specialpurpose accessibility predicate, that characterises the inputs on which the algorithm terminates. As a result, the typetheoretic version of the algorithm can be defined by structural recursion on the proof that the input values satisfy this predicate. This technique results in definitions in which the computational and logical parts are clearly separated; hence, the typetheoretic version of the algorithm is given by its purely functional content, similarly to the corresponding program in a functional programming language. In the case of nested recursion, the special predicate and the typetheoretic algorithm must be defined simultaneously, because they depend on each other. This kind of definitions is not allowed in ordinary type theory, but it is provided in type theories extended wit...
Connectionbased Theorem Proving in Classical and Nonclassical Logics
 Journal of Universal Computer Science
, 1999
"... Abstract: We present a uniform procedure for proof search in classical logic, intuitionistic logic, various modal logics, and fragments of linear logic. It is based on matrix characterizations of validity in these logics and extends Bibel’s connection method, originally developed for classical logic ..."
Abstract

Cited by 23 (15 self)
 Add to MetaCart
(Show Context)
Abstract: We present a uniform procedure for proof search in classical logic, intuitionistic logic, various modal logics, and fragments of linear logic. It is based on matrix characterizations of validity in these logics and extends Bibel’s connection method, originally developed for classical logic, accordingly. Besides combining a variety of different logics it can also be used to guide the development of proofs in interactive proof assistants and shows how to integrate automated and interactive theorem proving. 1
Building Reliable, HighPerformance Networks with the Nuprl Proof Development System
 UNDER CONSIDERATION FOR PUBLICATION IN J. FUNCTIONAL PROGRAMMING
"... Proof systems for expressive type theories provide a foundation for the verification and synthesis of programs. But despite their successful application to numerous programming problems there remains an issue with scalability. Are proof environments capable of reasoning about large software systems? ..."
Abstract

Cited by 17 (4 self)
 Add to MetaCart
Proof systems for expressive type theories provide a foundation for the verification and synthesis of programs. But despite their successful application to numerous programming problems there remains an issue with scalability. Are proof environments capable of reasoning about large software systems? Can the support they offer be useful in practice? In this article we answer this question by showing how the Nuprl proof development system and its rich type theory have contributed to the design of reliable, highperformance networks by synthesizing optimized code for application configurations of the Ensemble group communication toolkit. We present a typetheoretical semantics of OCaml, the implementation language of Ensemble, and tools for automatically importing system code into the Nuprl system. We describe reasoning strategies for generating verifiably correct fastpath optimizations of application configurations that substantially reduce endtoend latency in Ensemble. We also discuss briefly how to use Nuprl for checking configurations against specifications and for the design of reliable adaptive network protocols.
A coherence theorem for MartinLöf's type theory
 J. Functional Programming
, 1998
"... In type theory a proposition is represented by a type, the type of its proofs. As a consequence the equality relation on a certain type is represented by a binary family of types. Equality on a type may be conventional or inductive. Conventional equality means that one particular equivalence rel ..."
Abstract

Cited by 13 (0 self)
 Add to MetaCart
(Show Context)
In type theory a proposition is represented by a type, the type of its proofs. As a consequence the equality relation on a certain type is represented by a binary family of types. Equality on a type may be conventional or inductive. Conventional equality means that one particular equivalence relation is singled out as the equality, while inductive equality, which we also call identity, is inductively defined as the "smallest reflexive relation". It is sometimes convenient to know that the type representing a proposition is collapsed in the sense that all its inhabitants are identical. Although uniqueness of identity proofs for an arbitrary type is not derivable inside type theory, there is a large class of types for which it may be proved. Our main result is a proof that any type with decidable identity has unique identity proofs. This result is convenient for proving that the class of types with decidable identities is closed under indexed sum. Our proof of the main result...
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.
Simple General Recursion in Type Theory
 Nordic Journal of Computing
, 2000
"... General recursive algorithms are such that the recursive calls are performed on arguments satisfying no condition that guarantees termination. Hence, there is no direct way of formalising them in type theory. The standard way of handling general recursion in type theory uses a wellfounded recursion ..."
Abstract

Cited by 10 (2 self)
 Add to MetaCart
General recursive algorithms are such that the recursive calls are performed on arguments satisfying no condition that guarantees termination. Hence, there is no direct way of formalising them in type theory. The standard way of handling general recursion in type theory uses a wellfounded recursion principle. Unfortunately, this way of formalising general recursive algorithms often produces unnecessarily long and complicated codes. On the other hand, functional programming languages like Haskell impose no restrictions on recursive programs, and then writing general recursive algorithms is straightforward. In addition, functional programs are usually short and selfexplanatory. However, the existing frameworks for reasoning about the correctness of Haskelllike programs are weaker than the framework provided by type theory. The goal of this work is to present a method that combines the advantages of both programming styles when writing simple general recursive algorithms....
ProofTerm Synthesis on Dependenttype Systems via Explicit Substitutions
, 1999
"... Typed #terms are used as a compact and linear representation of proofs in intuitionistic logic. This is possible since the CurryHoward isomorphism relates proof trees with typed #terms. The proofsasterms principle can be used to check a proof by type checking the #term extracted from the compl ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
Typed #terms are used as a compact and linear representation of proofs in intuitionistic logic. This is possible since the CurryHoward isomorphism relates proof trees with typed #terms. The proofsasterms principle can be used to check a proof by type checking the #term extracted from the complete proof tree. However, proof trees and typed #terms are built differently. Usually, an auxiliary representation of unfinished proofs is needed, where type checking is possible only on complete proofs. In this paper we present a proof synthesis method for dependenttype systems where typed open terms are built incrementally at the same time as proofs are done. This way, every construction step, not just the last one, may be type checked. The method is based on a suitable calculus where substitutions as well as metavariables are firstclass objects.
Integrated Verification in Type Theory (Lecture Notes)
, 1996
"... Contents 1 Introduction 2 2 Type Theory as a Programming Language 3 2.1 Hello World in Type Theory . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Hiding and argument synthesis . . . . . . . . . . . . . . . . . . . . . 4 2.3 Using dependent types in programming . . . . . . . . . . . . . . . . 4 ..."
Abstract

Cited by 7 (0 self)
 Add to MetaCart
Contents 1 Introduction 2 2 Type Theory as a Programming Language 3 2.1 Hello World in Type Theory . . . . . . . . . . . . . . . . . . . . . . 3 2.2 Hiding and argument synthesis . . . . . . . . . . . . . . . . . . . . . 4 2.3 Using dependent types in programming . . . . . . . . . . . . . . . . 4 2.4 Higherorder sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3 Logic for free 8 3.1 Propositional logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 3.2 Predicate logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Equality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3.4 Induction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.5 Inductively defined relations . . . . . . . . . . . . . . . . . . . . . . . 13 4 ALF's Type Theory 14 4.1 Judgements of Type Theory . . . . . . . . . . . . . . . . . . . . . . . 14 4.2 Conventions