Logique temporelle
# Logique temporelle

La logique temporelle est une branche de la logique mathématique et plus précisément de la logique modale, qui est formalisée de plusieurs manières. La caractéristique commune de ces formalisations réside en l'ajout de modalités (autrement dit de « transformateurs de prédicats ») liées au temps ; par exemple, une formule typique de la logique modale est la formule $\phi \mathrm {U} \psi$, qui se lit : « la formule $\phi$ est satisfaite jusqu'à ce que la formule $\psi$ le soit » et qui signifie que l'on cherche à garantir qu'une certaine propriété (ici $\phi$) est satisfaite pendant tout le temps qui court avant qu'une autre formule (ici $\psi$) le soit.

D'un point de vue sémantique, cela signifie que la notion de vérité dans ces logiques prend en compte l'évolution du monde. C'est-à-dire qu'une proposition peut être, à un moment, satisfaite, puis plus tard, ne plus l'être.

Plusieurs formalisations de la logique temporelle ont été décrites, prenant en compte diverses modalités de base.

La logique temporelle est très utilisée en vérification formelle, où la technique de base est essentiellement le model checking. On peut, par exemple, y exprimer le fait qu'un événement dangereux ne doit pas survenir tant qu'une certaine condition de sécurité n'est pas satisfaite.

## Définition

Dans cet article, seul est présenté le calcul des propositions temporel, autrement dit un calcul des propositions augmenté de modalités temporelles, qui sera néanmoins appelé « logique temporelle ».

Ces logiques sont définies sur un ensemble de propositions atomiques P ou variables de propositions. Ces propositions atomiques sont combinées par un certain nombre de connecteurs logiques, dont les connecteurs usuels : et, ou, non, implication, ainsi que d'autres opérateurs que l'on appelle des modalités. La logique temporelle est donc une logique modale. Dans le cas de la logique temporelle linéaire (LTL), on ajoute les modalités suivantes

* X : demain ou immédiatement après (à distinguer donc du don't care en logique classique noté aussi X) (la lettre X vient de l'anglais next : « suivant »)
* F : un jour (la lettre F vient de l'anglais finally : « finalement »)
* G : toujours (la lettre G vient de l'anglais globally : « globalement »)
* U : jusqu'à (la lettre U vient de l'anglais until de même sens)
* R : release (littéralement « relâcher »)

Une formule de logique des propositions classique, comme la formule (a et b) ou c sur l'ensemble de propositions P = {a, b, c}, associe une valeur de vérité, vrai ou faux, à chaque sous-ensemble de P. Par cette formule exemple, le sous-ensemble {a} (où a a la valeur vrai et b et c ont la valeur faux) rend la formule fausse, le sous-ensemble {b, c} la rend vraie.

Une formule de logique temporelle associe une valeur de vérité non pas à chaque partie de P, mais selon le type de logique, à chaque suite de parties de P ou à chaque arbre sur les parties de P. Une logique définie sur les suites est dite linéaire, tandis qu'une formule définie sur les arbres est dite branching logic ou logique à embranchements.

Prenons le cas des logiques linéaires. Une telle logique associe donc une valeur de vérité, vrai ou faux, à chaque suite $V=(V_{1},V_{2},\ldots )$ telle que chaque $V_{i}$ soit une partie de P. Notons M une telle formule, nous avons :

Intuitivement, si la suite V représente l'évolution dans le temps des différentes propositions de P, alors :

* X(f) est vraie maintenant si f est vraie à l'étape suivante ;
* F(f) est vraie maintenant si f est vraie à au moins une étape ultérieure y compris maintenant ;
* G(f) est vraie maintenant si f est vraie à toutes les étapes suivantes y compris maintenant ;
* $f_1$ U $f_2$ est vraie si, d'une part, $f_2$ est vraie plus tard ou maintenant et, d'autre part, $f_1$ est vraie (y compris) jusqu'à ce que $f_2$ soit vraie ;
* $f_1$ R $f_2$ est vraie si $f_2$ est vraie (y compris) jusqu'à ce que $f_1$ soit vraie ou si $f_2$ est tout le temps vraie.

On peut noter que les modalités U et R sont duales l'une de l'autre : $\left\{{\begin{aligned}\varphi \mathrm {U} \psi \equiv \lnot (\lnot \varphi \mathrm {R} \lnot \psi )\\\varphi \mathrm {R} \psi \equiv \lnot (\lnot \varphi \mathrm {U} \lnot \psi )\end{aligned}}\right.$

## Différentes logiques

Il existe différentes logiques temporelles, dont :

* CTL*, une logique arborescente ;
* Computation tree logic (en) (CTL), une logique arborescente incluse dans CTL* ;
* Logique temporelle linéaire (LTL), une logique linéaire incluse dans CTL* ;
* Metric Interval Temporal Logic (MITL) qui considère un temps continu et renvoie une valeur booléenne ;
* Signal Temporal Logic (STL) qui considère un temps continu et renvoie une valeur réelle
* Des logiques temporelles pour raisonner sur des intervalles de temps. On peut citer le travail de thèse de B. Moszkowski, la logique développée par Halpern et Shoham, ainsi que les résultats par Y. Venema.
