Results 11 
19 of
19
Indexed induction and coinduction, fibrationally
 In CALCO
, 2011
"... Abstract. This paper extends the fibrational approach to induction and coinduction pioneered by Hermida and Jacobs, and developed by the current authors, in two key directions. First, we present a sound coinduction rule for any data type arising as the final coalgebra of a functor, thus relaxing Her ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
Abstract. This paper extends the fibrational approach to induction and coinduction pioneered by Hermida and Jacobs, and developed by the current authors, in two key directions. First, we present a sound coinduction rule for any data type arising as the final coalgebra of a functor, thus relaxing Hermida and Jacobs ’ restriction to polynomial data types. For this we introduce the notion of a quotient category with equality (QCE), which both abstracts the standard notion of a fibration of relations constructed from a given fibration, and plays a role in the theory of coinduction dual to that of a comprehension category with unit (CCU) in the theory of induction. Second, we show that indexed inductive and coinductive types also admit sound induction and coinduction rules. Indexed data types often arise as initial algebras and final coalgebras of functors on slice categories, so our key technical results give sufficent conditions under which we can construct, from a CCU (QCE) U: E → B, a fibration with base B/I that models indexing by I and is also a CCU (QCE). 1
A Categorical Semantics for InductiveInductive Definitions
"... Abstract. Inductioninduction is a principle for defining data types in MartinLöf Type Theory. An inductiveinductive definition consists of a set A, together with an Aindexed family B: A Ñ Set, where both A and B are inductively defined in such a way that the constructors for A can refer to B and ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
Abstract. Inductioninduction is a principle for defining data types in MartinLöf Type Theory. An inductiveinductive definition consists of a set A, together with an Aindexed family B: A Ñ Set, where both A and B are inductively defined in such a way that the constructors for A can refer to B and vice versa. In addition, the constructors for B can refer to the constructors for A. We extend the usual initial algebra semantics for ordinary inductive data types to the inductiveinductive setting by considering dialgebras instead of ordinary algebras. This gives a new and compact formalisation of inductiveinductive definitions, which we prove is equivalent to the usual formulation with elimination rules. 1
Compiling Grammarbased Speech Application Components
, 2007
"... It is easy to imagine machines that can communicate using spoken natural language. Constructing such machines is more difficult. The available methods for development of interactive speech applications are costly, and current research is mainly focused on producing more sophisticated systems, rather ..."
Abstract
 Add to MetaCart
It is easy to imagine machines that can communicate using spoken natural language. Constructing such machines is more difficult. The available methods for development of interactive speech applications are costly, and current research is mainly focused on producing more sophisticated systems, rather than on making it easier to build them. This thesis describes how components used in interactive speech applications can be automatically derived from natural language grammars written in Grammatical Framework (GF). By using techniques borrowed from the field of programming language implementation, we can generate speech recognition language models, multimodal fusion and fission components, and support code for abstract syntax transformations. By automatically generating these components, we can reduce duplicated work, ensure consistency, make it easier to build multilingual systems, improve linguistic quality, enable reuse across system domains, and make systems more portable.
unknown title
"... the introduction rules for A may also refer to B. So we have formation rules A ∶ Set, B ∶ A → Set and typical introduction rules might take the form a ∶ A b ∶ B(a)... introA(a, b,...) ∶ A a0 ∶ A b ∶ B(a0) a1 ∶ A... ..."
Abstract
 Add to MetaCart
the introduction rules for A may also refer to B. So we have formation rules A ∶ Set, B ∶ A → Set and typical introduction rules might take the form a ∶ A b ∶ B(a)... introA(a, b,...) ∶ A a0 ∶ A b ∶ B(a0) a1 ∶ A...
Deciding Properties of Lists using Containers
 JOURNAL OF AUTOMATED REASONING
"... We exploit the ability to represent data types as container functors [2,1,3] to develop a novel approach to proving properties of lists using arithmetic decision procedures. Containers capture the idea that concrete data types can be characterised by specifying the shape values take and for every po ..."
Abstract
 Add to MetaCart
We exploit the ability to represent data types as container functors [2,1,3] to develop a novel approach to proving properties of lists using arithmetic decision procedures. Containers capture the idea that concrete data types can be characterised by specifying the shape values take and for every possible shape, explaining where positions within that shape are stored. More importantly, a representation theorem guarantees that polymorphic functions between container data types are given by container morphisms, which are characterised by mappings between shapes and positions. The key to our approach is to restrict the shape maps of container morphisms to functions that have decidable equality, but which allow for a large class of functions. We also capture the behaviour of position mappings of container morphisms as functions on the natural numbers. The shape maps which we consider are given by piecewiselinear functions, of type N n → N. Such functions are decidable, and this enables us to implement decision procedures for lists.
hangingUnder ∶ ((p ∶ Platform) × (b ∶ Building(p))) → Building(extension(⟨p, b⟩)).
"... the introduction rules for A may also refer to B. So we have formation rules A ∶ Set, B ∶ A → Set and typical introduction rules might take the form a ∶ A b ∶ B(a)... introA(a, b,...) ∶ A a0 ∶ A b ∶ B(a0) a1 ∶ A... ..."
Abstract
 Add to MetaCart
the introduction rules for A may also refer to B. So we have formation rules A ∶ Set, B ∶ A → Set and typical introduction rules might take the form a ∶ A b ∶ B(a)... introA(a, b,...) ∶ A a0 ∶ A b ∶ B(a0) a1 ∶ A...
Haskell Programming with Nested Types: A Principled Approach †
"... Abstract. Initial algebra semantics is one of the cornerstones of the theory of modern functional programming languages. For each inductive data type, it provides a Church encoding for that type, a build combinator which constructs data of that type, a fold combinator which encapsulates structured r ..."
Abstract
 Add to MetaCart
Abstract. Initial algebra semantics is one of the cornerstones of the theory of modern functional programming languages. For each inductive data type, it provides a Church encoding for that type, a build combinator which constructs data of that type, a fold combinator which encapsulates structured recursion over data of that type, and a fold/build rule which optimises modular programs by eliminating from them data constructed using the build combinator, and immediately consumed using the fold combinator, for that type. It has long been thought that initial algebra semantics is not expressive enough to provide a similar foundation for programming with nested types in Haskell. Specifically, the standard folds derived from initial algebra semantics have been considered too weak to capture commonly occurring patterns of recursion over data of nested types in Haskell, and no build combinators or fold/build rules have until now been defined for nested types. This paper shows that standard folds are, in fact, sufficiently expressive for programming with nested types in Haskell. It also defines build combinators and fold/build fusion rules for nested types. It thus shows how initial algebra semantics provides a principled, expressive, and elegant foundation for programming with nested types in Haskell. 1.