Cet article est la version v0 d'un article intégré et mis à jour dans Wikiversité
La logique contextuelle Lc est un formalisme logique de la famille de dicto . Proposée par Arnaud Kohler ([Koh95]), elle présente une sémantique non monotone respectant les règles monotones de production syntaxique de la logique propositionnelle.
Le terme a aussi été employé par Nicolas Gauvrit pour nommer un modèle de logique locale permettant d'élucider certains paradoxes de la logique naturelle [Gau01], et par Yvon Gauthier pour proposer une analogie avec les logiques internes [Gau91].
[Koh95] étudiait les conséquences de l'approche de dicto sur la syntaxe de la logique propositionnelle. Cet article étend son application à la fonction d'interprétation sémantique, en constatant que la somme c1 ⋃ c2 des croyances issues de 2 contextes c1 et c2 n'est pas l'ensemble des croyances issues du contexte c1 ∧ c2.
Les impacts de cette règle sur la modélisation et l'exploitation des informations incomplètes, incohérentes ou modales dans le cadre de la révision des croyances sont présentés ci-dessous.
La révision des croyances fait l'objet d'une littérature particulièrement riche. Quelques problèmes reviennent invariablement :
Plaçons-nous dans le cadre de la syntaxe de la logique propositionnelle, et considérons un ensemble contenant les connaissances suivantes :
1 → ( Oiseau → Voler )
2 → ( Oiseau → Herbivore )
3 → ( Oie → Oiseau )
4 → ( Autruche → Oiseau )
5 → ( Vautour → Oiseau )
La première formule, par exemple, se lit : Le signe 1 exprime que les oiseaux volent. Appelons un ensemble comme {1,2,3} un contexte, et une formule produite par un contexte une croyance. Par exemple, la croyance Les oies volent est produite par le contexte {1,3}.
Si on suppose que le contexte {1,2,3,4,5} est vrai, alors on déduit que les oies, les autruches et les vautours sont des oiseaux herbivores qui volent. Ce n'est pas tout à fait vrai. Notamment, les autruches ne volent pas. Modélisons cette nouvelle information :
1 → ( Oiseau → Voler )
2 → ( Oiseau → Herbivore )
3 → ( Oie → Oiseau )
4 → ( Autruche → Oiseau )
5 → ( Vautour → Oiseau )
6 → ( Autruche → ¬ Voler )
Le contexte {1,4,6} produit la croyance que les autruches volent et ne volent pas - donc, selon les règles syntaxiques de la logique propositionnelle, qu'elles ne sont pas. Faisons toutefois l'hypothèse que Autruche est vrai :
L'incohérence relevée sur {1,4,6} provient de 1 : en fait, tous les oiseaux ne volent pas. Pour modéliser cette nouvelle information, exprimons le fait que 1 est à la fois vrai et faux (parfois les oiseaux volent, et parfois ils ne volent pas) :
1 → ( Oiseau → Voler )
2 → ( Oiseau → Herbivore )
3 → ( Oie → Oiseau )
4 → ( Autruche → Oiseau )
5 → ( Vautour → Oiseau )
6 → ( Autruche → ¬ Voler )
1' → ( 1 )
2' → ( ¬ 1 )
1' et 2' expriment une méta connaissance (dans le sens d'une connaissance sur la connaissance) sur 1 et, indirectement, sur 4 et 6. Par convention de langage, nous dirons que les propositions 1, 2, 3, 4, 5 et 6 sont de rang 1, que 1' et 2' sont de rang 2, et que les propositions Oiseau, Voler, Herbivore, Oie, Autruche, etc., sont de rang 0.
1' et 2' suggèrent l'existence de 2 contextes d'interprétations, distinguant lorsque 1 est vrai et lorsque 1 est faux. Restons sur l'hypothèse que Autruche est vrai :
Chacun de ces contextes produit des croyances :
Ce petit exemple illustre le mécanisme de raisonnement de la logique contextuelle. Pour finaliser l'appropriation de Lc, étendons la base de connaissances, et décrivons les étapes de l'interprétation de différentes hypothèses. Ce travail, un peu fastidieux à lire, permettra de bien comprendre le mécanisme mis en oeuvre.
1 → ( Oiseau → Voler )
2 → ( Oiseau → Herbivore )
3 → ( Oie → Oiseau )
4 → ( Autruche → Oiseau )
5 → ( Vautour → Oiseau )
6 → ( Autruche → ¬ Voler )
7 → ( Vautour → Carnivore )
8 → ( Vautour → ¬ Herbivore )
9 → ( Autruche → ¬ Oie )
10 → ( Autruche → ¬ Vautour )
11 → (Oie → ¬ Vautour )
1' → ( 1 )
2' → ( ¬ 1 )
3' → ( 2 )
4' → ( ¬ 2 )
7 et 8 indiquent que les vautours ne sont pas des herbivores, mais des carnivores. 3' et 4' indiquent que 2 n'est pas toujours vrai (tous les oiseaux ne sont pas des herbivores). Enfin, 9, 10 et 11 indiquent que les autruches ne sont ni des oies ni des vautours, et que les oies ne sont pas des vautours. Interprétons ces données selon plusieurs hypothèses.
⇒ Les autruches sont des oiseaux, ce ne sont ni des oies ni des vautours, elles sont herbivores et elles ne volent pas.
⇒ Les vautours sont des oiseaux, ce ne sont ni des oies ne des autruches, ils sont carnivores, non herbivores, et ils volent.
⇒ Les oies sont des oiseaux, ce ne sont ni des autruches ni des vautours, elles sont herbivores et elles volent.
⇒ L'oiseau vole, il est herbivore, et il n'est ni une autruche ni un vautour.
⇒ Autruche n'est pas et Vautour n'est pas.
Pour chaque hypothèse, on obtient l'ensemble cohérent et complet des croyances qu'il est possible de produire à partir de l'ensemble des connaissances.
Remarque : les oies ont elles aussi des particularités : si certaines volent, d'autres ne volent pas. Si on modélisait cette exception dans la base de donnée, on obtiendrait l'interprétation suivante : Autruche n'est pas et Vautour n'est pas et Oie n'est pas. Dans la mesure où il n'existe probablement pas de règle sans exception, on peut supposer que c'est la confrontation à une réalité - ou une hypothèse - qui déclenche les mécanismes de raisonnement. A défaut de confrontation, la logique contextuelle conclue que rien est - hors les principes aristotélicien, qui sont vrais dans tous les contextes et quelque soit l'hypothèse.
Le mécanisme présenté propose bien une solution aux différents problèmes soulevés par la révision des croyances :
2 principes semblent ressortir de cet exemple :
En fait, le premier principe induit le second. En effet, le fait que la somme c1 ⋃ c2 des croyances issues de 2 contextes c1 et c2 n'est pas l'ensemble des croyances issues du contexte c1 ∧ c2 est aussi une conséquence de l'approche de dicto : c1 ∧ c2 est une formule du langage, et de dicto affirme que le sens ne doit pas être porté par les formules. Cette remarque, et ces impacts dans le formalisme de Lc, est l'apport de ce document aux réflexions présentées par Arnaud Kohler dans [Koh95].
Les mécanismes présentés dans ce paragraphe sont donc issus d'une application stricte de l'approche de dicto. Il convient maintenant de construire le cadre formel.
Les formalismes logiques peuvent être regroupés en deux familles, d'une part la conception de re, pour laquelle Les prédicats se rapportent à la nature de la chose dont on parle, et d'autre part la conception de dicto, pour laquelle Les prédicats déterminent la nature du dictum, de la proposition qui est dite.
En conception de re, un état de chose et son expression sont supposés liés, dans le langage, par une relation d'équivalence. L'approche de dicto propose une interprétation différente. Selon elle, un tableau peint peut être décrit par un ensemble de phrases, mais il n'y a pas d'équivalence entre le tableau et l'ensemble des formules du langage qui le représente : quand bien même la description serait idéalement complète et parfaite, elle n'est pas le tableau initial.
L'approche de dicto suppose donc que le tableau, d'une part, et les formules qui le représentent, d'autre part, doivent être distingués dans le langage. Pour formaliser ce postulat, la logique contextuelle propose une relation entre la syntaxe (les combinaisons des symboles utilisées pour modéliser le langage) et la sémantique (l'interprétation que le formalisme propose de ces combinaisons) :
Soit L un langage muni de la règle d'interprétation sémantique ⊨L. Soit c un état, et f la formule qui décrit c dans L. Alors :
- c est une proposition élémentaire de L,
- la relation dans L entre c et f est donnée par : c ⊨L f.
Selon cet énoncé, l'agent ne mémorise ni l'état c ni sa modélisation f : il mémorise la connaissance qu'il a de modéliser c par f. Cette approche rejoint L. Wittgenstein, qui affirme [Wit] : Nous ne devons pas dire : Le signe complexe aRb dit que a se trouve dans la relation R avec b, mais : Que a se trouve dans une certaine relation R avec b dit que aRb.
Le langage de Lc est celui de la logique propositionnelle Lp. Les connecteurs de négation, de disjonction, de conjonction, d'implication, et d'équivalence, sont notés respectivement ¬, ∨, ∧, → et ↔. Lc utilise les symboles classiques de parenthèses.
L'ensemble infini dénombrable des propositions atomiques p est noté PLc. Il est décomposé en une infinité d'ensembles infinis dénombrables disjoints de propositions atomiques, notés PLci, pour i un nombre entier. i est appelé le rang de p dans Lc. p est noté pi.
Par convention, PLc0 est considéré comme étant l'ensemble des propositions atomiques de PLp.
La syntaxe de Lc est celle de la logique propositionnelle Lp. La règle d'inférence valide de Lc est celle de Lp, notée ⊢Lp.
Une formule contextuelle est une formule de la forme pi+1 → f i telle que :
L'ensemble des formules contextuelles, noté WLc, forme l'ensemble des formules biens formées de Lc.
Lc propose des définitions formelles pour les termes connaissance, contexte, hypothèse et croyance :
On déduit facilement :
La sémantique de Lc étend la sémantique de Lp en définissant une fonction de méta interprétation des croyances. Soient :
La sémantique de Lc profite des propriétés de Lp pour garantir son adéquation et sa complétude.
La sémantique de Lc ne propose pas de solution pour déterminer, parmi l'ensemble des contextes possibles, ceux qu'il faut retenir comme contextes de référence. Cette omission est volontaire : pour Lc, ce choix, déterminant, est supposé complètement lié aux propriétés du raisonnement qu'on souhaite modéliser.
La définition retenue pour présenter l'exemple au paragraphe précédent exploite l'idée que les propositions de rang i expriment une méta connaissance sur les contextes de rang inférieur. Un contexte crédible privilégie donc les propositions du plus haut rang i, puis les propositions du rang i-1, etc., jusqu'au rang 1 (un contexte ne contenant pas de proposition atomique de rang 0). Il se construit de la manière suivante :
Soit i le plus haut des rangs dans l'ensemble des connaissances :
- ci est tel que :
- il n'est pas un contexte faux dans {∅ , E ∧ H , ∅},
- il ne contient que des propositions de rang i,
- son extension par une proposition atomique de rang i le rend faux dans {∅ , E ∧ H , ∅},
- pour 2 ≤ j ≤ i, cj-1 = cj ∧ cj-1' tel que :
- cj-1 n'est pas un contexte faux dans {∅ , E ∧ H , ∅},
- cj-1' ne contient que des propositions de rang j-1,
- il n'est pas en intersection avec un contexte faux minimal dans {∅ , E ∧ H ∧ cj , ∅} qui ne contient que des propositions de rang j-1.
Cette définition est constructive, et les différents contextes peuvent être construits indépendamment les uns des autres. Cette remarque est utile pour optimiser des algorithmes de production de preuve, en cherchant à construire uniquement le contexte crédible répondant à la question posée.
La logique contextuelle ouvre les questions suivantes :