Results 1  10
of
11
A.: Copatterns: Programming infinite structures by observations
, 2013
"... Abel, A., Pientka, B., Thibodeau, D. & Setzer, A. (2013). Copatterns: programming infinite structures by observations. ..."
Abstract

Cited by 18 (9 self)
 Add to MetaCart
(Show Context)
Abel, A., Pientka, B., Thibodeau, D. & Setzer, A. (2013). Copatterns: programming infinite structures by observations.
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
(Show Context)
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
Subtyping, Declaratively An Exercise in Mixed Induction and Coinduction
"... Abstract. It is natural to present subtyping for recursive types coinductively. However, Gapeyev, Levin and Pierce have noted that there is a problem with coinductive definitions of nontrivial transitive inference systems: they cannot be “declarative”—as opposed to “algorithmic ” or syntaxdirected ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
Abstract. It is natural to present subtyping for recursive types coinductively. However, Gapeyev, Levin and Pierce have noted that there is a problem with coinductive definitions of nontrivial transitive inference systems: they cannot be “declarative”—as opposed to “algorithmic ” or syntaxdirected—because coinductive inference systems with an explicit rule of transitivity are trivial. We propose a solution to this problem. By using mixed induction and coinduction we define an inference system for subtyping which combines the advantages of coinduction with the convenience of an explicit rule of transitivity. The definition uses coinduction for the structural rules, and induction for the rule of transitivity. We also discuss under what conditions this technique can be used when defining other inference systems. The developments presented in the paper have been mechanised using Agda, a dependently typed programming language and proof assistant. 1
General Terms
"... This paper presents the GroupMe! system, a resource sharing system with advanced tagging functionality. GroupMe! provides a novel user interface, which enables users to organize and arrange arbitrary Web resources into groups. The content of such groups can be overlooked and inspected immediately as ..."
Abstract
 Add to MetaCart
This paper presents the GroupMe! system, a resource sharing system with advanced tagging functionality. GroupMe! provides a novel user interface, which enables users to organize and arrange arbitrary Web resources into groups. The content of such groups can be overlooked and inspected immediately as resources are visualized in a multimediabased fashion. In this paper, we furthermore introduce new folksonomybased ranking strategies that exploit the group structure shipped with GroupMe! folksonomies. Experiments show that those strategies significantly improve the performance of such ranking algorithms. Categories and Subject Descriptors
Abstract
"... It is possible to provide a proof for a coinductive type using a corecursive function coupled with aguardedness condition. The guardedness condition, however, is quiterestrictive and many programs which are in fact productive and do not compromise soundness will be rejected. We present a system of c ..."
Abstract
 Add to MetaCart
(Show Context)
It is possible to provide a proof for a coinductive type using a corecursive function coupled with aguardedness condition. The guardedness condition, however, is quiterestrictive and many programs which are in fact productive and do not compromise soundness will be rejected. We present a system of cyclic proof for an extension of System F extended with sums, products and (co)inductive types. Using program transformation techniques we are able to take some programs whose productivity is suspected and transform them, using a suitable theory of equivalence, into programs for which guardedness is syntactically apparent. The equivalence of the proof prior and subsequent to transformation is given by a bisimulation relation. 1
Cyclic Proofs and Coinductive Principles
"... It is possible to provide a proof for a coinductive type using a corecursive function coupled with aguardedness condition. The guardedness condition, however, is quiterestrictive and many programs which are in fact productive and do not compromise soundness will be rejected. We present a system of c ..."
Abstract
 Add to MetaCart
(Show Context)
It is possible to provide a proof for a coinductive type using a corecursive function coupled with aguardedness condition. The guardedness condition, however, is quiterestrictive and many programs which are in fact productive and do not compromise soundness will be rejected. We present a system of cyclic proof for an extension of System F extended with sums, products and (co)inductive types. Using program transformation techniques we are able to take some programs whose productivity is suspected and transform them, using a suitable theory of equivalence, into programs for which guardedness is syntactically apparent. The equivalence of the proof prior and subsequent to transformation is given by a bisimulation relation. 1
This work is licensed under the Creative Commons Attribution License. Normalization by Evaluation in the Delay Monad A Case Study for Coinduction via Copatterns and Sized Types
"... In this paper we present an Agda formalization of a normalizer for simplytyped lambda terms. The first step is to write a coinductive evaluator using the delay monad. The other component of the normalizer, a typedirected reifier from values to ηlong βnormal forms, resides in the delay monad as w ..."
Abstract
 Add to MetaCart
In this paper we present an Agda formalization of a normalizer for simplytyped lambda terms. The first step is to write a coinductive evaluator using the delay monad. The other component of the normalizer, a typedirected reifier from values to ηlong βnormal forms, resides in the delay monad as well. Their composition, normalizationbyevaluation, is shown to be a total function, using a standard logicalrelations argument. The successful formalization serves as a proofofconcept for coinductive programming and proving using sized types and copatterns, a new and presently experimental feature of Agda. 1 Introduction and Related Work It would be a great shame if dependentlytyped programming (DTP) restricted us to only writing very clever programs that were a priori structurally recursive and hence obviously terminating. Put another way, it is a lot to ask of the programmer to provide the program and its termination proof in one go, programmers should also be supported in working stepbystep. This paper champions a technique that