# Llenguatge formal

A matemàtiques, lògica, i ciències de la computació, un llenguatge formal és un llenguatge on els símbols primitius i regles per a unir aquests símbols estan formalment especificats. Al conjunt dels símbols primitius se l'anomena l'alfabet (o vocabulari) del llenguatge, i al conjunt de les regles se l'anomena la gramàtica formal (o sintaxi). A una cadena de símbols formada d'acord amb la gramàtica se l'anomena una fórmula ben formada (o paraula) del llenguatge. Estrictament parlant, un llenguatge formal és idèntic al conjunt de totes les seves fórmules ben formades.
Per exemple, un alfabet podria ser el conjunt {a, b}, i una gramàtica podria definir a les fórmules ben formades com aquelles que tenen el mateix nombre de símbols a que b. Llavors, algunes fórmules ben formades del llenguatge serien: ab, ba, abab, ababba, etc., I el llenguatge formal seria el conjunt de totes aquestes fórmules ben formades.
Per a alguns llenguatges formals hi ha una semàntica formal que pot interpretar i donar significat a les fórmules ben formades del llenguatge. Tanmateix, una semàntica formal no és condició necessària per definir un llenguatge formal, i això és una diferència essencial amb els llenguatges naturals.
En alguns llenguatges formals, la paraula buida (és a dir, la cadena de símbols de longitud zero) està permesa, notant-se freqüentment mitjançant $\epsilon \,$, $i\,$ o $\lambda \,$.

## Exemples de llenguatges formals

* Un conjunt de totes les paraules sobre $\{a,b\}\,$.
* El conjunt $\{a^{n}:n\}\,$ és un nombre primer.
* El conjunt de tots els programes sintàcticament vàlids en un determinat llenguatge de programació.
* El conjunt de totes les fórmules ben formades a la lògica de primer ordre.

## Especificació de llenguatges formals

Els llenguatges formals trobareu d'una àmplia varietat de formes, com per exemple:
* Cadenes produïdes per una gramàtica formal (vegeu Jerarquia de Chomsky).
* Cadenes produïdes per una expressió regular.
* Cadenes acceptades per un autòmat, tal com una màquina de Turing.

## Operacions

Es poden utilitzar diverses operacions per a produir nous llenguatges a partir d'altres daus. Suposem que L $_1$ i L $_2$ són llenguatges sobre un alfabet comú. Llavors:
* La concatenació L$_1$L₂ consisteix en totes aquelles paraules de la manera vw on v és una paraula de L$_1$ i w és una paraula de L₂
* La intersecció L$_1$ & L₂ consisteix en totes aquelles paraules que estan contingudes tant en L$_1$ com en L₂
* La unió L$_1$|L₂ consisteix en totes aquelles paraules que estan contingudes ja sigui en L$_1$ o en L₂
* El complement ~ L$_1$ consisteix en totes aquelles paraules produïdes sobre l'alfabet de L$_1$ que no estan ja contingudes en L$_1$
* El quocient L$_1$/L₂ consisteix en totes aquelles paraules v per a les quals hi ha una paraula w a L₂ tals que vw es troba en L$_1$
* L'estrella L$_1$$^*$ consisteix en totes aquelles paraules que poden ser escrites de la manera W$_1$W₂...W$_n$ on tot W$_i$ es troba en L$_1$ i n≥0. (Noteu que aquesta definició inclou ε en qualsevol L*)
* La intercalació L$_1$* L₂ consisteix en totes aquelles paraules que poden ser escrites de la manera v$_1$w$_1$v₂w₂...v$_n$w$_n$; són paraules tals que la concatenació v$_1$...v$_n$ és a L$_1$, i la concatenació w$_1$...w$_n$ és a L₂
Una pregunta que es fa típicament sobre un determinat llenguatge formal L és com és de difícil decidir si inclou o no una determinada paraula v. Aquest tema és del domini de la teoria de la computabilitat i la teoria de la complexitat computacional.
Per contraposició al llenguatge propi dels éssers vius i en especial el llenguatge humà, considerats llenguatges naturals, es denomina llenguatge formal als llenguatges «artificials» propis de les matemàtiques o la informàtica, els llenguatges artificials són anomenats llenguatges formals (incloent llenguatges de programació). No obstant això, el llenguatge humà té una característica que no es troba en els llenguatges de programació: la diversitat.
El 1956, Noam Chomsky va crear la Jerarquia de Chomsky per organitzar els diferents tipus de llenguatge formal.

## Veritats concernents als llenguatges formals

Teorema 1: El conjunt de llenguatges en general (incloent-hi els no formals) és no numerable .
Lema 1: El conjunt de llenguatges en un alfabet no buit donat és no numerable
Afirmar que un alfabet és no-buit equival a afirmar que aquest alfabet contingui com a mínim un símbol, ergo, només cal demostrar que el conjunt de llenguatges en l'alfabet $\{a\}\,$ és no numerable. Com sabem, un llenguatge L dins $\{a\}\,$ és un subconjunt de $\{a\}^{*}\,$, això ens porta a la conclusió que, el conjunt de tots els llenguatges en $\{a\}\,$ és justament $2^{\{a\}^{*}}\,$ (el conjunt de tots els subconjunts o conjunt potència de $\{a\}^{*}\,$) i és evident que $\{a\}^{*}\,$ és infinit (de fet, numerable), també ha estat demostrat que si $A$ és un conjunt infinit (numerable o no), llavors $2^{A}$ és major que $A$ perquè $2^{A}$ passa a ser un conjunt infinit d'ordres de l'infinit, en ser més gran, no hi haurà bijecció entre $A$ i $2^{A}$, el que fa a $2^{A}$ un conjunt infinit no numerable, la prova ha finalitzat.
Demostració del Teorema 1: pot derivar fàcilment que l'asseveració delineada en el teorema 1 és vertadera, perquè el conjunt de llenguatges en general és justament una unió infinita de conjunts del tipus $2^{A}$, on $A$ és un conjunt infinit numerable.
Teorema 2: Els llenguatges són conjunts numerables
Se sap que un llenguatge $L$ en un alfabet $\Sigma$ és un subconjunt de $\Sigma ^{*}$ i com ja es va fer menció, $\Sigma ^{*}$ és infinit no numerable, per tant, $L$ és com a molt un conjunt infinit no numerable (de la mateixa mida que $\Sigma ^{*}$), la prova ha culminat.
Teorema 3: El conjunt de llenguatges formals és numerable
Com sabem un llenguatge formal pot ser generat per una gramàtica formal (o d'estructura de frase), la qual cosa implica que tot llenguatge formal pot ser acceptat per una MT, el que al seu torn implica que es pot definir una bijecció entre el conjunt de llenguatges formals i el conjunt de les MT's (degut a la propietat transitiva de la relació "hi ha bijecció entre $A$ i $B$"). Per demostrar el teorema s'utilitzarà el concepte de codificació de MT's que s'introdueix en l'estudi de les MT's universals, generalment es codifica una MT amb una funció que té precisament com a domini el conjunt de les MT ' s (l'anomenarem $X$) i com a abast $\{0,1\}^{*}\,$, aquesta funció pot ser una bijecció si el Codomini passa a ser I (un subconjunt de $\{0,1\}^{*}\,$) i com $\{0,1\}^{*}\,$ és numerable, aquest subconjunt també serà numerable i com existeix aquesta bijecció (entre $X$ i $I$), l'asseveració ha estat demostrada, prova conclosa.

## Vegeu també

* Teoria de la computabilitat
* Ciències de la computació
* Llenguatge d'especificació
* Llenguatge formalitzat

## Notes i referències

* ↑ Mellema, Gregory. «formal language» (en anglès). Oxford University Press. [Consulta: 7 febrer 2010].

## Enllaços externs

* Llibre electrònic gratuït sobre autòmats i llenguatges formals Arxivat 2007-07-03 a Wayback Machine. (Tecnològic de Monterrey, Mèxic)