je regarde les exigences de vérification du logiciel automatisé, soit un programme qui prend en code (code de procédure ordinaire écrite dans des langues comme C et Java), génère un tas de théorèmes en disant que chaque boucle doit éventuellement stop, aucune assertion ne sera violée, il n'y aura jamais de déréférencement d'un pointeur nul etc., puis il passera à un prouveur de théorème pour prouver qu'il est réellement vrai (ou alors trouver un contre-exemple indiquant un bug dans le code).Logic pour la vérification du logiciel
La question est quel genre de logique à utiliser. Les deux positions principales semblent être:
La logique du premier ordre est très bien.
logique du premier ordre ne suffit pas d'expression, vous avez besoin d'une logique d'ordre supérieur.
Le problème est qu'il semble y avoir beaucoup de support pour les deux positions. Alors, lequel a raison? Si c'est le second, y a-t-il des exemples de choses que vous voulez faire, que les vérificateurs basés sur la logique du premier ordre ont des problèmes?