This module contains the implementation of the pre processing pass for handling enum inductive types.
The implementation:
- generates mappings from enum inductives occurring in the goal to sufficiently large
BitVecand replaces equality on the enum inductives with equality on these mapping functions. - Constant folds these mappings if appropriate.
- Adds bounds on the values returned by the mappings if the size of the enum inductive does not fit into a power of two.
- Handles applications of these mappings to
ite,condand basic match statements.