Attention: post théorique. P-e plus adapté dans autre savoir ?
Bonjour à tous,
Je me permets de venir vers la communauté car je suis franchement assez perdu.
Je travaille avec une logique formelle F qui est une extension temporelle de la logique du premier ordre (c’est grosso-merdo FOL avec en plus quelques prédicats un peu spéciaux). J’ai donc des variables quantifiées dans mes formules.
Exemple ($P,Q$ sont des prédicats, éventuellement spéciaux): $\forall x (P(x) \implies \exists y Q(y))$
Pour cette logique, j’ai sa sémantique, qui est définie sur une certaine gamme de structure d’interprétation avec un ensemble de règles de satisfactions. J’ai en particulier un ensemble $D$ de valeur que peuvent prendre les variables quantifiée et la valeur des prédicats. Par exemple dans $M$, j’ai $D=\{a,b\}$ et $P(a)$ et $Q(b)$ sont vrais, $P(b)$ et $Q(a)$ sont faux. alors me permet de dire que cette formule $f$ est vraie sur $M$
Jusque là rien que du très classique si vous avez fait un peu de logique.
Je cherche à définir un algo de model-checking pour cette logique. Autrement dit, étant donnée une formule $f$, une instance $M$ d’une structure d’interprétation, est ce que $ M \models f$. Ca revient (là encore grosso merdo), à énumérer toutes les valeurs possibles de $D$ pour chacune des variables quantifiées.
Contrainte supplémentaires, je souhaite le faire via un système de ré-écriture. L’idée, c’est d’exprimer mon problème de model checking via les ré-écriture de sorte que la terminaison de l’algo soit prouvée par la terminaison du système de ré-écriture et que sa correction le soit par la confluence du système (et la correction des règles vis à vis de la sémantique donnée).
Et c’est à partir de là que je suis perdu (la ré-écriture n’est pas du tout, mais pas du tout dans mon domaine de compétence).
Illustration de ce à quoi je souhaite arriver exprimer formellement avec des ré-écriture: $ \forall x (P(x) \implies \exists y Q(y)) $ se récrit en $ \forall x \in \{a,b\} (P(x) \implies \exists y Q(y)) $ qui se ré-écrit en $ (P(a) \implies \exists y Q(y)) \land (\forall x \in \{b\} (P(x) \implies \exists y Q(y))) $ qui se ré-écrit en $ ( \top \implies \exists y Q(y)) \land (\forall x \in \{b\} (P(x) \implies \exists y Q(y))) $ qui se ré-écrit en $ ( \exists y Q(y)) \land (\forall x \in \{b\} (P(x) \implies \exists y Q(y))) $ etc…
Expliqué comme ca, ca ne semble pas trop sorcier.
J’ai, à mes yeux, plusieurs contraintes qui rendent la tâche assez difficile:
- J’ai besoin d’intégrer les valeurs du domaine à mon système de ré-écriture. C’est le plus simple à régler, celles sont considérées comme des constantes et voilà.
- Le système de ré-écriture doit être/devrait être/est conditionnel avec une dépendance sémantique à la structure d’interpretation. Traduction sur l’exemple. Si le modèle $M$ me dit que $P(a)$ est vrai, alors je vais ré-écrire $P(a)$ en $\top$, sinon en $\bot$
- J’ai des variables liées. Cette dépendance m’a orienté vers les systèmes d’ordre supérieur mais qui sont bien un cran au dessus des système de ré-écriture de terme et j’ai beaucoup de mal à comprendre.
Et c’est là que je me tourne vers vous, car j’ai plusieurs questions
- Connaissez vous un système clé en main qui réponde à mes besoins ?
- Pensez vous que l’ordre supérieur soit nécessaire ? Des gens m’ont dit que non sans vraiment m’expliquer pourquoi ?
- S’il n’existe rien, connaissez vous des articles qui présentent des choses proches de ce que je cherche à faire ? En particulier, je n’ai rie trouvé pour la dépendance sémantique. Tous les systèmes conditionnels que j’ai pu trouver ont des contraintes non sémantiques (pas de meilleur mot) de la forme u = v => s -> t (s se récrit en t si u et v sont unifiables ou si on peut ré-écrire u en v par exemple).
Toute réponse est la bienvenue.
Merci beaucoup, David.