Optimizations for datatypes theory.  There seems to be a bug in trans_closure, currently implemented a work around.