Traduction logique et résolution de problèmes

Traduction logique et résolution de problèmes

Les solveurs pour les logiques classiques 

SAT : satisfaction de formules booléennes

 Le problème de satisfiabilité de formules booléennes (SAT) est connu comme étant le problème de référence pour la classe de complexité NP [Coo71]. Etant donné une formule propositionnelle en forme normale conjonctive (FNC), le problème SAT consiste à déterminer s’il existe un modèle de cette formule, c’est à dire une valuation pour chacune des variables de la formule qui rende vraie la formule. Par exemple, si nous prenons un ensemble de variables propositionnelles {a, b, c} et la formule Φ = (a ∨ b) ∧ (¬a ∨ b ∨ c) ∧ (¬a ∨ ¬b ∨ ¬c), nous pouvons remarquer que Φ est satisfiable. En effet, il suffit que les variables a et b aient la valeur vrai (>) et la variable c ait la valeur faux (⊥), ce qui nous donne un modèle de Φ. Il est possible, comme nous le verrons dans le chapitre 2, d’encoder de nombreux problèmes pour se ramener, pour les résoudre, à un problème de satisfiabilité de formule propositionnelle. 

SMT :SAT Modulo Theories 

Certains problèmes combinatoires nécessitent néanmoins de traiter des calculs sur les nombre naturels ou réels. Ceci peut être fait en utilisant seulement la logique propositionnelle (par exemple, 2 + 3 = 5 pourrait être codé par add2,3,5), mais c’est très inconfortable à moins qu’il n’y ait que quelques additions à faire. Ne parlons même pas des opérations de multiplication ou plus complexes. Le langage propositionnel de SAT a ainsi été étendu via SAT Modulo Theories (SMT) [NOT06]. Une instance SMT est composée d’une formule du premier ordre F qui peut  inclure des symboles de constantes, de prédicats et de fonctions, ainsi que d’une théorie T qui définit la sémantique des symboles. La question est : est-ce que F est satisfiable, sous réserve des interprétations des symboles imposées par T? Le langage SMT-LIB [BFT16] a été développé pour décrire des problèmes SMT. De nombreux solveurs existent aujourd’hui pour résoudre des problèmes pour différentes théories T comme la différence logique, l’arithmétique linéaire, les tableaux et les fonctions réelles non linéaires. Dans le cas de la combinaison du solveur SAT avec un solveur arithmétique, le but sera d’améliorer le traitement de la partie arithmétique du raisonnement. Dans de nombreux cas, ceci n’améliorera pas seulement l’efficacité du solveur, mais permettra aussi d’exprimer les contraintes arithmétiques des problèmes d’une manière radicalement plus compacte. Considérons le jeu de Kamaji 1 où le joueur doit grouper des nombres adjacents dans une grille de sorte que leur somme soit égale à un nombre fixe. Résoudre le jeu nécessite essentiellement un raisonnement logique mais a aussi besoin d’un peu d’arithmétique (addition). Si xi,j pour chaque case (i, j) est un entier et G(i, j, i, k) représente le fait que les cases (i, j) à (i, k) de la ligne i forment un groupe, la contrainte de somme pourrait être exprimée par : X m∈E xi,m = N où N est le nombre fixe et E est {j, j + 1, . . . , k}. La logique propositionnelle pure n’est certainement pas adaptée pour de telles phrases !

 QBF : formules booléennes quantifiées 

Quantified Boolean Formula (QBF) est connu comme étant le problème de référence pour la classe de complexité PSPACE ([SM73]). C’est une extension de la logique propositionnelle permettant de quantifier sur les variables propositionnelles. Par exemple, ∀p∃q.p ↔ q se lit : pour toute valeur de vérité de p, il existe une valeur de vérité de q tel que p ↔ q est vrai. Cette formule est vraie (il suffit de choisir la même valeur pour q que pour p). Alors que ∃p∀q.p ↔ q ne l’est pas. Ainsi, une formule booléenne quantifiée est toujours SOIT vraie SOIT fausse. De fait, à toute formule QBF peut être associée une formule propositionnelle sans variables car par définition : ∀p.Φ est vraie ssi Φ[p:=>] ∧ Φ[p:=⊥] l’est, et ∃p.Φ est vraie ssi Φ[p:=>] ∨ Φ[p:=⊥] est vraie. La formule QBF peut être exponentiellement plus compacte que la formule propositionnelle correspondante.

 La planification par compilation automatique

 En Intelligence Artificielle, la planification est un processus cognitif qui consiste à générer automatiquement, au travers d’une procédure formelle, un résultat articulé sous la forme d’un système de décision intégré appelé plan. Le plan est généralement sous la forme d’une collection organisée d’actions et il doit permettre à l’univers d’évoluer de l’état initial à un état qui satisfait le but. Dans le cadre classique, le plus restrictif, on considère les actions comme des transitions instantanées sans prendre en compte le temps. Dans le cadre temporel, on considère que les actions ont une durée d’exécution et que les événements associés aux actions ne sont plus instantanés mais peuvent avoir lieu à différents instants liés par des contraintes inhérentes aux actions. Une des approches algorithmiques pour la synthèse de plans est la compilation automatique (c’est-à-dire, la transformation) de problèmes de planification. Dans le planificateur SATPLAN [KS92], un problème de planification est compilé en une formule propositionnelle dont les modèles, correspondant aux plans-solutions, peuvent être trouvés en utilisant un solveur SAT. L’approche SAT recherche un plan solution de longueur fixe k. En cas d’échec cette longueur est augmentée avant de relancer la recherche d’une solution. Dans le cadre classique, décider s’il existe une solution est PSPACE-complet, mais la décision de l’existence d’une solution de taille polynomiale par rapport à la taille du problème est NPcomplete [Byl94]. Cette approche par compilation bénéficie directement des améliorations des solveurs SAT 2 . L’exemple le plus marquant est le planificateur BLACKBOX [KS98; KS99] (et ses successeurs SATPLAN’04 [Kau04] et SATPLAN’06 [KSH06]). Ces planificateurs ont obtenu la première place dans la catégorie planificateur optimal (en termes de nombre d’étapes du plan) des compétitions internationales de planification 3 IPC-2004 et IPC-2006. Ce résultat était inattendu car ces planificateurs étaient essentiellement des mises à jour de BLACKBOX et n’incluaient aucune réelle nouveauté : l’amélioration des performances était principalement due aux progrès du solveur SAT sous-jacent. De nombreuses améliorations de cette approche originale ont été proposées depuis lors, notamment via le développement de codages plus compacts et plus efficaces [KS96 ; EMW97; MK98; MK99; Rin03; RHN04; RHN06; Rin+08]. Suite à ces travaux, de nombreuses autres techniques similaires pour le codage de problèmes de planification ont été développées : Programmation Linéaire (LP) [WW99], Problèmes de Satisfaction de Contraintes (CSP) [DK01], SAT Modulo Theories (SMT) [SD05; MR08; Rina]. Plus récemment, une approche QBF (Quantified Boolean Formulas) a été proposée par [Rin07 ; CFG12] et nous avons proposé de nouveaux codages QBF dans [Gas+18]. 

Table des matières

1 Introduction
1.1 Introduction générale au domaine
1.2 Le cadre de travail
1.2.1 Les solveurs pour les logiques classiques
1.2.2 La planification par compilation automatique
1.3 Présentation de la thèse
2 Codages logiques de problèmes et traduction automatique avec TouIST
2.1 Historique de TouIST
2.1.1 Genèse de SAToulouse
2.1.2 Limites de SAToulouse et genèse de TouIST
2.1.3 Vue d’ensemble de TouIST
2.2 Introduction des fonctionnalités du langage TouIST
2.2.1 Résolution de problèmes simples avec SAT
2.2.2 Traitement des aspects dynamiques : le jeu de Nim
2.2.3 Formalisation d’une stratégie gagnante à l’aide de QBF
2.2.4 Arithmétique linéaire avec SMT : le jeu de Takuzu
3 Planification par satisfaction de formules logiques
3.1 Planification classique SAT et QBF
3.1.1 Définitions préliminaires
3.1.2 Codages SAT de référence dans les espaces d’états
3.1.3 Codages SAT de référence dans les espaces de plans
3.1.4 Contribution : nouveau codage SAT dans les espaces de plans
3.1.5 Codages QBF de référence pour la planification classique
3.1.6 Contribution : codages d’arbres compacts QBF
3.2 Planification temporelle SMT
3.2.1 Définitions préliminaires
3.2.2 Codages SMT de référence pour la planification temporelle
3.2.3 Contribution : codage SMT pour la planification temporelle
3.3 Le module TouISTPlan
3.3.1 Le langage PDDL (Planning Domain Definition Language)
3.3.2 Extraction d’un plan avec le module TouISTPlan
3.4 Étude comparative des codages QBF avec TouIST
3.4.1 Comparaison des codages d’arbres compacts QBF
3.4.2 Discussion
4 Conclusion et perspectives
4.1 Ce que nous avons réalisé
4.2 Ce qu’il reste à explorer
A TouIST reference manual
A.1 Language reference
A.1.1 Structure of a TouIST file
A.1.2 Variables
A.1.3 Propositions
A.1.4 Numeric expression
A.1.5 Booleans
A.1.6 Sets
A.1.7 Formulas
A.1.8 Formal grammar
A.2 Command-line tool (touist)
A.2.1 Installation
A.2.2 Usage
A.2.3 Using external solvers from touist (–solver) . 101
A.3 Technical details
A.3.1 One single syntax error per run

projet fin d'etudeTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *