Results 1  10
of
37
Nominal techniques in Isabelle/HOL
 Proceedings of the 20th International Conference on Automated Deduction (CADE20
, 2005
"... Abstract. In this paper we define an inductive set that is bijective with the ffequated lambdaterms. Unlike deBruijn indices, however, our inductive definition includes names and reasoning about this definition is very similar to informal reasoning on paper. For this we provide a structural induc ..."
Abstract

Cited by 80 (12 self)
 Add to MetaCart
Abstract. In this paper we define an inductive set that is bijective with the ffequated lambdaterms. Unlike deBruijn indices, however, our inductive definition includes names and reasoning about this definition is very similar to informal reasoning on paper. For this we provide a structural induction principle that requires to prove the lambdacase for fresh binders only. The main technical novelty of this work is that it is compatible with the axiomofchoice (unlike earlier nominal logic work by Pitts et al); thus we were able to implement all results in Isabelle/HOL and use them to formalise the standard proofs for ChurchRosser and strongnormalisation. Keywords. Lambdacalculus, nominal logic, structural induction, theoremassistants.
Static name control for FreshML
 In IEEE Symposium on Logic in Computer Science (LICS
, 2007
"... 3 A complete example ..."
Domain theory for concurrency
, 2003
"... Concurrent computation can be given an abstract mathematical treatment very similar to that provided for sequential computation by domain theory and denotational semantics of Scott and Strachey. ..."
Abstract

Cited by 23 (6 self)
 Add to MetaCart
Concurrent computation can be given an abstract mathematical treatment very similar to that provided for sequential computation by domain theory and denotational semantics of Scott and Strachey.
Normalization by evaluation for MartinLöf type theory with one universe
 IN 23RD CONFERENCE ON THE MATHEMATICAL FOUNDATIONS OF PROGRAMMING SEMANTICS, MFPS XXIII, ELECTRONIC NOTES IN THEORETICAL COMPUTER SCIENCE
, 2007
"... ..."
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 recursion combinator for nominal datatypes implemented in Isabelle/HOL
 IN PROC. OF THE 3RD INTERNATIONAL JOINT CONFERENCE ON AUTOMATED REASONING (IJCAR), VOLUME 4130 OF LNAI
, 2006
"... The nominal datatype package implements an infrastructure in Isabelle/HOL for defining languages involving binders and for reasoning conveniently about alphaequivalence classes. Pitts stated some general conditions under which functions over alphaequivalence classes can be defined by a form of str ..."
Abstract

Cited by 16 (7 self)
 Add to MetaCart
The nominal datatype package implements an infrastructure in Isabelle/HOL for defining languages involving binders and for reasoning conveniently about alphaequivalence classes. Pitts stated some general conditions under which functions over alphaequivalence classes can be defined by a form of structural recursion and gave a clever proof for the existence of a primitiverecursion combinator. We give a version of this proof that works directly over nominal datatypes and does not rely upon auxiliary constructions. We further introduce proving tools and a heuristic that made the automation of our proof tractable. This automation is an essential prerequisite for the nominal datatype package to become useful.
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
Verifying a Semantic βηConversion Test for MartinLöf Type Theory
, 2008
"... Typechecking algorithms for dependent type theories often rely on the interpretation of terms in some semantic domain of values when checking equalities. Here we analyze a version of Coquand’s algorithm for checking the βηequality of such semantic values in a theory with a predicative universe hi ..."
Abstract

Cited by 12 (9 self)
 Add to MetaCart
Typechecking algorithms for dependent type theories often rely on the interpretation of terms in some semantic domain of values when checking equalities. Here we analyze a version of Coquand’s algorithm for checking the βηequality of such semantic values in a theory with a predicative universe hierarchy and large elimination rules. Although this algorithm does not rely on normalization by evaluation explicitly, we show that similar ideas can be employed for its verification. In particular, our proof uses the new notions of contextual reification and strong semantic equality. The algorithm is part of a bidirectional type checking algorithm which checks whether a normal term has a certain semantic type, a technique notion of semantic domain in order to accommodate a variety of possible implementation techniques, such as normal forms, weak head normal forms, closures, and compiled code. Our aim is to get closer than previous work to verifying the typechecking algorithms which are actually used in practice.
Simple nominal type theory
"... Abstract. Nominal logic is an extension of firstorder logic with features useful for reasoning about abstract syntax with bound names. For computational applications such as programming and formal reasoning, it is desirable to develop constructive type theories for nominal logic which extend standa ..."
Abstract

Cited by 8 (1 self)
 Add to MetaCart
Abstract. Nominal logic is an extension of firstorder logic with features useful for reasoning about abstract syntax with bound names. For computational applications such as programming and formal reasoning, it is desirable to develop constructive type theories for nominal logic which extend standard type theories for propositional, first or higherorder logic. This has proven difficult, largely because of complex interactions between nominal logic’s nameabstraction operation and ordinary functional abstraction. This difficulty already arises in the case of propositional logic and simple type theory. In this paper we show how this difficulty can be overcome, and present a simple nominal type theory which enjoys properties such as type soundness and strong normalization, and which can be soundly interpreted using existing nominal set models of nominal logic. We also sketch how recursion combinators for languages with binding structure can be provided. This is an important first step towards understanding the constructive content of nominal logic and incorporating it into existing logics and type theories. 1
A fresh look at programming with names and binders
"... A wide range of computer programs, including compilers and theorem provers, manipulate data structures that involve names and binding. However, the design of programming idioms which allow performing these manipulations in a safe and natural style has, to a large extent, remained elusive. In this pa ..."
Abstract

Cited by 7 (2 self)
 Add to MetaCart
A wide range of computer programs, including compilers and theorem provers, manipulate data structures that involve names and binding. However, the design of programming idioms which allow performing these manipulations in a safe and natural style has, to a large extent, remained elusive. In this paper, we present a novel approach to the problem. Our proposal can be viewed either as a programming language design or as a library: in fact, it is currently implemented within Agda. enough to support multiple concrete implementations: we present one in nominal style and one in de Bruijn style. We use logical relations to prove that “welltyped programs do not mix names with different scope”. We exhibit an adequate encoding of Pittsstyle nominal terms into our system. Keywords: names, binders, metaprogramming, name abstraction, higherorder abstract syntax