Results 1  10
of
13
A Linear Logical Framework
, 1996
"... We present the linear type theory LLF as the forAppeared in the proceedings of the Eleventh Annual IEEE Symposium on Logic in Computer Science  LICS'96 (E. Clarke editor), pp. 264275, New Brunswick, NJ, July 2730 1996. mal basis for a conservative extension of the LF logical framework. LLF c ..."
Abstract

Cited by 217 (44 self)
 Add to MetaCart
We present the linear type theory LLF as the forAppeared in the proceedings of the Eleventh Annual IEEE Symposium on Logic in Computer Science  LICS'96 (E. Clarke editor), pp. 264275, New Brunswick, NJ, July 2730 1996. mal basis for a conservative extension of the LF logical framework. LLF combines the expressive power of dependent types with linear logic to permit the natural and concise representation of a whole new class of deductive systems, namely those dealing with state. As an example we encode a version of MiniML with references including its type system, its operational semantics, and a proof of type preservation. Another example is the encoding of a sequent calculus for classical linear logic and its cut elimination theorem. LLF can also be given an operational interpretation as a logic programming language under which the representations above can be used for type inference, evaluation and cutelimination. 1 Introduction A logical framework is a formal system desig...
Unification via Explicit Substitutions: The Case of HigherOrder Patterns
 PROCEEDINGS OF JICSLP'96
, 1998
"... In [6] we have proposed a general higherorder unification method using a theory of explicit substitutions and we have proved its completeness. In this paper, we investigate the case of higherorder patterns as introduced by Miller. We show that our general algorithm specializes in a very convenient ..."
Abstract

Cited by 56 (14 self)
 Add to MetaCart
In [6] we have proposed a general higherorder unification method using a theory of explicit substitutions and we have proved its completeness. In this paper, we investigate the case of higherorder patterns as introduced by Miller. We show that our general algorithm specializes in a very convenient way to patterns. We also sketch an efficient implementation of the abstract algorithm and its generalization to constraint simplification, which has yielded good experimental results at the core of a higherorder constraint logic programming language.
Explaining Type Inference
 Science of Computer Programming
, 1995
"... Type inference is the compiletime process of reconstructing missing type information in a program based on the usage of its variables. ML and Haskell are two languages where this aspect of compilation has enjoyed some popularity, allowing type information to be omitted while static type checking is ..."
Abstract

Cited by 53 (0 self)
 Add to MetaCart
Type inference is the compiletime process of reconstructing missing type information in a program based on the usage of its variables. ML and Haskell are two languages where this aspect of compilation has enjoyed some popularity, allowing type information to be omitted while static type checking is still performed. Type inference may be expected to have some application in the prototyping and scripting languages which are becoming increasingly popular. A difficulty with type inference is the confusing and sometimes counterintuitive diagnostics produced by the type checker as a result of type errors. A modification of the HindleyMilner type inference algorithm is presented, which allows the specific reasoning which led to a program variable having a particular type to be recorded for type explanation. This approach is close to the intuitive process used in practice for debugging type errors. 1 Introduction Type inference refers to the compiletime process of reconstructing missing t...
Solving HigherOrder Equations: From Logic to Programming
, 1995
"... Higherorder constructs provide the necessary level of abstraction for concise and natural formulations in many areas of computer science. We present constructive methods for higherorder equational reasoning with applications ranging from theorem proving to novel programming concepts. A major probl ..."
Abstract

Cited by 36 (9 self)
 Add to MetaCart
Higherorder constructs provide the necessary level of abstraction for concise and natural formulations in many areas of computer science. We present constructive methods for higherorder equational reasoning with applications ranging from theorem proving to novel programming concepts. A major problem of higherorder programming is the undecidability of higherorder unification. In the first part, we develop several classes with decidable secondorder unification. As the main result, we show that the unification of a linear higherorder pattern s with an arbitrary secondorder term that shares no variables with s is decidable and finitely solvable. This is the unification needed for secondorder functionallogic programming. The second main contribution is a framework for solving higherorder equational problems by narrowing. In the firstorder case, narrowing is the underlying computation rule for the integration of logic programming and functional programming. We argue that there are...
Foundational Aspects of Syntax
, 1999
"... Introduction A large variety of computing systems, such as compilers, interpreters, static analyzers, and theorem provers, need to manipulate syntactic objects like programs, types, formulas, and proofs. A common characteristic of these syntactic objects is that they contain variable binders, such ..."
Abstract

Cited by 11 (7 self)
 Add to MetaCart
Introduction A large variety of computing systems, such as compilers, interpreters, static analyzers, and theorem provers, need to manipulate syntactic objects like programs, types, formulas, and proofs. A common characteristic of these syntactic objects is that they contain variable binders, such as quantifiers, scoping operators, and parameters. The presence of binders complicates formal specifications and symbolic processing. Consider, for example, a function definition of the form f(x) = let y = e in x + y: When analyzing or transforming a program containing the call f(e 0 ), we might wish to replace f(e 0 ) with the body of f in which x is substituted by e 0 . But we cannot simply apply the substitution [x 7! e<
From Interpreter to Compiler using Staging and Monads
, 1998
"... In writing this paper we had two goals. First, to promote MetaML, a programming language for writing staged programs, and second, to demonstrate that staging a program can have significant benefits. We do this by example: the derivation of an executable compiler for a small language. We derive the c ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
In writing this paper we had two goals. First, to promote MetaML, a programming language for writing staged programs, and second, to demonstrate that staging a program can have significant benefits. We do this by example: the derivation of an executable compiler for a small language. We derive the compiler in a rigorous fashion from a semantic description of the language. This is done by staging a denotational semantics, expressed as a monadic interpreter. The compiler is a program generator, taking a program in the source language "a whileprogram" as input and producing an ML program as target. The ML program produced is in a restricted subset of ML over which the programmer has complete control. It is encapsulated in a special datastructure called code. The metaprogramming capabilities of MetaML allow this datastructure to be directly executed "runtime code generation", or to be analysed. We illustrate this analysis of generated code to build a source to source transf...
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...
Refinements of lazy narrowing for leftlinear fully extened pattern rewrite systems
, 2001
"... Abstract. Lazy narrowing is a general Eunification procedure for equational theories presented by confluent term rewriting systems. It has been deeply studied in the first order case and various higherorder extensions have been proposed in an attempt to improve its expressive power. Such extension ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. Lazy narrowing is a general Eunification procedure for equational theories presented by confluent term rewriting systems. It has been deeply studied in the first order case and various higherorder extensions have been proposed in an attempt to improve its expressive power. Such extensions suffer from huge search space in guessing the solutions of variables of functional type. For practical purposes, the need to reduce the search space of solutions is of paramount importance. In this paper we introduce HOLN, a higherorder lazy narrowing calculus for Eunification in theories presented by pattern rewrite systems. The calculus is designed to deal with both oriented and unoriented equations, and keeps track of the variables which are to be bound to normalized solutions. We discuss the operating principle of HOLN, its main properties, and propose refinements to reduce its search space for solutions. Our refinements are defined for classes of leftlinear fullyextended pattern rewrite systems which are widely used in higherorder functional logic programming. 1
Refinements of Lazy Narrowing for LeftLinear FullyExtended Pattern Rewrite Systems Mircea Marin
, 2001
"... Lazy narrowing is a general Eunification procedure for equational theories presented by confluent term rewriting systems. It has been deeply studied in the first order case and various higherorder extensions have been proposed in an attempt to improve its expressive power. Such extensions suffer f ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Lazy narrowing is a general Eunification procedure for equational theories presented by confluent term rewriting systems. It has been deeply studied in the first order case and various higherorder extensions have been proposed in an attempt to improve its expressive power. Such extensions suffer from huge search space in guessing the solutions of variables of functional type. For practical purposes, the need to reduce the search space of solutions is of paramount importance. In this paper we introduce HOLN, a higherorder lazy narrowing calculus for Eunification in theories presented by pattern rewrite systems. The calculus is designed to deal with both oriented and unoriented equations, and keeps track of the variables which are to be bound to normalized solutions. We discuss the operating principle of HOLN, its main properties, and propose refinements to reduce its search space for solutions. Our refinements are defined for classes of leftlinear fullyextended pattern rewrite systems which are widely used in higherorder functional logic programming.
Desiderata for Interactive Verification Systems
, 1994
"... What facilities should an interactive verification system provide? We take the pragmatic view that the particular logic underlying a proof system is not as important as the support that is provided. Although a plethora of logics have been implemented, we think that there is a common kernel of suppor ..."
Abstract
 Add to MetaCart
What facilities should an interactive verification system provide? We take the pragmatic view that the particular logic underlying a proof system is not as important as the support that is provided. Although a plethora of logics have been implemented, we think that there is a common kernel of support that a proof system ought to provide. Towards this end, we give detailed suggestions for verification support in three major areas: formalization, proof, and interface. Although our perspective comes from experience with highly expressive logics such as set theory, higher order logic, and type theory, we think our analyses apply more generally. Introduction Currently, theorem provers are used in the verification of both hardware and software [GM93, ORS92, BM90, HRS90, FFMH92], the formalization of informal mathematical proofs [FGT90, CH85, Pau90b], the teaching of logic[AMC84], and as tools of mathematical and metamathematical research [WWM + 90, CAB + 86]. 1 In this paper we describ...