Dada uma linguagem regular , é fácil provar que existe um constante, como , com existem cadeias , e modo que e e, para todo , é. É amplamente afirmado que o inverso não é verdadeiro, mas não vi nenhum exemplo claro. Alguma sugestão? Claramente, a prova de que a linguagem ofensiva não é regular deve usar métodos mais fortes do que o típico "não satisfaz o lema da bomba". Eu estaria interessado em exemplos simples, para apresentar em aulas introdutórias de idiomas formais.
formal-languages
proof-techniques
vonbrand
fonte
fonte
Respostas:
A linguagem parece ser simples. A segunda parte é regular (e pode ser bombeada). A primeira parte não é regular, mas pode ser bombeada "para dentro" da segunda parte, escolhendo $ para bombear.{$anbn∣n≥1}∪{$kw∣k≠1,w∈{a,b}∗} $
(adicionado) Obviamente, isso pode ser generalizado para para qualquer L ⊆ { a , b } ∗ . Às vezes, a formulação está no estilo "se ... então ...": se w começa com um único $ , é da forma. Que eu pessoalmente acho menos intuitivo.$L∪{$k∣k≠1}⋅{a,b}∗ L⊆{a,b}∗ w $
Conforme observado por @vonbrand, a parte (possivelmente) não regular do idioma é isolada pela interseção com . Isso pode ser testado separadamente usando o lema de bombeamento, se necessário.${a,b}∗
fonte