## Typed λ Calculus Interpreter in Agda

In a recent meeting I talked to my assistants about using dependent type to guarantee that, in an evaluator for λ calculus using de Bruin indices, that variable look-up always succeeds.

Skip to content
# Research Blog

## Typed λ Calculus Interpreter in Agda

## Tail-Recursive, Linear-Time Fibonacci

## A Simple Exercise using the Modular Law

## Well-Foundedness and Reductivity

## Well-Founded Recursion and Accessibility

## Terminating Unfolds (2)

## Terminating Unfolds (1)

## Constructing List Homomorphism from Left and Right Folds

## S Combinator is Injective, with Proofs

## Deriving a Virtual Machine

In a recent meeting I talked to my assistants about using dependent type to guarantee that, in an evaluator for λ calculus using de Bruin indices, that variable look-up always succeeds.

How can I introduce accumulating parameters to derive the linear-time, tail recursive implementation of

Prove the following property in point-free style:

$S\; \subseteq \; C\; .\; S\; \Leftarrow \; R\; \subseteq \; C\; .\; R\; \wedge \; S\; \subseteq \; R$

It seems that reductivity of Doornbos and Backhouse is in fact accessibility, which is often taken by type theorists to be an alternative definition of well-foundedness.

Given a relation

After seeing our code, Nils Anders Danielsson suggested two improvements. Firstly, to wrap the bound in the seed. Secondly, to define `unfoldT↓`

using *well-founded recursion*.

I hope to come up with a variation of unfoldr which, given a proof of well-foundedness, somehow passes the termination check.

Back in 2003, my colleagues there were discussing about the third homomorphism theorem — if a function

By chance, I came upon a blog entry by Masahiro Sakai (酒井政裕) in which he, after reading my short comment “Do you know that the `S`

combinator is injective?”, tried to construct the inverse of `S`

and showed that `S⁻¹ ○ S = id`

in, guess what, Agda!

Given an interpreter of a small language, derive a virtual machine and a corresponding compiler