Теорема Парика
Используемые определения
В этом разделе предполагается, что зафиксирован некоторый линейный порядок на алфавите . Пусть .
| Определение: |
| Через будем обозначать функцию , определённую следующим образом: , где — количество появлений символа в слове . Аналогично, каждому языку ставится в соответствие множество , определённое так: . |
Пусть и . Тогда .
| Определение: |
| Пусть при — вектора в множестве . Множество называется линейным (англ. linear) подмножеством множества . |
Говоря проще, линейное подмножество может быть построено с помощью любого m-размерного вектора добавлением к нему произвольного числа m-размерных векторов из конечного множества, например, 1 раз и 0 раз остальные вектора, 1 раз , 1 раз и 0 раз остальные, и так далее.
Множество является линейным.
| Определение: |
| Подмножество множества называется полулинейным (англ. semilinear), если оно является объединением конечного числа линейных множеств. |
- Любое конечное подмножество — полулинейно.
- Полулинейные множества замкнуты относительно операции объединения, пересечения, разности и проекции.
- Полулинейные множества по теореме Гинзбурга-Спаниера (англ. Ginsburg and Spanier theorem) — те, которые определяемы в арифметика Пресбургера (англ. Presburger arithmetic).
Пусть , , и линейные подмножества , а является полулинейным подмножеством .
Теорема Парика
| Теорема (Парика, англ. Parikh's theorem): |
Если язык является контекстно-свободным, то множество является полулинейным. |
| Доказательство: |
|
Для доказательства будем пользоваться леммой о накачке для контекстно-свободных языков. //Пусть — неукорачивающая контекстно-свободная грамматика, порождающая множество , и пусть — константа из леммы о накачке. //Для каждого набора нетерминалов , содержащих , |
Теорема Парика связывает два понятия: функцию контекстно-свободного языка и полулинейное множество. Например, для языка функция .
Эта теорема, так же, как и лемма о накачке и лемма Огдена, не является достаточной: язык не является контекстно-свободным, однако его множество является полулинейным: .
Примеры
Язык — простое число не является контекстно-свободным, так как множество простых чисел не является полулинейным (в арифметике Пресбургера нельзя определить множество простых чисел).
Язык или — простое и не является контекстно свободным, так как множество, порождаемое функцией , не является полулинейным: множество таких пар — линейно, множество таких пар — линейно, при этом множество простых чисел не является полулинейным, и, как следствие, множество — простое и не является полулинейным, так же не полулинейно.
См. также
Источники
- Гинзбург С. — Математическая теория контекстно-свободных языков