- Simply Typed Lambda Calculus
- Term representation using Nested Datatypes
- Legacy: Type-Level de Bruijn indices (unnecessarily difficult approach)
- Delimited-Control Operators shift0/dollar:
- Introduction : Delimited Control
- Contribution:
- Formalize
λ$calculus with its evaluation strategy - Introduce an evaluation strategy for
λc$(a fine-grained version ofλ$) - Define similarity relations to prove correspondance between both calculi in a form of simulations which state that: similar terms compute to similar values
- Formalize
λ$calculus (paper reference: section 2.2)λc$calculus: a Fine-Grained version ofλ$(paper reference: Figure 1)- Correspondence between
λ$andλc$:
Create Makefile with coq_makefile -f _CoqProject *.v -o Makefile
- Examine the potential of supporting the
control0operator for the current evaluation strategy - Develop the alternative evaluation strategy - the hybrid (reduces differently when under the delimiter) one that aggressively duplicates
$- Simplify both calculi to the most common format to showcase the fine-grained difference - single term-tree
tm A, two different reductions - Remove call-by-value nature from both, let let-bindings do the rest
- Explore a different similarity relation strategy - instead of substituting similar terms try to work on common skeletons (
tm A) with a substitution (A → val) of similar values
- Simplify both calculi to the most common format to showcase the fine-grained difference - single term-tree