Теорема 9.6.1.
Если L1 - контекстно-свободный язык и L2 - автоматный язык, то язык
является контекстно-свободным.
Доказательство. Пусть - контекстно-свободная грамматика, порождающая язык L1. Без ограничения общности можно считать, что множество P содержит только правила вида
и , где ,
и
(см. теорему 8.3.3). Пусть - конечный автомат, распознающий язык L_2. Без ограничения общности можно считать, что для каждого перехода
выполняется равенство |x| = 1 (см. лемму 2.3.3).
Построим контекстно-свободную грамматику , порождающую язык . Положим
где - новый символ (не принадлежащий множеству ).
Пример 9.6.2.
Пусть . Рассмотрим контекстно-свободный язык L1, порождаемый грамматикой
и автоматный язык L2, распознаваемый конечным автоматом , где Q = {1,2}, I = {1}, F = {2},
Тогда язык
порождается контекстно-свободной грамматикой
Здесь S11, S12, S21
и S22
соответствуют символам , ,
и
из доказательства теоремы 9.6.1.
Теорема 9.6.3*.
Если L1 - линейный язык и L2 - автоматный язык, то язык
является линейным.
Пример 9.6.4*.
Пусть . Рассмотрим линейный язык L1, порождаемый грамматикой
и автоматный язык L2, распознаваемый конечным автоматом , где Q = {1,2,3}, I = {1}, F = {3},
Тогда язык
порождается контекстно-свободной грамматикой
Эту грамматику можно упростить, заменив S11 и S33
на один символ.
Упражнение 9.6.5. Найти контекстно-свободную грамматику для языка , где L1
порождается грамматикой
а язык L2
порождается грамматикой
Упражнение 9.6.6. Найти контекстно-свободную грамматику для языка , где L1
порождается грамматикой
а язык L2
порождается грамматикой
Упражнение 9.6.7. Является ли контекстно-свободным язык
Упражнение 9.6.8. Является ли контекстно-свободным язык
Упражнение 9.6.9.
Существует ли над алфавитом {a,b} такой линейный язык L, что язык
не является контекстно-свободным?