type-preserving translation proof