Languages Formels

TP3: Grammaires, Formes normales et décidabilité

Exercice 1 (Indécidabilité)

Montrer que pour deux langages algébriques L et L', les problèmes suivants sont indécidables :

  • L est-il rationnel ?
  • L ∩ L' est-il aglébrique ?
  • &Lmacr; est-il algébrique ?
  • Exercice 2 (Propriét\és de fermeture)

    Montrer que la famille des langages algébriques est fermée par :

  • 1. concaténation et itération ;
  • 2. substitution algébrique (Une substitution σ : Σ → 2Σ'* telle que pour tout a ∈ Σ , σ(a) est algébrique).
  • Montrer que les familles des langages algébriques et des langages linéaires sont fermées par :

  • 3. union et image miroir ;
  • 4. intersection avec un langage rationnel ;
  • 5. morphisme ;
  • 6. projection inverse (Une projection est un morphisme p: Σ* → Δ * tel que pour tout a ∈ Σ,|p(a)| ≤ 1);
  • 7. morphisme inverse.
  • Exercice 3

    Soit G= (Σ,V,P,S) une grammaire algébrique. Une variable x ∈ V est strictement récursive (SR) s'il existe une dérivation x →* uxv dans G avec u,v ∈ Σ +. L'objectif est de montrer qu'une grammaire algébrique sans variable SR engendre un langage rationnel.
  • 1. Étant données une grammaire algébrique G= (Σ,V,P,S) et une variable x ∈ V, montrer que l'on peut effectivement calculer l'ensemble
  • Z= { y ∈ V | ∃ x →* uyv avec u,v ∈ Σ+ }.
  • 2. Montrer que l'on peut décider si une grammaire algébrique contient des variables SR.
  • 3. Soit G= (Σ,V,P,S) une grammaire algébrique sans variable SR. Montrer que l'on peut effectivement construire une grammaire algébrique G'= (Σ,V',P',S') réduite, propre, sans variable SR et telle que LG'(S') = LG(S) ∖ { ε }.
  • 4. Soit G= (Σ,V,P,S) une grammaire algébrique réduite, en forme normale de Greibach et sans variable SR. Montrer qu'il existe une constante K ∈ &nat; telle que pour toute dérivation gauche x →* uα avec u ∈ Σ* et α ∈ V* on a |α| ≤ K .
  • 5. Soit G= (Σ,V,P,S) une grammaire algébrique réduite, en forme normale de Greibach et sans variable SR. Montrer que le langage engendré LG(S) est rationnel.
  • Soit G= (Σ,V,P,S) une grammaire algébrique propre. Soit x ∈ V et soient

  • A= {α ∈ (Σ ∪ V)* | x → xα ∈ P }
  • B= {β ∈ (Σ ∪ V ∖ {x} )(\Sigma ∪ V)* | x → β ∈ P }
  • On définit la grammaire G'= (Σ,V',P',S) en ajoutant une variable x' (V' = V ⊎ {x'}) et en remplaçant les règles de G issues de x par les règles x → β + β x' pour β ∈ B et x' → α + α x' pour α ∈ A.
  • 6. Montrer que si y →* uzv dans G' avec y,z ∈ V et u,v ∈ Σ *, alors y →* uzv dans G.
  • 7. Montrer que si G n'a pas de variable SR alors il en est de même pour G'.
  • 8. Soit G= (Σ,V,P,S) une grammaire algébrique sans variable SR. Montrer que l'on peut effectivement construire une grammaire algébrique G'= (Σ,V',P',S) r\'eduite, en forme normale de Greibach, sans variable SR et telle que LG'(S') = LG(S) ∖ { ε }.
  • 9. En déduire qu'un langage est rationnel si et seulement si il peut être engendré par une grammaire algébrique sans variable SR.