¿Se puede aplicar la verificación formal a cualquier tipo de software, o solo son aplicables ciertos tipos?

Cualquier software puede ser verificado formalmente, pero es un trabajo duro. Es por eso que rara vez se hace.

No fue hasta hace poco que los flujos no deterministas se pudieron modelar correctamente, pero desde entonces se ha ordenado. Aun así, es muy difícil. Es por eso que SEL4 no tiene redes. Debido a que puede usar grupos para datos dinámicos, puede probar que el software es correcto (ya que el entorno no cambia durante una ejecución), pero es tan difícil que toda la verificación en la práctica está en objetos de datos estáticos.

La verificación formal es más fácil cuando el software fue diseñado con eso en mente. Las condiciones bien definidas en puntos bien definidos significan que puede resumir el cambio de estado entre esos puntos y ver si la suma más el inicio es igual al final. Las personas sensatas hacen esto con los verificadores de software, las personas locas lo hacen a la antigua usanza en papel. El método antiguo toma aproximadamente un día por cada diez líneas.