DeepAI AI Chat
Log In Sign Up

Classical (Co)Recursion: Mechanics

by   Paul Downen, et al.

Primitive recursion is a mature, well-understood topic in the theory and practice of programming. Yet its dual, primitive corecursion, is underappreciated and still seen as exotic. We aim to put them both on equal footing by giving a foundation for primitive corecursion based on computation, giving a terminating calculus analogous to the original computational foundation of recursion. We show how the implementation details in an abstract machine strengthens their connection, syntactically deriving corecursion from recursion via logical duality. We also observe the impact of evaluation strategy on the computational complexity of primitive (co)recursive combinators: call-by-name allows for more efficient recursion, but call-by-value allows for more efficient corecursion.


page 1

page 2

page 3

page 4


A Symmetric Lambda-Calculus Corresponding to the Negation-Free Bilateral Natural Deduction

Filinski constructed a symmetric lambda-calculus consisting of expressio...

Primitive Recursive Ordered Fields and Some Applications

We establish primitive recursive versions of some known facts about comp...

Extraction of Efficient Programs in IΣ_1-arithmetic

Clausal Language (CL) is a declarative programming and verifying system ...

Two Guarded Recursive Powerdomains for Applicative Simulation

Clocked Cubical Type Theory is a new type theory combining the power of ...

Cost-Aware Type Theory

Although computational complexity is a fundamental aspect of program beh...

Quantum Look at two Common Logics: the Logic of Primitive Thinking and the Logic of Everyday Human Reasoning

Based on ideas of quantum theory of open systems and psychological dual ...

A linear complexity analysis of quadratic residues and primitive roots spacings

We investigate the linear complexities of the periodic 0-1 infinite sequ...