Sì, deve essere finito. Immagina di avere quel set infinito di possibili corrispondenze e il tuo input è 011
. Saresti mai in grado di rifiutarlo? Saresti mai a corto di partite da controllare?
Esiste un linguaggio che, secondo tale definizione, non sarebbe regolare ? Che dire dell'insieme di tutte le coppie di programmi e input in modo tale che il programma dato si arresti sull'input dato?
Ora, se avessi un programma che enumera le stringhe in una lingua in ordine lessicografico—
Aggiornare
Per chiarire un po 'in base al feedback nei commenti, la ragione per cui non tutte le lingue di questo modulo sono regolari è per definizione. Se, ad esempio, cerchi la prova del teorema di Kleene, dipende dal fatto che un'espressione regolare deve essere limitata per dimostrare che genera una macchina a stati finiti.
Perché definiamo un linguaggio "normale" in quel modo? Poiché ogni linguaggio formale è un sottoinsieme delle stringhe di un alfabeto e ogni serie di stringhe può essere espressa come unione di singoli, quindi se chiamassimo qualsiasi serie di stringhe una lingua "normale", la lingua normale sarebbe solo un sinonimo di la lingua . Questa non è una definizione molto utile, soprattutto perché non possiamo effettivamente implementarla in hardware o software. Non possiamo archiviare un elenco infinito arbitrario da nessuna parte o costruire una macchina a stato infinito.
Come ho accennato, tuttavia, se hai un modo per enumerare tutte le stringhe in una lingua in ordine, puoi costruirne un decider (accetta quando vedi quella stringa esatta, rifiuta quando incontri una stringa che segue quella che tu stai cercando) e viceversa (per ogni stringa in ordine, eseguilo attraverso il decisore ed emettilo se e solo se è accettato). Quindi, se considerassimo regolare ogni lingua enumerabile , ogni lingua decidibile sarebbe "regolare" e avremmo bisogno di un nuovo termine per le lingue riconosciute dalle macchine a stati finiti e le loro codifiche equivalenti come espressioni finite.