An infinite language can't be regular? What is a finite language?

Roger Costello picture Roger Costello · Jul 1, 2013 · Viewed 24.5k times · Source

I read this in a book on computability:

(Kleene's Theorem) A language is regular if and only if it can be obtained from finite languages by applying the three operations union, concatenation, repetition a finite number of times.

I am struggling with "finite languages".

Consider this language: L = a*

It is not finite. It is the set {0, a, aa, aaa, ...} which is clearly an infinite set (0 = the empty string).

So it is an infinite language, right? That is, "infinite set" means "infinite language", right?

Clearly, a* is a regular language. And it is an infinite language. Thus, by Kleene's Theorem it cannot be a regular language. Contradiction.

I'm confused. I guess that I don't know what "finite language" means.

Answer

dakillakan picture dakillakan · Jul 1, 2013

You are on the right track, it could be clearer. Kleen's theorem expresses the equivalence of three statements

A language is regular == A language can be expressed by a Regular Expression == A language can be expressed by a finite automata.

Your example is indeed a regular language. A finite language is what you would expect it to be, a language that can be listed in a finite amount of time.

When they are talking about repetition, they are talking about the Kleen Star operation, which is exactly what a* represents, the set {empty, a, aa, aaa, aaaa, ...}

EDIT:

I have found this link: Kleenes Theorem which helps quite a bit. It by 'repetition' they mean Kleen Star, then the original statement makes sense. a* is Kleen_Star(a)