2,283 research outputs found
Hybrid - a definitional two-level approach to reasoning with higher-order abstract syntax
Combining higher-order abstract syntax and (co)-induction in a logical
framework is well known to be problematic.We describe the theory and the practice
of a tool called Hybrid, within Isabelle/HOL and Coq, which aims to address many
of these difficulties. It allows object logics to be represented using higher-order
abstract 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 \u3bb-terms
providing a definitional layer that allows the user to represent object languages using
higher-order abstract syntax, while offering tools for reasoning about them at the
higher level. In this paper we describe how to use Hybrid in a multi-level reasoning
fashion, similar in spirit to other systems such as Twelf and Abella. 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 non-stratifiable 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 continuation-machine 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 more
complex object logic whose encoding is elegantly expressed using features of the new
specification logic
An Improved Implementation and Abstract Interface for Hybrid
Hybrid is a formal theory implemented in Isabelle/HOL that provides an
interface for representing and reasoning about object languages using
higher-order abstract syntax (HOAS). This interface is built around an HOAS
variable-binding operator that is constructed definitionally from a de Bruijn
index representation. In this paper we make a variety of improvements to
Hybrid, culminating in an abstract interface that on one hand makes Hybrid a
more mathematically satisfactory theory, and on the other hand has important
practical benefits. We start with a modification of Hybrid's type of terms that
better hides its implementation in terms of de Bruijn indices, by excluding at
the type level terms with dangling indices. We present an improved set of
definitions, and a series of new lemmas that provide a complete
characterization of Hybrid's primitives in terms of properties stated at the
HOAS level. Benefits of this new package include a new proof of adequacy and
improvements to reasoning about object logics. Such proofs are carried out at
the higher level with no involvement of the lower level de Bruijn syntax.Comment: In Proceedings LFMTP 2011, arXiv:1110.668
Relating Nominal and Higher-order Abstract Syntax Specifications
Nominal abstract syntax and higher-order abstract syntax provide a means for
describing binding structure which is higher-level than traditional techniques.
These approaches have spawned two different communities which have developed
along similar lines but with subtle differences that make them difficult to
relate. The nominal abstract syntax community has devices like names,
freshness, name-abstractions with variable capture, and the new-quantifier,
whereas the higher-order abstract syntax community has devices like
lambda-binders, lambda-conversion, raising, and the nabla-quantifier. This
paper aims to unify these communities and provide a concrete correspondence
between their different devices. In particular, we develop a
semantics-preserving translation from alpha-Prolog, a nominal abstract syntax
based logic programming language, to G-, a higher-order abstract syntax based
logic programming language. We also discuss higher-order judgments, a common
and powerful tool for specifications with higher-order abstract syntax, and we
show how these can be incorporated into G-. This establishes G- as a language
with the power of higher-order abstract syntax, the fine-grained variable
control of nominal specifications, and the desirable properties of higher-order
judgments.Comment: To appear in PPDP 201
Cut Elimination for a Logic with Induction and Co-induction
Proof search has been used to specify a wide range of computation systems. In
order to build a framework for reasoning about such specifications, we make use
of a sequent calculus involving induction and co-induction. These proof
principles are based on a proof theoretic (rather than set-theoretic) notion of
definition. Definitions are akin to logic programs, where the left and right
rules for defined atoms allow one to view theories as "closed" or defining
fixed points. The use of definitions and free equality makes it possible to
reason intentionally about syntax. We add in a consistent way rules for pre and
post fixed points, thus allowing the user to reason inductively and
co-inductively about properties of computational system making full use of
higher-order abstract syntax. Consistency is guaranteed via cut-elimination,
where we give the first, to our knowledge, cut-elimination procedure in the
presence of general inductive and co-inductive definitions.Comment: 42 pages, submitted to the Journal of Applied Logi
An Open Challenge Problem Repository for Systems Supporting Binders
A variety of logical frameworks support the use of higher-order abstract
syntax in representing formal systems; however, each system has its own set of
benchmarks. Even worse, general proof assistants that provide special libraries
for dealing with binders offer a very limited evaluation of such libraries, and
the examples given often do not exercise and stress-test key aspects that arise
in the presence of binders. In this paper we design an open repository ORBI
(Open challenge problem Repository for systems supporting reasoning with
BInders). We believe the field of reasoning about languages with binders has
matured, and a common set of benchmarks provides an important basis for
evaluation and qualitative comparison of different systems and libraries that
support binders, and it will help to advance the field.Comment: In Proceedings LFMTP 2015, arXiv:1507.0759
- …