A data structure to track rewrites of subexpressions.
The field exp contains the new expression,
while proof contains a proof that exp is equivalent to the expression that was rewritten.
Postprocess a tracked rewrite into a pair of a rewritten expression and a proof witness of the rewrite.