Το αντίστροφο φυσικά δεν ισχύει όπως δείχνουν πολλά από τα παραδείγματα
που έχουμε δει ως τώρα, π.χ. η γλώσσα
.
Απόδειξη.
Έστω
κανονική γλώσσα. Αυτό σημαίνει ότι υπάρχει μια κανονική έκφραση
για τη γλώσσα. Αρκεί να δείξουμε ότι κάθε κανονική έκφραση περιγράφει
μια context free γλώσσα.
Αρχίζουμε από τις απλούστερες κανονικές εκφράσεις και το
δείχνουμε σταδιακά για όλες.
Κάνουμε δηλ. επαγωγή ως προς το μήκος της κανονικής έκφρασης.
Αν η κανονική έκφραση έχει μήκος 1,
τότε είναι αναγκαστικά ένα γράμμα του
,
το σύμβολο ή το σύμβολο
(ανατρέξτε πίσω στον Ορισμό 7.19).
Αν είναι γράμμα του
δηλ.
για κάποιο
, τότε η γλώσσα είναι
το μονοσύνολο
, το οποίο δίνεται από την CFG
.
Αν
τότε
που δίνεται από την
CFG
, και αν
τότε
και αυτό το σύνολο δίνεται από τη CFG , που προφανώς
δεν παράγει τίποτα.
Αν τώρα το μήκος της έκφρασης είναι μεγαλύτερο του 1 τότε, με βάση τον
ορισμό των κανονικών εκφράσεων, η είναι της μορφής
- , με κανονικές εκφράσεις μικρότερου μήκους.
Από την επαγωγική υπόθεση υπάρχουν context free γραμματικές
και τέτοιες ώστε
και
.
Για να φτιάξουμε μια CFG για τη γλώσσα
μετονομάζουμε
κατ' αρχήν όλα τα μη τερματικά σύμβολα της και της ώστε
να είναι διαφορετικά μεταξύ τους και διαφορετικά
από , και ονομάζουμε τα δύο αρχικά μη τερματικά
σύμβολα σε και για τις και αντίστοιχα. Η CFG
για τη γλώσσα έχει ως κανόνες όλους τους κανόνες της και της
συν τον κανόνα
, που είναι και ο μόνος κανόνας
για το αρχικό μη τερματικό σύμβολο .
- . Όπως και πριν όλα μόνο που ο επιπλέον κανόνας της
γραμματικής δεν είναι τώρα ο
αλλά οι δύο κανόνες
.
- . Μετονομάζουμε το αρχικό μη τερματικό σύμβολο της CFG
για το σε (ή κάποιο άλλο όνομα αν αυτό υπάρχει ήδη στη
γραμματική) και προσθέτουμε τον κανόνα
.