An optimizing back end and intermediate representation for compilers of functional languages that are based on graph reduction (such as Haskell, Agda, or Idris).