Log In Sign Up

Recurrence extraction and denotational semantics with recursive definitions

by   Norman Danner, et al.

With one exception, our previous work on recurrence extraction and denotational semantics has focused on a source language that supports inductive types and structural recursion. The exception handles general recursion via an initial translation into call-by-push-value. In this note we give an extraction function from a language with general recursive function definitions and recursive types directly to a PCF-like recurrence language. We prove the main soundness result (that the syntactic recurrences in fact bound the operational cost) without the use of a logical relation, thereby significantly simplifying the proof compared to our previous work (at the cost of placing more demands on the models of the recurrence language). We then define two models of the recurrence language, one for analyzing merge sort, and another for analyzing quick sort, as case studies to understand model definitions for justifying the extracted recurrences.


page 4

page 9

page 17

page 18

page 27


Denotational recurrence extraction for amortized analysis

A typical way of analyzing the time complexity of functional programs is...

A right-to-left type system for mutually-recursive value definitions

In call-by-value languages, some mutually-recursive value definitions ca...

Constructing Infinitary Quotient-Inductive Types

This paper introduces an expressive class of quotient-inductive types, c...

Evolving Recursive Definitions with Applications to Dynamic Programming

Inspired by computability logic<cit.>, we refine recursive function defi...

Polarized Subtyping

Polarization of types in call-by-push-value naturally leads to the separ...

let (rec) insertion without Effects, Lights or Magic

Let insertion in program generation is producing code with definitions (...

On Kinds of Indiscernibility in Logic and Metaphysics

Using the Hilbert-Bernays account as a spring-board, we first define fou...