prove that a type still has meaning after type substitution

reasonably long proof...
need the same thing for terms after type substitution, which might be
longer... although currently doing it for INST_CORE when doing it for
simple_inst may be all that's necessary. but the fiddly bit is dealing
with defined constants.