Results 1  10
of
19
A term calculus for (co)recursive definitions on streamlike data structures
 Ann. Pure Appl. Logic
, 2005
"... We consider recursion equations (∗) FX = t(F,X) where X ranges over streams (i.e., elements of S: = N→ N), F is of type stream → stream, and the term t is build up from F, X and previously introduced function symbols. The question is whether such an equation has a (total) solution. It is wellknown a ..."
Abstract

Cited by 18 (0 self)
 Add to MetaCart
(Show Context)
We consider recursion equations (∗) FX = t(F,X) where X ranges over streams (i.e., elements of S: = N→ N), F is of type stream → stream, and the term t is build up from F, X and previously introduced function symbols. The question is whether such an equation has a (total) solution. It is wellknown and explicated at many places in the literature (e.g. [2], [4], [6], [7]) that under certain conditions a (unique) solution for (∗)
Inductive and Coinductive Components of Corecursive Functions in Coq
, 2008
"... ..."
(Show Context)
Beating the Productivity Checker Using Embedded Languages
"... Abstract. Some total languages, like Agda and Coq, allow the use of guarded corecursion to construct infinite values and proofs. Guarded corecursion is a form of recursion in which arbitrary recursive calls are allowed, as long as they are guarded by a coinductive constructor. Guardedness ensures th ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
Abstract. Some total languages, like Agda and Coq, allow the use of guarded corecursion to construct infinite values and proofs. Guarded corecursion is a form of recursion in which arbitrary recursive calls are allowed, as long as they are guarded by a coinductive constructor. Guardedness ensures that programs are productive, i.e. that every finite prefix of an infinite value can be computed in finite time. However, many productive programs are not guarded, and it can be nontrivial to put them in guarded form. This paper gives a method for turning a productive program into a guarded program. The method amounts to defining a problemspecific language as a data type, writing the program in the problemspecific language, and writing a guarded interpreter for this language. 1
Using structural recursion for corecursion
 In Types for Proofs and Programs, International Conference, TYPES 2008, volume 5497 of LNCS
, 2009
"... Abstract. We propose a (limited) solution to the problem of constructing stream values defined by recursive equations that do not respect the guardedness condition. The guardedness condition is imposed on definitions of corecursive functions in Coq, AGDA, and other higherorder proof assistants. In ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
(Show Context)
Abstract. We propose a (limited) solution to the problem of constructing stream values defined by recursive equations that do not respect the guardedness condition. The guardedness condition is imposed on definitions of corecursive functions in Coq, AGDA, and other higherorder proof assistants. In this paper, we concentrate in particular on those nonguarded equations where recursive calls appear under functions. We use a correspondence between streams and functions over natural numbers to show that some classes of nonguarded definitions can be modelled through the encoding as structural recursive functions. In practice, this work extends the class of stream values that can be defined in a constructive type theorybased theorem prover with inductive and coinductive types, structural recursion and guarded corecursion.
Unifying Recursive and Corecursive Definitions in Sheaf Categories
 In FoSSaCS
, 2004
"... In this paper we present a theorem for defining fixedpoints in categories of sheaves. This result gives a unifying and general account of most techniques used in computer science in order to ensure convergency of circular definitions, such as (but not limited to) wellfounded recursion and cont ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
In this paper we present a theorem for defining fixedpoints in categories of sheaves. This result gives a unifying and general account of most techniques used in computer science in order to ensure convergency of circular definitions, such as (but not limited to) wellfounded recursion and contractivity in complete ultra metric spaces. This general fixedpoint theorem encompasses also a similar set theoretic result presented in previous work, based on the notion of ordered family of equivalences, and implemented in the Coq proof assistant.
Corecursive Algebras: A Study of General Structured Corecursion (Extended Abstract)
"... Abstract. We study general structured corecursion, dualizing the work of Osius, Taylor, and others on general structured recursion. We call an algebra of a functor corecursive if it supports general structured corecursion: there is a unique map to it from any coalgebra of the same functor. The conce ..."
Abstract

Cited by 3 (1 self)
 Add to MetaCart
(Show Context)
Abstract. We study general structured corecursion, dualizing the work of Osius, Taylor, and others on general structured recursion. We call an algebra of a functor corecursive if it supports general structured corecursion: there is a unique map to it from any coalgebra of the same functor. The concept of antifounded algebra is a statement of the bisimulation principle. We show that it is independent from corecursiveness: Neither condition implies the other. Finally, we call an algebra focusing if its codomain can be reconstructed by iterating structural refinement. This is the strongest condition and implies all the others. 1
Stream Differential Equations: concrete formats for coinductive definitions
, 2011
"... In this article we give an accessible introduction to stream differential equations, ie., equations that take the shape of differential equations from analysis and that are used to define infinite streams. Furthermore we discuss a syntactic format for stream differential equations that ensures that ..."
Abstract

Cited by 2 (2 self)
 Add to MetaCart
In this article we give an accessible introduction to stream differential equations, ie., equations that take the shape of differential equations from analysis and that are used to define infinite streams. Furthermore we discuss a syntactic format for stream differential equations that ensures that any system of equations that fits into the format has a unique solution. It turns out that the stream functions that can be defined using our format are precisely the causal stream functions. Finally, we are going to discuss nonstandard stream calculus that uses basic (co)operations different from the usual head and tail operations in order to define and to reason about streams and stream functions. 1
Mixing Induction and Coinduction
, 2009
"... Purely inductive definitions give rise to treeshaped values where all branches have finite depth, and purely coinductive definitions give rise to values where all branches are potentially infinite. If this is too restrictive, then an alternative is to use mixed induction and coinduction. This techn ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Purely inductive definitions give rise to treeshaped values where all branches have finite depth, and purely coinductive definitions give rise to values where all branches are potentially infinite. If this is too restrictive, then an alternative is to use mixed induction and coinduction. This technique appears to be fairly unknown. The aim of this paper is to make the technique more widely known, and to present several new applications of it, including a parser combinator library which guarantees termination of parsing, and a method for combining coinductively defined inference systems with rules like transitivity. The developments presented in the paper have been formalised and checked in Agda, a dependently typed programming language and proof assistant.
Representing Contractive Functions on Streams
 UNDER CONSIDERATION FOR PUBLICATION IN THE JOURNAL OF FUNCTIONAL PROGRAMMING
, 2011
"... Streams, or infinite lists, have many applications in functional programming, and are naturally defined using recursive equations. But how do we ensure that such equations make sense, i.e. that they actually produce welldefined streams? In this article we present a new approach to this problem, bas ..."
Abstract

Cited by 2 (0 self)
 Add to MetaCart
Streams, or infinite lists, have many applications in functional programming, and are naturally defined using recursive equations. But how do we ensure that such equations make sense, i.e. that they actually produce welldefined streams? In this article we present a new approach to this problem, based upon the topological notion of contractive functions on streams. In particular, we give a sound and complete representation theorem for contractive functions on streams, illustrate the use of this theorem as a practical means to produce welldefined streams, and show how the efficiency of the resulting definitions can be improved using another representation of contractive functions.
Foundational Extensible Corecursion
, 2014
"... This paper presents a theoretical framework for defining corecursive functions safely in a total setting, based on corecursion upto and relational parametricity. The end product is a general corecursor that allows corecursive (and even recursive) calls under wellbehaved operations, including con ..."
Abstract

Cited by 1 (1 self)
 Add to MetaCart
This paper presents a theoretical framework for defining corecursive functions safely in a total setting, based on corecursion upto and relational parametricity. The end product is a general corecursor that allows corecursive (and even recursive) calls under wellbehaved operations, including constructors. Corecursive functions that are well behaved can be registered as such, thereby increasing the corecursor’s expressiveness. To the extensible corecursor corresponds an equally flexible coinduction principle. The metatheory is formalized in the Isabelle proof assistant and forms the core of a prototype tool. The approach is foundational: The corecursor is derived from first principles, without requiring new axioms or extensions of the logic. This ensures that no inconsistencies can be introduced by omissions in a termination or productivity check.