This module provides a simple common subexpression elimination (CSE)
algorithm. The main goal right now is to move duplicate
expressions introduced during autosearch (which includes
interface resolution) to the top level.
Reading and writing 'Defs' from/to a binary file. In order to be saved, a
name must have been flagged using 'toSave'. (Otherwise we'd save out
everything, not just the things in the current file).
Slightly different lexer than the source language because we are more free
as to what can be identifiers, and fewer tokens are supported. But otherwise,
we can reuse the standard stuff
Specialized implementation of an interval map with finger trees [1].
This data structure is meant to get efficiently data with a correlated NonEmptyFC.
The element data type must implement the `Measure` interface. An implementation
is provided already for NonEmptyFC and tuples with NonEmptyFC as first element.