Description
Maximal sharing of terms in the lambda calculus with letrec.
Description
Parses a lambda-letrec term; transforms it into a first-order term graph representation; minimises the graph by bisimulation collapse; reads back a lambda-letrec term which has the same unfolding as the original term but is more (maximally) compact. If executable "dot" from graphviz is available, the graphs are displayed (tested for Linux). The approach is described in an ICFP-paper http://dx.doi.org/10.1145/2628136.2628148 and an extended version thereof http://arxiv.org/abs/1401.1460.