toward non-shared exps
collect root types in seq to support duplicates
support weakly shared expressions: sharing in Exp trees leads to sharing in table; replaceWith searches for sharing opportunities to minimize diff