Logique temporelle (X-ENS 2013)

Documents pareils
INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Initiation à la Programmation en Logique avec SISCtus Prolog

Recherche dans un tableau

Bases de programmation. Cours 5. Structurer les données

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Cours d initiation à la programmation en C++ Johann Cuenin

TP 1. Prise en main du langage Python

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Algorithmique et Programmation, IMA

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Présentation du langage et premières fonctions

Algorithmique et programmation : les bases (VBA) Corrigé

TD3: tableaux avancées, première classe et chaînes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun>

Représentation d un entier en base b

ALGORITHMIQUE ET PROGRAMMATION En C

Les chaînes de caractères

Structurer ses données : les tableaux. Introduction à la programmation

Informatique Générale

Initiation à l algorithmique

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Programmation linéaire

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

TP3 : Manipulation et implantation de systèmes de fichiers 1

Chap 4: Analyse syntaxique. Prof. M.D. RAHMANI Compilation SMI- S5 2013/14 1


Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

UML et les Bases de Données

Cours 1 : La compilation

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Algorithme. Table des matières

Utilisation d objets : String et ArrayList

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

MPI Activité.10 : Logique binaire Portes logiques

chapitre 4 Nombres de Catalan

STAGE IREM 0- Premiers pas en Python

GOL502 Industries de services

Corrigé des TD 1 à 5

Table des matières. Introduction

Rappels Entrées -Sorties

Cours Informatique Master STEP

Organigramme / Algorigramme Dossier élève 1 SI

Conversion d un entier. Méthode par soustraction

Utilisation des tableaux sémantiques dans les logiques de description

Limites finies en un point

Définitions. Numéro à préciser. (Durée : )

VÉRIFICATION DES SYSTÈMES À PILE AU MOYEN DES ALGÈBRES DE KLEENE

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

TP : Gestion d une image au format PGM

1 Recherche en table par balayage

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

Chp. 4. Minimisation d une fonction d une variable

Quelques éléments de compilation en C et makefiles

Plus courts chemins, programmation dynamique

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

TP1 : Initiation à Java et Eclipse

UE Programmation Impérative Licence 2ème Année

Compilation (INF 564)

Introduction à MATLAB R

1 Introduction et installation

Résolution d équations non linéaires

Sub CalculAnnuite() Const TITRE As String = "Calcul d'annuité de remboursement d'un emprunt"

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Classes et Objets en Ocaml.

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

PROJET ALGORITHMIQUE ET PROGRAMMATION II

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Cours 1 : Qu est-ce que la programmation?

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

MIS 102 Initiation à l Informatique

Correction de l examen de la première session

Probabilités sur un univers fini

Maple: premiers calculs et premières applications

Les structures de données. Rajae El Ouazzani

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Cours de Master Recherche

Premiers Pas en Programmation Objet : les Classes et les Objets

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Cours Composant 2. Qualité logicielle et spécications algébriques

IUT de Laval Année Universitaire 2008/2009. Fiche 1. - Logique -

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

Comment se servir de cet ouvrage? Chaque chapitre présente une étape de la méthodologie

Logique : ENSIIE 1A - contrôle final

Transcription:

option informatique Logique temporelle (-ENS 2013) Durée : 4 heures On étudie dans ce problème un formalisme logique, la logique temporelle, permettant de définir des formules auxquelles sont associés des langages de mots. Ainsi, pour toute formule ϕ de la logique temporelle et pour tout mot u on définira la propriété que le mot u satisfait la formule ϕ, et à toute formule ϕ on associera l ensemble L ϕ des mots qui satisfont ϕ. L objet principal de ce problème est de s intéresser aux propriétés de ces langages L ϕ. La partie I introduit la logique temporelle et donne des exemples de formules. La partie II introduit une forme normale pour les formules. La partie III est consacrée à montrer que pour toute formule l ensemble de mots associés est un langage rationnel. Enfin, la partie IV étudie d une part le problème de la satisfiabilité d une formule (étant donnée une formule ϕ, existe-t-il un mot satisfaisant ϕ?) et d autre part l expressivité des formules. Les parties peuvent être traitées indépendamment. Néanmoins, chaque partie utilise des notations et des fonctions introduites dans les parties précédentes. La complexité, ou le coût, d un programme P (fonction ou procédure) est le nombre d opérations élémentaires (addition, soustraction, multiplication, division, affectation, etc.) nécessaires à l exécution de P. Lorsque cette complexité dépend d un paramètre n, on dira que P a une complexité en O(f (n)), s il existe K > 0 tel que la complexité de P est au plus Kf (n), pour tout n. Lorsqu il est demandé de garantir une certaine complexité, le candidat devra justifier cette dernière si elle ne se déduit pas directement de la lecture du code. Partie I. Préliminaires Un alphabet est un ensemble fini A dont les éléments sont appelés lettres. Un mot sur un alphabet A est une suite finie d éléments de A ; on notera ε le mot vide (c est-à-dire la suite de longueur nulle) et on définira la longueur u d un mot non vide u = a 0 a l 1 comme valant l. Si A est un alphabet, on notera A l ensemble des mots sur A et A + = A \ {ε l ensemble des mots non vides sur A. Dans la suite, les lettres d un mot de longueur l sont indicées de 0 à l 1. En Caml, nous représenterons les mots à l aide du type string. Les fonctions suivantes pourront être utilisées dans la suite. Si mot est de type string et i est de type int alors mot.[i] est de type char et donne la lettre d indice i de mot. Par exemple : "bonjour".[3] renvoie j. string_length de type string > int renvoie la longueur d un mot. Dans tout le problème on se fixe un alphabet fini A (on pourra imaginer qu il s agit des lettres minuscules de l alphabet usuel). On souhaite définir des ensembles de mots sur l alphabet A à l aide de formules logiques. Pour cela, on définit, pour chaque lettre a A, un prédicat p a, qui permettra de tester si la lettre à une position donnée est un a. Pour construire des formules à partir de ces prédicats, on utilise les connecteurs booléens (ou), (et) et (non) ainsi que les connecteurs temporels (juste après), G (désormais), F (un jour) et U (jusqu à). Les formules de la logique temporelle sont alors construites par induction comme suit. Si p a est un prédicat, et si ϕ, ψ sont des formules de la logique temporelle, toutes les formules seront construites selon la syntaxe suivante : 1. VRAI 2. p a 3. ( ϕ) 4. (ϕ ψ) 5. (ϕ ψ) 6. (ϕ) 7. (Gϕ) 8. (Fϕ) 9. (ϕ U ψ) Toutes les formules seront construites de la façon précédente, en omettant les parenthèses si celles-ci sont inutiles. Par exemple,, p a U et F(Gp a ) sont des formules. page 1

Nous allons maintenant définir le sens (ou la sémantique) des formules. Soit un mot u et soit une formule de la logique temporelle ϕ. On définit, pour tout i 0, la propriété «le mot u satisfait la formule ϕ à la position i», ce qui sera noté (u,i) = ϕ, comme suit. Si i u, on n a pas (u,i) = ϕ : une formule ne peut être vraie qu à une position du mot ; en particulier le mot vide ne satisfait aucune formule (pas même la formule VRAI). Si i u 1, on note u = a 0 a u 1 et on raisonne alors par induction sur la structure de ϕ. 1. (u,i) = VRAI. 2. (u,i) = p a si et seulement si a i = a. 3. (u,i) = ( ϕ) si et seulement si l on n a pas (u,i) = ϕ. 4. (u,i) = (ϕ ψ) si et seulement si (u,i) = ϕ ou (u,i) = ψ. 5. (u,i) = (ϕ ψ) si et seulement si (u,i) = ϕ et (u,i) = ψ. 6. (u,i) = (ϕ) si et seulement si (u,i + 1) = ϕ. Notez que si i = u 1, alors on ne peut avoir (u,i) = (ϕ). 7. (u,i) = (Gϕ) si et seulement si (u,j) = ϕ pour tout i j u 1. 8. (u,i) = (Fϕ) si et seulement si j tel que i j u 1 et (u,j) = ϕ. 9. (u,i) = (ϕ U ψ) si et seulement si j tel que i j u 1, (u,j) = ψ et (u,k) = ϕ pour tout k tel que i k < j. On notera (u,i) = ϕ si et seulement si l on n a pas (u,i) = ϕ. On notera u = ϕ (et on dira alors que ϕ est vraie pour u) le fait que (u, 0) = ϕ, et on notera u = ϕ le fait que (u, 0) = ϕ. Par exemple : (aaabcbab,2) = car la lettre d indice 3 de aaabcbab est un b. aaabcbab = p a U car la lettre d indice 3 est un b et toutes les lettres qui la précèdent sont des a. aaabcbab = F(Gp a ) car il n existe pas d indice tel qu à partir de cet indice il n y ait plus que des a (en effet, la dernière lettre est un b). Question 1. On pose u = bbbcbbaa. Pour chacun des énoncés ci-dessous dire s il est vrai en justifiant brièvement votre réponse. (a) (u,4) = G(p a ) (b) (u,2) = (G(p a p c )) (c) (u,1) = F(G(p a )) (d) u = (p a ) U (p a p c ) Question 2. Écrire une formule ϕ telle que u = ϕ si et seulement si u contient un a suivi plus tard d un b. Par exemple on aura ccacccba = ϕ tandis que ccacccaa = ϕ. Question 3. Écrire une formule Fin telle que (u,i) = Fin si et seulement si i = u 1 (c est-à-dire si et seulement si i est l indice de la dernière lettre de u). Dans la suite, on pourra utiliser Fin comme une boîte noire. Question 4. Écrire une formule ϕ telle que u = ϕ si et seulement si u se termine par un a. Question 5. Écrire une formule ϕ telle que u = ϕ si et seulement si u = ababab ab, c est-à-dire si et seulement s il existe k 1 tel que u = u 0 u 1 u 2k 1 et, pour tout i tel que 0 i 2k 1 on a u i = a si i est pair et u i = b si i est impair. Question 6. Pour cette question, on pose A = {a,b,c. Soit ϕ = F(p a (G( p a )) F( p c )). Décrire un automate fini (pouvant être non-déterministe) reconnaissant le langage L ϕ = { u A + u = ϕ. Deux formules ϕ et ψ sont équivalentes, ce que l on note ϕ ψ, si pour tout mot u, on a u = ϕ si et seulement si u = ψ. Autrement dit, les formules ϕ et ψ sont vraies pour les mêmes mots. Question 7. Soient ϕ et ψ deux formules quelconques. Montrer que l on a ϕ U ψ ψ (ϕ ((ϕ U ψ))). Partie II. Normalisation de formules Afin de manipuler des formules de la logique temporelle, on va représenter ces dernières par des arbres. Outre les prédicats (p a ) a A et la formule VRAI nous avons des connecteurs unaires (,,G et F) et des connecteurs binaires (, et U). À la manière des expressions arithmétiques, on représente une formule de la logique temporelle par un arbre dont les feuilles sont étiquetées soit par un prédicat p a soit par VRAI, et dont les nœuds internes sont étiquetés par un connecteur unaire (un tel nœud aura alors un seul fils) ou par un connecteur binaire (un tel nœud aura alors deux fils). Dans la suite, on confondra fréquemment une formule avec sa représentation par un arbre. page 2

Par exemple, la formule (F(G(p a ))) sera représentée par l arbre ci-dessous : F G p a Le type des formules est défini comme suit : type formule = VRAI Predicat of char NON of formule ET of formule * formule OU of formule * formule of formule G of formule F of formule U of formule * formule ;; On définit la taille d une formule par le nombre de nœuds de l arbre qui la représente. En particulier, la formule VRAI et les formules réduites à un prédicat p a sont de taille 1. Question 8. Écrire une fonction taille qui prend en argument une formule et renvoie sa taille. t a i l l e : f o r m u l e > i n t Question 9. Donner, pour toute formule ϕ n utilisant pas le connecteur F, une formule équivalente à F ϕ qui n utilise pas le connecteur temporel F. En déduire une fonction normalisef qui prend en entrée une formule quelconque et renvoie une formule équivalente qui n utilise pas le connecteur F. Quelle est la complexité de votre algorithme? n o r m a l i s e F : f o r m u l e > f o r m u l e Une formule qui utilise comme seuls connecteurs temporels le et le U sera qualifiée de normalisée. Question 10. Montrer que toute formule est équivalente à une formule normalisée. Donner une fonction normalise de complexité linéaire qui prend en entrée une formule quelconque et renvoie une formule équivalente normalisée. n o r m a l i s e : f o r m u l e > f o r m u l e Dans toute la suite du problème, on supposera que l on travaille avec des formules normalisées. Question 11. Écrire une fonction récursive veriten qui prend en argument un mot u, un indice i et une formule (normalisée) ϕ et détermine si (u,i) = ϕ. Justifier que votre fonction termine et indiquer si elle est exponentielle ou polynomiale en la taille de ses arguments. v e r i t e N : s t r i n g > i n t > f o r m u l e > b o o l Partie III. Rationalité des langages décrits par des formules Le but de cette partie est de montrer qu étant donnée une formule ϕ, l ensemble des mots pour lesquels ϕ est vraie est un langage rationnel. Soit ϕ une formule représentée par un arbre t ϕ. Une sous-formule de ϕ est une formule représentée par un sous-arbre de t ϕ. Par exemple si l on considère la formule ϕ = (((p a U ))), représentée par l arbre ci-dessous, page 3

U p a l ensemble de ses sous-formules est : { (((pa U ))), ((p a U )), (p a U ), p a U,, p a On souhaite représenter des ensembles de sous-formules d une formule donnée. Pour cela, on va utiliser des arbres dont les nœuds sont étiquetés (en plus des symboles de la logique) par des booléens. Par exemple pour la formule (((p a U ))) représentée ci-dessus, l ensemble de sous-formules {p a, (p a U ) sera représenté par l arbre ci-dessous., false, false,false, true U, false p a,true,false Une sous-formule ψ appartient à l ensemble représenté par un arbre de type ensemble s il existe un nœud de l arbre étiqueté par true et dont le sous-arbre «correspond» à la formule ψ (c est-à-dire qu après suppression des booléens, le sous-arbre est égal à l arbre codant ψ). Le type ensemble est défini comme suit. type ensemble == eformule * bool and eformule = AVRAI APredicat of char ANON of ensemble AET of ensemble * ensemble AOU of ensemble * ensemble A of ensemble AU of ensemble * ensemble ;; On rappelle que l on ne travaille plus qu avec des formules normalisées. Question 12. Écrire une fonction initialise qui prend en argument une formule ϕ et renvoie un ensemble représentant l ensemble vide de sous-formules de ϕ. i n i t i a l i s e : f o r m u l e > ensemble Question 13. Soient u un mot, ϕ une formule et S l ensemble des sous-formules de ϕ vraies pour u. Soit a une lettre. Montrer que l ensemble S des sous-formules de ϕ vraies pour a u peut être déterminé uniquement en fonction de a et de S (en particulier indépendamment de u). Question 14. En vous basant sur la question 13, écrire une fonction maj qui prend en argument un ensemble S (représentant un ensemble de sous-formules d une formule ϕ) et une lettre a et renvoie un ensemble S tel que : pour tout mot u si S représente l ensemble { ψ u = ψ et ψ sous-formule de ϕ des sous-formules de ϕ vraies pour u alors S représente l ensemble { ψ a u = ψ et ψ sous-formule de ϕ des sous-formules de ϕ vraies pour a u. Justifier la terminaison et préciser la complexité (dans la taille de la formule) de votre fonction. Par exemple si l on reprend l exemple de la formule ϕ = (((p a U ))) (arbre à gauche ci-dessous) et de l ensemble S (au centre ci-dessous), alors maj S b devra renvoyer l ensemble S (à droite ci-dessous). page 4

, false, true, false,false, true,true, true, false U U, false U, true p a p a,true,false p a,false,true maj : ensemble > c h a r > ensemble Question 15. Écrire une fonction sousformulesvraies qui prend en argument une formule ϕ et un mot et renvoie un ensemble décrivant les sous-formules ψ de ϕ telles que u = ψ. Votre fonction devra avoir une complexité polynomiale dans la taille de la formule et dans la taille du mot. Justifier la terminaison et préciser la complexité (dans la taille de la formule et la taille du mot). s o u s F o r m u l e s V r a i e s : f o r m u l e > s t r i n g > ensemble Question 16. En déduire une fonction veritebis qui teste si une formule donnée est vraie à la première position d un mot donné. v e r i t e B i s : f o r m u l e > s t r i n g > b o o l Soit ϕ une formule. On associe à ϕ un langage de mots L ϕ A + en posant L ϕ = { u A + u = ϕ Soit un mot u = a 0 a l 1. On note ũ le mot miroir de u : ũ = a l 1 a l 2 a 0. Soit un langage L A +, on notera L = { ũ u L. Question 17. En vous inspirant de la fonction maj de la question 14, montrer que pour toute formule ϕ, le langage L ϕ est reconnu par un automate déterministe complet. Donner un majorant du nombre d états d un tel automate. Question 18. En déduire que pour toute formule ϕ, le langage L ϕ est reconnu par un automate fini. Donner un majorant du nombre d états d un tel automate (automate qui pourra être pris non-déterministe). Partie IV. Satisfiabilité et expressivité On rappelle que désormais les formules considérées sont normalisées (elles n utilisent donc ni le F ni le G). Dans toute cette partie, on considérera que A = {a,b sauf mention explicite. Le but de cette partie est dans un premier temps d écrire un programme qui prend en entrée une formule ϕ et renvoie true si et seulement s il existe u A + tel que u = ϕ. Dans un second temps, on montre qu il existe un langage accepté par un automate fini qui ne peut être décrit par aucune formule de la logique temporelle. Question 19. Soit A un automate fini déterministe sur l alphabet A. Décrire informellement un algorithme qui calcule la liste des états atteignables depuis l état initial (c est-à-dire l ensemble des états q tels qu il existe un mot qui lu depuis l état initial termine dans q). Question 20. Soit ϕ une formule satisfiable, c est-à-dire pour laquelle existe un mot u A + tel que u = ϕ. Soit u min un plus court u tel que u = ϕ. Majorer la longueur de u min en fonction de la taille de ϕ. page 5

Pour la question suivante, on pourra utiliser des listes de couples formés d un ensemble et d une chaîne de caractères. En Caml, une telle liste aura le type (ensemble * string) list. Question 21. Écrire une fonction satisfiable qui prend en argument une formule ϕ et renvoie la chaîne "Formule non satisfiable" s il n existe pas de u A + tel que u = ϕ et sinon renvoie un u A + tel que u = ϕ. La complexité de votre fonction devra être en O(2 α ϕ β ) où α et β sont deux constantes que vous préciserez. Il est permis de décomposer la réponse en quelques fonctions auxiliaires. On rappelle ici que l on suppose que A = {a,b. Donner dans un premier temps les idées clés de l algorithme avant d écrire le code. s a t i s f i a b l e : f o r m u l e > s t r i n g Question 22. Pour cette question, on pose A = {a et on note a i le mot formé de i lettres a, par exemple a 4 = aaaa. Montrer qu il n existe pas de formule ϕ telle que L ϕ = { a 2i i 1. On pourra montrer que pour toute formule ϕ, il existe N 0 tel que l on ait l une des deux situations suivantes : pour tout n N, a n = ϕ ; pour tout n N, a n = ϕ. page 6