Langages ambigus et séries algébriques Simon Forest Dans l’article “Analytic models and ambiguity of context-free languages”, Philippe Flajolet met en avant des méthodes afin de déterminer si des languages issus de grammaire sans contexte (ou Context-Free Grammar) sont ambigus. Ces méthodes sont toutes basées sur le théorème de Chomsky-Schutzenberger, qui stipule que la fonction génératrice d’un langage non ambigu est algébrique. Ainsi, par contraposée, pour montrer l’ambiguité intrinsèque d’un langage, il suffit de montrer que sa série génératrice n’est pas algébrique. Ce document est un résumé de l’article de Flajolet. 1 Introduction Une spécification sans contexte d’un langage L est dite ambigue s’il existe un mot w ∈ L tel qu’il existe plusieurs façons de produire w à partir de la spécification. Exemple 1. si L = {am bn cp |n = m ou n = p}, alors une spécification sans contexte de L est L → XC + AY X → aXb + Y → bY c + A → aA + C → cC + On voit que cette spécification est ambigue pour le mot w = abc. On dit alors qu’un langage est essentiellement ambigu lorsqu’il ne possède pas de spécification sans contexte non ambigue. Il est difficile de montrer qu’un langage est ambigu directement : montrer une propriété pour toutes les spécifications possibles n’est pas facile. On montre donc l’ambiguité d’un langage indirectement en utilisant le théorème de Chomsky et de Schutzenberger : P Définition 1. Soit l = ln z n . On dit que l est algébrique sur un corps K s’il existe P (z, y) ∈ K[X, Y ] − 0 tel que P (z, l(z)) = 0. Sinon, on dit qu’elle est transcendante. Théorème 1. (Chomsky-Schutzenberger) Soit l la série génératrice d’un langage L. Alors si L est non ambigu, l est algébrique sur Q. Par contraposée, on a alors : 1 Théorème 2. Soit l la série génératrice d’un langage L. Alors si l est transcendante, L est essentiellement ambigu. Donc pour montrer qu’un langage est essentiellement ambigu, il suffit de montrer que sa série génératrice est transcendante. Pour cela, on dispose de plusieurs critères que l’on va exposer avec des exemples. 2 Valeur d’une série algébrique On a déjà une première propriété sur les séries algébriques : Théorème 3. Si l(z) est une série algébrique et ω est un nombre algébrique, alors l(ω) est algébrique. Exemple 2. Soit O le langage O = {w ∈ {x, x̄, y, ȳ} | |w|x = |w|x̄ ou |w|y = |w|ȳ } On a O = O1 ∪ O2 avec O1 = {w ∈ {x, x̄, y, ȳ} | |w|x = |w|x̄ } et O2 = {w ∈ {x, x̄, y, ȳ} | |w|x = |w|x̄ } On note I = O1 ∩ O2 . On a alors O(z) = O1 (z) + O2 (z) − I(z). On trouve facilement une grammaire sans contexte non ambigue pour O1 : O1 → AX A → (x + y)A + X → xAX x̄A + x̄AXxA + De même pour O2 . Ainsi, O1 , O2 sont algébriques. Pour montrer que O(z) est transcendante, il suffit de montrer que I(z) est transcendante. On remarque alors que X n n 2 X 2n 2k 2n − 2k 2n n I2n = = 2k k n−k n k k=0 k=0 D’après l’identité de Vandermonde, I2n = étant une intégrale de Wallis I(z) = 2 π Z π 2 n 2 2n . On peut alors voir I(z) comme 1 (1 − 16z 2 sin2 (θ))− 2 dθ 0 qui possède des valeurs transcendantes en des points algébriques (par exemple : Th. Shneider, Einführung in die transzendenten Zahlen). Donc I(z) est transcendante, donc O est essentiellement ambigu. 2 3 Singularités d’une série algébrique Voici une seconde propriété sur les singularités des séries algébriques : Théorème 4. Soit l(z) une série algébrique sur Q. Alors l(z) a un nombre fini de singularités qui sont des nombres algébriques. De plus, si P ∈ K[X, Y ] tel que P (z, l(z)) = 0, alors si z est une singularité de l(z), il vérifie au moins une des propriétés suivantes : (X,Y ) — Si R(X, Y ) := resultanty [P (X, Y ), ∂P ∂Y ], alors R(z, Y ) = 0 — Pd (z) = 0 où Pd est le polynôme qui est le cœfficient du monôme de plus haut degré dans P (X, Y ) ∈ K[X][Y ] Ainsi, on obtient un deuxième critère pour tester l’ambiguité d’un langage : Si l(z) vérifie l’une des deux propriétés suivantes, alors L est essentiellement ambigu : — l(z) a un nombre infini de singularités — une singularité de l(z) n’est pas algébrique — une singularité de l(z) n’annule pas R(y) ni Pd Exemple 3. Soit S le langage S = {an bv1 an v2 |n ≥ 1; v1 , v2 ∈ {a, b}? }. S peut se décomposer de façon non ambigue : X S= an bRn an {a, b}? n≥1 avec Rn = (( + a + · · · + an−1 )b)? Mais ce n’est pas une grammaire pour autant vu que la somme est infinie. Cependant, cela nous permet d’exprimer S(z) : S(z) = avec Rn (z) = +∞ z X 2n z Rn (z) 1 − 2z n=0 1 1−z = n−1 1 − z(1 + z + · · · + z ) 1 − 2z + z n+1 Donc on a S(z) = z X z 2n 1 − 2z Pn (z) n≥1 n+1 où Pn (z) = 1 − 2z + z . Avec une analyse de fonction classique, on remarque que Pn a une unique racine sur ] 21 ; 1[ que l’on note xn . La suite des xn est strictement décroissante. Ainsi, on en déduit que S(z) a une infinité de singularités sur le disque D(0, 43 ). Donc S(z) n’est pas algébrique et S est essentiellement ambigu. 4 Asymptotique près d’une singularité On dispose d’une propriété sur l’asymptotique d’une série algébrique près d’une singularité : 3 Théorème 5. Soit l(z) une série algébrique et α une singularité de l(z). Au voisinage de α, on a un développement : X z l(z) = ak (1 − )kr α k≥−m + avec m ∈ N, r ∈ Q , (ak )k nombres algébriques. En particulier, au voisinage d’une singularité, l(z) admet un équivalent de la forme : l(z) ∼ ω(1 − αz )−u , avec u ∈ Q+ Exemple 4. Soit K = {n1 . . . nk |∃j, nj+1 6= nj } où n = an b. On a K c = K1 ∪ K2 avec K1 = {a, b}? a et K2 = {n1 . . . nk |∀j, nj = nj+1 }. Donc X 1 1 K(z) = − − z k(n+1) 1 − 2z 1 − 2z k≥1,n≥0 On a donc que K(z) est transcendante si D(z) = dentale. Or X D(z) = d(m)z m P k≥1,n≥1 z kn est transcen- m≥1 où d(m) est le nombre de diviseurs de m. D(z) admet alors une singularité en 1− . On peut alors montrer à l’aide d’une transformée de Mellin que D(z) ∼z→1− (1 − z)−1 log( 1 ) 1−z ce qui ne peut pas être l’équivalent d’une série algébrique près d’une singularité à cause du facteur log. 5 Asymptotique des cœfficients On a une propriété sur l’asymptotique des cœfficients d’une série algébrique : Théorème 6. Si l(z) est algébrique, alors on a l’asymptotique suivante pour les cœfficients de la série : m ln = β n ns X Ci ωin + O(βnt ) Γ(s + 1) i=0 avec s ∈ Q − {−1, −2, . . .}, t < s, β un nombre algébrique positif, Ci , ωi algébriques et |ωi | = 1. En particulier, si ln ∼ γβ n nr , alors si β n’est pas algébrique, r ∈ / Q, ou Γ(r + 1)γ est transcendant, alors l(z) est transcendante. Exemple 5. Soit Ω = {w ∈ {a, b, c}? | |w|a 6= |w|b ou |w|b 6= |w|c }. On a alors Ωc = {w ∈ {a, b, c}? | |w|a = |w|b = |w|c }. La série génératrice I(z) de Ωc est alors X 3n I(z) = z 3n n, n, n n √ 3 En utilisant la formule de Stirling, on obtient l’équivalent I3n ∼ 33n 2πn . Le fac−1 teur en n étant exclu pour une série algébrique, I(z) est ainsi transcendante, 1 donc Ω(z) = 1−3z − I(z) aussi. Donc le langage Ω est transcendant. 4 6 Équation sur les cœfficients Les cœfficients d’une série algébrique doivent vérifier une formule de récurrence : Théorème 7. Si l(z) est une série algébrique, alors il existe des polynômes Pm q0 , . . . , qm tels que, pour n ≥ n0 , on a j=0 qj (n)Ln−j = 0. P En particulier, si l(z) = n aφ(n) z φ(n) avec aφ(n) 6= 0 alors si φ(n + 1) − φ(n) → +∞, la série est transcendante. Exemple 6. Soit G6= = {n1 . . . np |∃j, nj 6= j}. On a Gc6= = G1 ∪ G2 avec G1 = {a, b}? a et G2 = {n1 . . . np |∀j, nj = j} P P (n+3)n On a G2 (z) = n≥1 z 2 donc pour φ(n) = (n+3)n , G2 (z) = n z φ(n) et 2 φ(n + 1) − φ(n) → ∞ donc, d’après le théorème, la série est transcendante. z 1 − 1−2z − G2 (z) est transcendante et donc le langage G6= est Ainsi G6= = 1−2z essentiellement ambigu. 7 Conclusion Ainsi, dans cet article, Flajolet donne des méthodes pour montrer le caractère essentiellement ambigu de langages issus d’une grammaire sans contexte. Ces méthodes rendent la démonstration beaucoup plus simple qu’une approche brutale. Ces méthodes sont toutes basées sur la contraposée du théorème de Chomsky-Schutzenberger qui stipule qu’un langage issu d’une grammaire sans contexte non ambigue a une série génératrice algébrique. On cherche alors à montrer qu’une série génératrice est transcendante. Flajolet donne des méthodes génériques mais on peut en fait utiliser toute technique qui montre qu’une série est transcendante. Plusieurs questions restent cependant ouvertes. Par exemple, on ne sait pas exactement quelle est la classe de séries dans laquelle tombent les séries génératrices de langages ambigus, à part que c’est une sous-classe des séries transcendantes. Aussi, on peut se demander quels peuvent être les cœfficients d’une série génératrice associée à un langage essentiellement ambigu. Par exemple, existe-t-il L essentiellement ambigu tel que ln ∼ exp(cn) pour un certain c ? On peut aussi chercher à caractériser une classe encore plus précise : la classe des langages infiniment ambigus (langages tels que pour toute grammaire, on peut toujours trouver des mots qui ont plus de N décompositions, pour tout N ). 5