Lifting E-Graphs: A Function Isn't a Constant
2026-06-22 • Programming Languages
Programming Languages
AI summaryⓘ
The authors present a method to handle variables carefully within a data structure called an e-graph, which is used for representing expressions. They introduce a special way to keep track of variables using enhanced identifiers combined with bitvectors to manage variable scopes. Their technique also includes smart ways to merge and manage these variables, inspired by previous methods like slotted e-graphs and Co-de Bruijn syntax. This approach aims to reduce mistakes related to variable handling in computational settings.
e-graphα-conversionvariable bindingbitvectorsunion-findslotted e-graphsCo-de Bruijn syntaxfunctional liftingthinning
Authors
Philip Zucker
Abstract
Variables are quite subtle and easy to get wrong. An approach is described to support rigid $α$ canonical variables in an e-graph. The lifting e-graph has a baked-in notion of functional lifting combinator. It is implemented by fattening the usual integer identifiers with thinning bitvectors, lift-pulling smart constructors, and a special thinning-aware union find variation. The approach is inspired by slotted e-graphs and Co-de Bruijn syntax.