scholarly journals Structural Induction Principles for Functional Programmers

2013 ◽  
Vol 136 ◽  
pp. 16-26 ◽  
Author(s):  
James Caldwell
Keyword(s):  

2004 ◽  
Vol 270 (1-2) ◽  
pp. 192-196 ◽  
Author(s):  
Xiaopeng Hao ◽  
Jie Zhan ◽  
Wei Fang ◽  
Deliang Cui ◽  
Xiangang Xu ◽  
...  


1998 ◽  
Vol 145 (2) ◽  
pp. 107-152 ◽  
Author(s):  
Claudio Hermida ◽  
Bart Jacobs
Keyword(s):  


2011 ◽  
Vol 209 (9) ◽  
pp. 1197-1222 ◽  
Author(s):  
Răzvan Diaconescu
Keyword(s):  


1993 ◽  
Vol 33 (4) ◽  
pp. 596-618
Author(s):  
Olav Lysne
Keyword(s):  


1969 ◽  
Vol 12 (1) ◽  
pp. 41-48 ◽  
Author(s):  
R. M. Burstall
Keyword(s):  


2002 ◽  
Vol 9 (2) ◽  
Author(s):  
Lasse R. Nielsen

We build on Danvy and Nielsen's first-order program transformation into continuation-passing style (CPS) to present a new correctness proof of the converse transformation, i.e., a one-pass transformation from CPS back to direct style. Previously published proofs were based on, e.g., a one-pass higher-order CPS transformation, and were complicated by having to reason about higher-order functions. In contrast, this work is based on a one-pass CPS transformation that is both compositional and first-order, and therefore the proof simply proceeds by structural induction on syntax.





2001 ◽  
Vol 8 (49) ◽  
Author(s):  
Olivier Danvy ◽  
Lasse R. Nielsen

We present a new transformation of call-by-value lambda-terms into continuation-passing style (CPS). This transformation operates in one pass and is both compositional and first-order. Because it operates in one pass, it directly yields compact CPS programs that are comparable to what one would write by hand. Because it is compositional, it allows proofs by structural induction. Because it is first-order, reasoning about it does not require the use of a logical relation.<br /> <br />This new CPS transformation connects two separate lines of research. It has already been used to state a new and simpler correctness proof of a direct-style transformation, and to develop a new and simpler CPS transformation of control-flow information.



Author(s):  
Patricia Johann ◽  
Andrew Polonsky

AbstractThis paper introduces deep induction, and shows that it is the notion of induction most appropriate to nested types and other data types defined over, or mutually recursively with, (other) such types. Standard induction rules induct over only the top-level structure of data, leaving any data internal to the top-level structure untouched. By contrast, deep induction rules induct over all of the structured data present. We give a grammar generating a robust class of nested types (and thus ADTs), and develop a fundamental theory of deep induction for them using their recently defined semantics as fixed points of accessible functors on locally presentable categories. We then use our theory to derive deep induction rules for some common ADTs and nested types, and show how these rules specialize to give the standard structural induction rules for these types. We also show how deep induction specializes to solve the long-standing problem of deriving principled and practically useful structural induction rules for bushes and other truly nested types. Overall, deep induction opens the way to making induction principles appropriate to richly structured data types available in programming languages and proof assistants. Agda implementations of our development and examples, including two extended case studies, are available.



Author(s):  
Athanassios Protopapas ◽  
Steven A. Finney ◽  
Peter D. Eimas


Sign in / Sign up

Export Citation Format

Share Document