Différence de langages réguliers
Soient deux langages réguliers L1, L2. Nous allons démontrer que leur différence L = L1 ∖ L2 est aussi un langage régulier.
Idée
En réalité, il n’y a pas grand-chose à démontrer. Pour la différence de deux ensembles, on a en effet la relation suivante :
où L2′ est le complémentaire du langage L2. Grâce aux chapitres sur l’intersection de langages réguliers et sur le complémentaire d’un langage régulier, nous savons que les langages réguliers sont stables par ces deux opérations. Cela signifie que nous savons construire un automate qui accepte l’intersection de langages et le complémentaire d’un langage. Nous pouvons donc utiliser ces automates pour construire un automate qui acceptera le langage L1 ∩ L2′, qui est justement le langage L1 ∖ L2.
Exemple
Soit l’automate A1 suivant, qui accepte tous les mots contenant un nombre pair de 1 :
et l’automate A2, qui accepte les mots contenant un nombre impair de 0 :
Nous construisons un automate qui acceptera la différence de ces langages. Il nous faut pour cela un automate A2′ qui soit le complémentaire de l’automate A2. Il suffit d’échanger les états finals et les états non finals :
Il ne reste plus qu’à construire l’automate A qui acceptera l’intersection des langages L(A1) et L(A2′) :
Sources
Chapitres: Propriétés de clôture des langages réguliers, Réunion de langages réguliers, Intersection de langages réguliers, Différence de langages réguliers, Complémentaire d’un langage régulier, Concaténation de langages réguliers, Étoile d’un langage régulier