Но ведь я же и хочу описать дополнение. То, что КС-языки не замкнуты относительно дополнения -- это понятно.
Собственно, можно так построить рассуждение. Заметим, что слова из языка
-- это слова, для которых выполнено одновременно:
1. Правильный порядок сегментов.
2. Между
a и
c столько
b, сколько их в сумме.
3. Количество
c и
a после
b равно их сумме.
4. Количество первых и последних
a равно количеству
b.
Слова из дополнения -- слова, для которых не выполнен хотя бы один пункт. Т.о. дополнение -- объединение языков
, для слов из которых выполнено отрицание
. Такие языки явно КС, т.к. предъявляется МП-автомат.
Наводящее соображение, почему дополнение контекстно-свободно. Если пытаться строить магазинный автомат, порождающий исзодный язык, всегда будет чуть-чуть не получаться: например,
сделать можно, но на
уже не хватает возможностей. Т.е. всегда не хватает возможностей только на одну какую-то штуку. А каковы слова из дополнения? Это те слова, для которых не выполнена хотя бы одна "штука". Вот и перечисляем аккуратно все "штуки" и пишем МП-автомат для них.