In this context, dynamic constraint checking includes software runtime checks (assertions that make checks over the correct behavior of the system) and hardware checks provided by some microprocessors, for example, memory protection provided by a Memory Management Unit (MMU).