Results 1  10
of
18
The ∇calculus. Functional programming with higherorder encodings
 In Proceedings of the 7th International Conference on Typed Lambda Calculi and Applications
, 2005
"... Abstract. Higherorder encodings use functions provided by one language to represent variable binders of another. They lead to concise and elegant representations, which historically have been difficult to analyze and manipulate. In this paper we present the ∇calculus, a calculus for defining gener ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
Abstract. Higherorder encodings use functions provided by one language to represent variable binders of another. They lead to concise and elegant representations, which historically have been difficult to analyze and manipulate. In this paper we present the ∇calculus, a calculus for defining general recursive functions over higherorder encodings. To avoid problems commonly associated with using the same function space for representations and computations, we separate one from the other. The simplytyped λcalculus plays the role of the representationlevel. The computationlevel contains not only the usual computational primitives but also an embedding of the representationlevel. It distinguishes itself from similar systems by allowing recursion under representationlevel λbinders while permitting a natural style of programming which we believe scales to other logical frameworks. Sample programs include bracket abstraction, parallel reduction, and an evaluator for a simple language with firstclass continuations. 1
Focusing on binding and computation
 In IEEE Symposium on Logic in Computer Science
, 2008
"... Variable binding is a prevalent feature of the syntax and proof theory of many logical systems. In this paper, we define a programming language that provides intrinsic support for both representing and computing with binding. This language is extracted as the CurryHoward interpretation of a focused ..."
Abstract

Cited by 21 (6 self)
 Add to MetaCart
Variable binding is a prevalent feature of the syntax and proof theory of many logical systems. In this paper, we define a programming language that provides intrinsic support for both representing and computing with binding. This language is extracted as the CurryHoward interpretation of a focused sequent calculus with two kinds of implication, of opposite polarity. The representational arrow extends systems of definitional reflection with a notion of scoped inference rules, which are used to represent binding. On the other hand, the usual computational arrow classifies recursive functions defined by patternmatching. Unlike many previous approaches, both kinds of implication are connectives in a single logic, which serves as a rich logical framework capable of representing inference rules that mix binding and computation. 1
A Definitional TwoLevel Approach to Reasoning with HigherOrder Abstract Syntax
 Journal of Automated Reasoning
, 2010
"... Abstract. Combining higherorder abstract syntax and (co)induction in a logical framework is well known to be problematic. Previous work [ACM02] described the implementation of a tool called Hybrid, within Isabelle HOL, syntax, and reasoned about using tactical theorem proving and principles of (co ..."
Abstract

Cited by 14 (3 self)
 Add to MetaCart
Abstract. Combining higherorder abstract syntax and (co)induction in a logical framework is well known to be problematic. Previous work [ACM02] described the implementation of a tool called Hybrid, within Isabelle HOL, syntax, and reasoned about using tactical theorem proving and principles of (co)induction. Moreover, it is definitional, which guarantees consistency within a classical type theory. The idea is to have a de Bruijn representation of syntax, while offering tools for reasoning about them at the higher level. In this paper we describe how to use it in a multilevel reasoning fashion, similar in spirit to other metalogics such as Linc and Twelf. By explicitly referencing provability in a middle layer called a specification logic, we solve the problem of reasoning by (co)induction in the presence of nonstratifiable hypothetical judgments, which allow very elegant and succinct specifications of object logic inference rules. We first demonstrate the method on a simple example, formally proving type soundness (subject reduction) for a fragment of a pure functional language, using a minimal intuitionistic logic as the specification logic. We then prove an analogous result for a continuationmachine presentation of the operational semantics of the same language, encoded this time in an ordered linear logic that serves as the specification layer. This example demonstrates the ease with which we can incorporate new specification logics, and also illustrates a significantly
Recursive function definition for types with binders
 In Proc. TPHOLS 2004
, 2004
"... Abstract. This work describes the proof and uses of a theorem allowing definition of recursive functions over the type of λcalculus terms, where terms with bound variables are identified up to αequivalence. The theorem embodies what is effectively a principle of primitive recursion, and the analog ..."
Abstract

Cited by 13 (0 self)
 Add to MetaCart
Abstract. This work describes the proof and uses of a theorem allowing definition of recursive functions over the type of λcalculus terms, where terms with bound variables are identified up to αequivalence. The theorem embodies what is effectively a principle of primitive recursion, and the analogues of this theorem for other types with binders are clear. The theorem’s sideconditions require that the putative definition be wellbehaved with respect to fresh name generation and name permutation. A number of examples over the type of λcalculus terms illustrate the use of the new principle. 1
A Computational Approach to Reflective MetaReasoning about Languages with Bindings
 In MERLIN ’05: Proceedings of the 3rd ACM SIGPLAN workshop on Mechanized
, 2005
"... We present a foundation for a computational metatheory of languages with bindings implemented in a computeraided formal reasoning environment. Our theory provides the ability to reason abstractly about operators, languages, openended languages, classes of languages, etc. The theory is based on th ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
We present a foundation for a computational metatheory of languages with bindings implemented in a computeraided formal reasoning environment. Our theory provides the ability to reason abstractly about operators, languages, openended languages, classes of languages, etc. The theory is based on the ideas of higherorder abstract syntax, with an appropriate induction principle parameterized over the language (i.e. a set of operators) being used. In our approach, both the bound and free variables are treated uniformly and this uniform treatment extends naturally to variablelength bindings. The implementation is reflective, namely there is a natural mapping between the metalanguage of the theoremprover and the object language of our theory. The object language substitution operation is mapped to the metalanguage substitution and does not need to be defined recursively. Our approach does not require designing a custom type theory; in this paper we describe the implementation of this foundational theory within a generalpurpose type theory. This work is fully implemented in the MetaPRL theorem prover, using the preexisting NuPRLlike MartinL ofstyle computational type theory. Based on this implementation, we lay out an outline for a framework for programming language experimentation and exploration as well as a general reflective reasoning framework. This paper also includes a short survey of the existing approaches to syntactic reflection. 1
A.P.: Twolevel Hybrid: A system for reasoning using higherorder abstract syntax
 Proceedings of the International Workshop on Logical Frameworks and MetaLanguages: Theory and Practice (LFMTP 2008). Volume 228 of Electronic Notes in Theoretical Computer Science
, 2009
"... Logical frameworks supporting higherorder abstract syntax (HOAS) allow a direct and concise specification of a wide variety of languages and deductive systems. Reasoning about such systems within the same framework is wellknown to be problematic. We describe the new version of the Hybrid system, i ..."
Abstract

Cited by 9 (2 self)
 Add to MetaCart
Logical frameworks supporting higherorder abstract syntax (HOAS) allow a direct and concise specification of a wide variety of languages and deductive systems. Reasoning about such systems within the same framework is wellknown to be problematic. We describe the new version of the Hybrid system, implemented on top of Isabelle/HOL (as well as Coq), in which a de Bruijn representation of λterms provides a definitional layer that allows the user to represent object languages in HOAS style, while offering tools for reasoning about them at the higher level. We briefly describe how to carry out twolevel reasoning in the style of frameworks such as Linc, and briefly discuss our system’s capabilities for reasoning using tactical theorem proving and principles of induction and coinduction.
Combining higherorder abstract syntax with firstorder abstract syntax in ATS
 In ACM Workshop on Mechanized Reasoning about Languages with Variable Binding
, 2005
"... Abstract Encodings based on higherorder abstract syntax represent the variables of an objectlanguage as the variables of a metalanguage. Such encodings allow for the reuse of ffconversion, substitutionand hypothetical judgments already defined in the metalanguage and thus often lead to simple ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
Abstract Encodings based on higherorder abstract syntax represent the variables of an objectlanguage as the variables of a metalanguage. Such encodings allow for the reuse of ffconversion, substitutionand hypothetical judgments already defined in the metalanguage and thus often lead to simple and natural formalization. However,it is also wellknown that there are some inherent difficulties with higherorder abstract syntax in supporting recursive definitions.We demonstrate a novel approach to explicitly combining higherorder abstract syntax with firstorder abstract syntax thatmakes use of a (restricted) form of dependent types. With this combination, we can readily define recursive functions over firstorderabstract syntax while ensuring the correctness of these functions through higherorder abstract syntax. We present an implementation of substitution and a verified evaluator for pure untyped callbyvalue *calculus. Categories and Subject Descriptors D.3 [Software]: Programming Languages
A Formalization of an Ordered Logical Framework in Hybrid with Applications to Continuation Machines
 in: ACM SIGPLAN Workshop on Mechanized Reasoning about Languages with Variable Binding (2003
"... We report on work in progress devoted to the formalization of an Ordered Logical Framework (OLF) based on a twolevel architecture [8] in the Hybrid system. OLF here is a secondorder version of ordered linear logic to be used as a metalanguage for the verification of the (meta)theory of deductive ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
We report on work in progress devoted to the formalization of an Ordered Logical Framework (OLF) based on a twolevel architecture [8] in the Hybrid system. OLF here is a secondorder version of ordered linear logic to be used as a metalanguage for the verification of the (meta)theory of deductive systems. It is implemented as a metainterpreter on top of the Hybrid system, which provides the full HOAS language. We apply the framework to the formal verification of type preservation of a simple continuation machine for MiniML.
A temporallogic approach to programming with dependent types and higherorder encodings
, 2005
"... In this work, we propose a temporal logic with a pasttime operator, show its soundness, and establish a CurryHoward correspondence to a λcalculus. Furthermore, we illustrate how it serves as a logical foundation for programming with dependently typed data, supports programming with higherorder a ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
In this work, we propose a temporal logic with a pasttime operator, show its soundness, and establish a CurryHoward correspondence to a λcalculus. Furthermore, we illustrate how it serves as a logical foundation for programming with dependently typed data, supports programming with higherorder abstract syntax and hypothetical judgments. Sample programs that we discuss in this paper include bracket abstraction.