Results 1  10
of
18
Logic Programming in the LF Logical Framework
, 1991
"... this paper we describe Elf, a metalanguage intended for environments dealing with deductive systems represented in LF. While this paper is intended to include a full description of the Elf core language, we only state, but do not prove here the most important theorems regarding the basic building b ..."
Abstract

Cited by 182 (49 self)
 Add to MetaCart
(Show Context)
this paper we describe Elf, a metalanguage intended for environments dealing with deductive systems represented in LF. While this paper is intended to include a full description of the Elf core language, we only state, but do not prove here the most important theorems regarding the basic building blocks of Elf. These proofs are left to a future paper. A preliminary account of Elf can be found in [26]. The range of applications of Elf includes theorem proving and proof transformation in various logics, definition and execution of structured operational and natural semantics for programming languages, type checking and type inference, etc. The basic idea behind Elf is to unify logic definition (in the style of LF) with logic programming (in the style of Prolog, see [22, 24]). It achieves this unification by giving types an operational interpretation, much the same way that Prolog gives certain formulas (Hornclauses) an operational interpretation. An alternative approach to logic programming in LF has been developed independently by Pym [28]. Here are some of the salient characteristics of our unified approach to logic definition and metaprogramming. First of all, the Elf search process automatically constructs terms that can represent objectlogic proofs, and thus a program need not construct them explicitly. This is in contrast to logic programming languages where executing a logic program corresponds to theorem proving in a metalogic, but a metaproof is never constructed or used and it is solely the programmer's responsibility to construct objectlogic proofs where they are needed. Secondly, the partial correctness of many metaprograms with respect to a given logic can be expressed and proved by Elf itself (see the example in Section 5). This creates the possibilit...
Dependently Typed Functional Programs and their Proofs
, 1999
"... Research in dependent type theories [ML71a] has, in the past, concentrated on its use in the presentation of theorems and theoremproving. This thesis is concerned mainly with the exploitation of the computational aspects of type theory for programming, in a context where the properties of programs ..."
Abstract

Cited by 82 (13 self)
 Add to MetaCart
Research in dependent type theories [ML71a] has, in the past, concentrated on its use in the presentation of theorems and theoremproving. This thesis is concerned mainly with the exploitation of the computational aspects of type theory for programming, in a context where the properties of programs may readily be specified and established. In particular, it develops technology for programming with dependent inductive families of datatypes and proving those programs correct. It demonstrates the considerable advantage to be gained by indexing data structures with pertinent characteristic information whose soundness is ensured by typechecking, rather than human effort. Type theory traditionally presents safe and terminating computation on inductive datatypes by means of elimination rules which serve as induction principles and, via their associated reduction behaviour, recursion operators [Dyb91]. In the programming language arena, these appear somewhat cumbersome and give rise to unappealing code, complicated by the inevitable interaction between case analysis on dependent types and equational reasoning on their indices which must appear explicitly in the terms. Thierry Coquand’s proposal [Coq92] to equip type theory directly with the kind of
Unification and AntiUnification in the Calculus of Constructions
 In Sixth Annual IEEE Symposium on Logic in Computer Science
, 1991
"... We present algorithms for unification and antiunification in the Calculus of Constructions, where occurrences of free variables (the variables subject to instantiation) are restricted to higherorder patterns, a notion investigated for the simplytyped calculus by Miller. Most general unifiers and ..."
Abstract

Cited by 70 (16 self)
 Add to MetaCart
(Show Context)
We present algorithms for unification and antiunification in the Calculus of Constructions, where occurrences of free variables (the variables subject to instantiation) are restricted to higherorder patterns, a notion investigated for the simplytyped calculus by Miller. Most general unifiers and least common antiinstances are shown to exist and are unique up to a simple equivalence. The unification algorithm is used for logic program execution and type and term reconstruction in the current implementation of Elf and has shown itself to be practical. The main application of the antiunification algorithm we have in mind is that of proof generalization. 1 Introduction Higherorder logic with an embedded simplytyped  calculus has been used as the basis for a number of theorem provers (for example [1, 19]) and the programming language Prolog [16]. Central to these systems is an implementation of Huet's preunification algorithm for the simplytyped calculus [12] which has shown it...
The Theory of LEGO  A Proof Checker for the Extended Calculus of Constructions
, 1994
"... LEGO is a computer program for interactive typechecking in the Extended Calculus of Constructions and two of its subsystems. LEGO also supports the extension of these three systems with inductive types. These type systems can be viewed as logics, and as meta languages for expressing logics, and LEGO ..."
Abstract

Cited by 69 (10 self)
 Add to MetaCart
LEGO is a computer program for interactive typechecking in the Extended Calculus of Constructions and two of its subsystems. LEGO also supports the extension of these three systems with inductive types. These type systems can be viewed as logics, and as meta languages for expressing logics, and LEGO is intended to be used for interactively constructing proofs in mathematical theories presented in these logics. I have developed LEGO over six years, starting from an implementation of the Calculus of Constructions by G erard Huet. LEGO has been used for problems at the limits of our abilities to do formal mathematics. In this thesis I explain some aspects of the metatheory of LEGO's type systems leading to a machinechecked proof that typechecking is decidable for all three type theories supported by LEGO, and to a verified algorithm for deciding their typing judgements, assuming only that they are normalizing. In order to do this, the theory of Pure Type Systems (PTS) is extended and f...
Implementing the MetaTheory of Deductive Systems
 Proceedings of the 11th International Conference on Automated Deduction
, 1992
"... . We exhibit a methodology for formulating and verifying metatheorems about deductive systems in the Elf language, an implementation of the LF Logical Framework with an operational semantics in the spirit of logic programming. It is based on the mechanical verification of properties of transformatio ..."
Abstract

Cited by 32 (9 self)
 Add to MetaCart
(Show Context)
. We exhibit a methodology for formulating and verifying metatheorems about deductive systems in the Elf language, an implementation of the LF Logical Framework with an operational semantics in the spirit of logic programming. It is based on the mechanical verification of properties of transformations between deductions, which relies on type reconstruction and schemachecking. The latter is justified by induction principles for closed LF objects, which can be constructed over a given signature. We illustrate our technique through several examples, the most extensive of which is an interpretation of classical logic in minimal logic through a continuationpassingstyle transformation on proofs. 1 Introduction Formal deductive systems have become an important tool in computer science. They are used to specify logics, type systems, operational semantics and other aspects of languages. The role of such specifications is threefold. Firstly, inference rules serve as a highlevel notation w...
A Relevant Analysis of Natural Deduction
 Journal of Logic and Computation
, 1999
"... Linear and other relevant logics have been studied widely in mathematical, philosophical and computational logic. We describe a logical framework, RLF, for defining natural deduction presentations of such logics. RLF consists in a language together, in a manner similar to that of Harper, Honsell and ..."
Abstract

Cited by 24 (7 self)
 Add to MetaCart
(Show Context)
Linear and other relevant logics have been studied widely in mathematical, philosophical and computational logic. We describe a logical framework, RLF, for defining natural deduction presentations of such logics. RLF consists in a language together, in a manner similar to that of Harper, Honsell and Plotkin's LF, with a representation mechanism: the language of RLF is the lLcalculus; the representation mechanism is judgementsastypes, developed for relevant logics. The lLcalculus type theory is a firstorder dependent type theory with two kinds of dependent function spaces: a linear one and an intuitionistic one. We study a natural deduction presentation of the type theory and establish the required prooftheoretic metatheory. The RLF framework is a conservative extension of LF. We show that RLF uniformly encodes (fragments of) intuitionistic linear logic, Curry's l I calculus and ML with references. We describe the CurryHowardde Bruijn correspondence of the lLcalculus with a s...
Kripke Resource Models of a DependentlyTyped, Bunched lambdaCalculus (Extended Abstract)
, 1999
"... The lLcalculus is a dependent type theory with both linear and intuitionistic dependent function spaces. It can be seen to arise in two ways. Firstly, in logical frameworks, where it is the language of the RLF logical framework and can uniformly represent linear and other relevant logics. Second ..."
Abstract

Cited by 8 (6 self)
 Add to MetaCart
(Show Context)
The lLcalculus is a dependent type theory with both linear and intuitionistic dependent function spaces. It can be seen to arise in two ways. Firstly, in logical frameworks, where it is the language of the RLF logical framework and can uniformly represent linear and other relevant logics. Secondly, it is a presentation of the proofobjects of BI, the logic of bunched implications. BI is a logic which directly combines linear and intuitionistic implication and, in its predicate version, has both linear and intuitionistic quantifiers. The lLcalculus is the dependent type theory which generalizes both implications and quantifiers. In this paper, we describe the categorical semantics of the lLcalculus. This is given by Kripke resource models, which are monoidindexed sets of functorial Kripke models, the monoid giving an account of resource consumption. We describe a class of concrete, settheoretic models. The models are given by the category of families of sets, parametrized over a small monoidal category, in which the intuitionistic dependent function space is described in the established way, but the linear dependent function space is described using Day's tensor product.
A Theory of Program Refinement
, 1998
"... We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is t ..."
Abstract

Cited by 7 (1 self)
 Add to MetaCart
(Show Context)
We give a canonical program refinement calculus based on the lambda calculus and classical firstorder predicate logic, and study its proof theory and semantics. The intention is to construct a metalanguage for refinement in which basic principles of program development can be studied. The idea is that it should be possible to induce a refinement calculus in a generic manner from a programming language and a program logic. For concreteness, we adopt the simplytyped lambda calculus augmented with primitive recursion as a paradigmatic typed functional programming language, and use classical firstorder logic as a simple program logic. A key feature is the construction of the refinement calculus in a modular fashion, as the combination of two orthogonal extensions to the underlying programming language (in this case, the simplytyped lambda calculus). The crucial observation is that a refinement calculus is given by extending a programming language to allow indeterminate expressions (or ‘stubs’) involving the construction ‘some program x such that P ’. Factoring this into ‘some x...’
Proofsearch in typetheoretic languages: an introduction
 Theoretical Computer Science
, 2000
"... We introduce the main concepts and problems in the theory of proofsearch in typetheoretic languages and survey some specific, connected topics. We do not claim to cover all of the theoretical and implementation issues in the study of proofsearch in typetheoretic languages; rather, we present som ..."
Abstract

Cited by 2 (1 self)
 Add to MetaCart
We introduce the main concepts and problems in the theory of proofsearch in typetheoretic languages and survey some specific, connected topics. We do not claim to cover all of the theoretical and implementation issues in the study of proofsearch in typetheoretic languages; rather, we present some key ideas and problems, starting from wellmotivated points of departure such as a definition of a typetheoretic language or the relationship between languages and proofobjects. The strong connections between different proofsearch methods in logics, type theories and logical frameworks, together with their impact on programming and implementation issues, are central in this context.
Observations About Using Logic as a Specification Language
, 1995
"... This extended abstract contains some nontechnical observations about the roles that logic can play in the specification of computational systems. In particular, computationasdeduction, metaprogramming, and higherorder abstract syntax are briefly discussed. 1 Two approaches to specifications In ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
This extended abstract contains some nontechnical observations about the roles that logic can play in the specification of computational systems. In particular, computationasdeduction, metaprogramming, and higherorder abstract syntax are briefly discussed. 1 Two approaches to specifications In the specification of computational systems, logics are generally used in one of two approaches. In one approach, computations are mathematical structures, containing such items as nodes, transitions, and state, and logic is used in an external sense to make statements about those structures. That is, computations are used as models for logical expressions. Intensional operators, such as the modals of temporal and dynamic logics or the triples of Hoare logic, are often employed to express propositions about the change in state. For example, nexttime modal operators are used to describe the possible evolution of state; expressions in the HennesseyMilner are evaluated against the transitions...