This paper presents a new approach to optimising corecursive programs by factorisation. In particular, we focus on programs written using the corecursion operator unfold. We use and expand upon the proof techniques of guarded coinduction and unfold fusion, capturing a pattern of generalising coinductive hypotheses by means of abstraction and representation functions. The pattern we observe is simple, has not been observed before, and is widely applicable. We develop a general program factorisation theorem from this pattern, demonstrating its utility with a range of practical examples
We introduce AmiCo, a tool that extends a proof assistant, Isabelle/HOL, with flexible function defi...
Presented at the WPTE 2022 workshop (https://wpte2022.github.io), Haïfa, Israel, August 2022, whose ...
Coinduction is an important concept in functional programming. To formally prove properties of corec...
This paper presents a new approach to optimising corecursive pro-grams by factorisation. In particul...
Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, w...
Recursion is a well-known and powerful programming technique, with a wide variety of applications. ...
peer-reviewedProofs involving infinite structures can use corecursive functions as inhabitants of a...
This paper presents a formalized framework for defining corecursive functions safely in a total sett...
International audienceThis paper presents a formalized framework for defining corecursive functions ...
Abstract datatypes — with public interfaces hiding private implementations — represent a form of cod...
We argue that abstract datatypes - with public interfaces hiding private implementations - represent...
This paper presents a formalized framework for defining corecursive functions safely in a total sett...
International audienceFunction uncurrying is an important optimization for the efficient execution o...
Abstract. Recursion is a well-known and powerful programming technique, with a wide variety of appli...
This paper consists of a survey of current, and past, work on *program transformation* for the purpo...
We introduce AmiCo, a tool that extends a proof assistant, Isabelle/HOL, with flexible function defi...
Presented at the WPTE 2022 workshop (https://wpte2022.github.io), Haïfa, Israel, August 2022, whose ...
Coinduction is an important concept in functional programming. To formally prove properties of corec...
This paper presents a new approach to optimising corecursive pro-grams by factorisation. In particul...
Corecursive programs produce values of greatest fixpoint types, in contrast to recursive programs, w...
Recursion is a well-known and powerful programming technique, with a wide variety of applications. ...
peer-reviewedProofs involving infinite structures can use corecursive functions as inhabitants of a...
This paper presents a formalized framework for defining corecursive functions safely in a total sett...
International audienceThis paper presents a formalized framework for defining corecursive functions ...
Abstract datatypes — with public interfaces hiding private implementations — represent a form of cod...
We argue that abstract datatypes - with public interfaces hiding private implementations - represent...
This paper presents a formalized framework for defining corecursive functions safely in a total sett...
International audienceFunction uncurrying is an important optimization for the efficient execution o...
Abstract. Recursion is a well-known and powerful programming technique, with a wide variety of appli...
This paper consists of a survey of current, and past, work on *program transformation* for the purpo...
We introduce AmiCo, a tool that extends a proof assistant, Isabelle/HOL, with flexible function defi...
Presented at the WPTE 2022 workshop (https://wpte2022.github.io), Haïfa, Israel, August 2022, whose ...
Coinduction is an important concept in functional programming. To formally prove properties of corec...