Automatic abstract syntax tree modifications We overall introduced four automatic abstract syntax tree (AST) transformations Output tagging Let binding flattening Replace let binding with equality checks with predicate Introduction of extra constants Replace if with equality checks with predicate (implemented, but later dropped)