Intrinsically-Typed Definitional Interpreters for Imperative Languages