J'essaie de m'enseigner différentes approches de la vérification logicielle. J'ai lu quelques articles. Pour autant que je sache, la logique propositionnelle avec le temporel utilise généralement la vérification de modèle avec des solveurs SAT (dans les systèmes en cours - réactifs), mais qu'en est-il de la logique du premier ordre avec le temporel? Utilise-t-il des prouveurs de théorèmes? Ou peut-il également utiliser SAT?
Tout pointeur vers des livres ou des articles pour les débutants dans ce domaine est très apprécié.
Réponses:
La logique du premier ordre est indécidable, donc la résolution SAT n'aide pas vraiment. Cela dit, il existe des techniques de vérification des modèles bornés des formules du premier ordre. Cela signifie que seul un nombre fixe d'objets peut être pris en compte lorsque vous essayez de déterminer si la formule est vraie ou fausse. De toute évidence, ce n'est pas complet, mais si un contre-exemple est trouvé, alors c'est vraiment un contre-exemple.
L'outil Alloy est un outil qui permet de décrire les modèles dans une logique de premier ordre (bien que la syntaxe de surface soit basée sur des modèles décrits de manière relationnelle) et utilise la vérification des modèles bornés pour trouver des solutions. Un solveur SAT est utilisé sous le capot. Une extension d'alliage permet des modèles avec un caractère temporel, bien que techniquement elle ne supporte pas la logique temporelle.
Si vous souhaitez explorer davantage, par exemple, pour vérifier l'exactitude du programme, vous pouvez consulter les outils de vérification du programme. Celles-ci sont généralement basées sur la logique de Hoare (pour le raisonnement sur les pré- et post-conditions), éventuellement étendues avec la logique de séparation (pour le raisonnement sur les tas). Ces logiques sont généralement indécidables, une certaine interaction entre l'humain et l'outil de vérification est donc nécessaire. Voici quelques exemples d'outils:
la source
Après avoir lu votre question, la seule façon dont je pouvais voir et j'avais suffisamment de connaissances pour relier les sujets était de donner un ensemble d'articles de haut niveau qui descendaient de la vérification logicielle pour finir par essayer d'unir la vérification des modèles et la démonstration des théorèmes. J'espère que mon commentaire l'a fait:
Jetez un oeil à la vérification du logiciel puis vérification formelle puis modèle de vérification et du logiciel de vérification formelle: Modèle Vérification et théorème Proving
Dave a donné une bonne réponse pour laquelle je ne peux pas rendre beaucoup plus justice à la première partie de la question que Dave ne l’avait fait, car je suis également nouveau sur ce point.
Puisque c'est votre première question sur un site SE , la raison pour laquelle je n'ai pas donné de réponse mais un commentaire est parce qu'ici une réponse ne peut pas être juste un ensemble de liens, mais doit donner une réponse écrite et utiliser des liens à l'appui de la réponse; donc un commentaire au lieu d'une réponse.
En ce qui concerne:
Les livres que je suggérerais et utiliserais sont:
Logique en informatique - Modélisation et raisonnement sur les systèmes 2e éd. par Huth et Ryan Ceci introduit la logique et passe à la vérification des modèles, mais ne va pas dans la démonstration des théorèmes. Cela devrait donc couvrir toutes vos questions de base liées à la logique et à la vérification des modèles.
Principes de vérification des modèles par Baier et Katoen Je viens de commencer à lire celui-ci, et c'est bien mieux que de lire beaucoup de documents et d'essayer de voir comment ils s'imbriquent tous ensemble. C'est l'un des livres les plus, sinon le plus recommandé, sur le thème de la vérification des modèles. Il devrait répondre à vos questions plus avancées sur la vérification des modèles.
Logique temporelle et systèmes d'état de Kroger et Merz J'aime souvent avoir des livres d'auteurs différents lors de l'auto-apprentissage d'un sujet. Celui-ci est destiné à compléter / compléter les "Principes de vérification des modèles"
Manuel de logique pratique et de raisonnement automatisé par Harrison Étant programmeur, je ne peux pas recommander assez ce livre. Le livre commence par introduire la logique et avance jusqu'au point de créer le noyau d'un prouveur de théorème basé sur le travail de HOL Light . Juste pour souligner que le livre utilise du code OCaml fonctionnel, explique les théorèmes en termes que je trouve sympathiques et vous donne ce que vous devez savoir mais pas tellement que vous ne pouvez pas établir la connexion ou avoir l'impression de courir sur des pistes secondaires. Il s'agit d'un livre très concentré sur le passage de la logique à un type spécifique de prouveur de théorème.
Comment le prouver: une approche structurée de Velleman Pour entrer dans les assistants de preuve pour prouver le théorème, vous aurez besoin de vivre et de dormir les théorèmes.
Une introduction aux épreuves et au vernaculaire mathématique de jour C'est un livre gratuit qui non seulement complète "Comment le prouver", mais le dépasse en somme. Je ne serais pas surpris de voir celui-ci devenir populaire.
À l'heure actuelle, je ne peux pas m'étendre davantage sur la démonstration du théorème parce que j'apprends toujours les avantages et les inconvénients de chacun, mais ceux dans lesquels je me concentre sont
Isabelle car elle est basée sur une unification d'ordre supérieur.
Ces assistants de preuve ont également généralement des livres, sont à jour, populaires, open-source, maintenus et ont des communautés de support actives.
Remarque: J'ai utilisé worldcat.org pour référencer les livres, mais vous pouvez les consulter en utilisant la fonction de recherche à l'intérieur d'Amazon.
la source