ImProve is a lightweight DSL intended for building high assurance embedded applications. ImProve is a simple imperative language with variable assignments and conditional statements. ImProve assertions are formally verified using SMT model checking. For implementation and system simulation, ImProve compiles to C,
Simulink, and Modelica.
The ImProve compiler and language are implemented in Haskell.