Méthode formelle (informatique)En informatique, les méthodes formelles sont des techniques permettant de raisonner rigoureusement, à l'aide de logique mathématique, sur un programme informatique ou du matériel électronique numérique, afin de démontrer leur validité par rapport à une certaine spécification. Elles reposent sur les sémantiques des programmes, c'est-à-dire sur des descriptions mathématiques formelles du sens d'un programme donné par son code source (ou, parfois, son code objet).
Analyse statique de programmesEn informatique, la notion d’analyse statique de programmes couvre une variété de méthodes utilisées pour obtenir des informations sur le comportement d'un programme lors de son exécution sans réellement l'exécuter. C'est cette dernière restriction qui distingue l'analyse statique des analyses dynamiques (comme le débugage ou le profiling) qui s'attachent, elles, au suivi de l’exécution du programme. L’analyse statique est utilisée pour repérer des erreurs formelles de programmation ou de conception et pour déterminer la facilité ou la difficulté à maintenir le code.
Formal specificationIn computer science, formal specifications are mathematically based techniques whose purpose are to help with the implementation of systems and software. They are used to describe a system, to analyze its behavior, and to aid in its design by verifying key properties of interest through rigorous and effective reasoning tools. These specifications are formal in the sense that they have a syntax, their semantics fall within one domain, and they are able to be used to infer useful information.
Théorie des modèlesLa théorie des modèles est une branche de la logique mathématique qui traite de la construction et de la classification des structures. Elle définit en particulier les modèles des théories axiomatiques, l'objectif étant d'interpréter les structures syntaxiques (termes, formules, démonstrations...) dans des structures mathématiques (ensemble des entiers naturels, groupes, univers...) de façon à leur associer des concepts de nature sémantique (comme le sens ou la vérité).
Théorie des jeuxLa théorie des jeux est un domaine des mathématiques qui propose une description formelle d'interactions stratégiques entre agents (appelés « joueurs »). Les fondements mathématiques de la théorie moderne des jeux sont décrits autour des années 1920 par Ernst Zermelo dans l'article , et par Émile Borel dans l'article . Ces idées sont ensuite développées par Oskar Morgenstern et John von Neumann en 1944 dans leur ouvrage qui est considéré comme le fondement de la théorie des jeux moderne.
Équilibre de Nashvignette|Le dilemme du prisonnier : chacun des deux joueurs dispose de deux stratégies : D pour dénoncer, C pour ne pas dénoncer. La matrice présente le gain des joueurs. Si les deux joueurs choisissent D (se dénoncent), aucun ne regrette son choix, car s'il avait choisi C, alors que l'autre a opté pour D, sa « tristesse » aurait augmenté. C'est un équilibre de Nash — il y a « non-regret » de son choix par chacun, au vu du choix de l'autre.
Langage formelUn langage formel, en mathématiques, en informatique et en linguistique, est un ensemble de mots. L'alphabet d'un langage formel est l'ensemble des symboles, lettres ou lexèmes qui servent à construire les mots du langage ; souvent, on suppose que cet alphabet est fini. La théorie des langages formels a pour objectif de décrire les langages formels. Les mots sont des suites d'éléments de cet alphabet ; les mots qui appartiennent à un langage formel particulier sont parfois appelés mots bien formés ou formules bien formées.
Système formelUn système formel est une modélisation mathématique d'un langage en général spécialisé. Les éléments linguistiques, mots, phrases, discours, etc., sont représentés par des objets finis (entiers, suites, arbres ou graphes finis...). Le propre d'un système formel est que la correction au sens grammatical de ses éléments est vérifiable algorithmiquement, c'est-à-dire que ceux-ci forment un ensemble récursif.
Jeu coopératif (théorie des jeux)En théorie des jeux, un jeu coopératif est un jeu tel que les joueurs ont la possibilité de se concerter et de s'engager à coopérer avant de définir la stratégie à adopter. À deux joueurs et deux stratégies avec une matrice des gains de la forme : où , , et . Des joueurs rationnels vont coopérer sur l'une ou l'autre des stratégies et recevoir les gains élevés. Pour ce faire, ils doivent pouvoir se coordonner sur l'une ou l'autre des stratégies, sous peine de se retrouver dans une situation défavorable.
Program analysisIn computer science, program analysis is the process of automatically analyzing the behavior of computer programs regarding a property such as correctness, robustness, safety and liveness. Program analysis focuses on two major areas: program optimization and program correctness. The first focuses on improving the program’s performance while reducing the resource usage while the latter focuses on ensuring that the program does what it is supposed to do.