Existem vários modelos diferentes para definir transformações entre idiomas. Transdutores de estado finito e transformações de gráficos definíveis pelo MSO sobre gráficos de cadeias de caracteres são as duas com as quais estou melhor familiarizado. Sabemos que os transdutores de estado finito bidirecional (que são mais expressivos que seus equivalentes unidirecionais) e as transformações de cadeia definíveis pelo MSO capturam o mesmo conjunto de transformações, juntamente com outros modelos menos conhecidos que usam combinadores. Essa classe de transformações é considerada regular e, portanto, é fácil mostrar que uma transformação é regular se você puder fornecer uma descrição dela com um desses modelos.
Existe uma maneira direta de dizer que uma transformação está fora dessa classe? Algo semelhante ao lema de bombeamento para linguagens regulares ou o teorema de Myhill-Nerode, mas para transformações de strings é o tipo de coisa que estou procurando.
fonte