Trying to do some revision but not sure on this one:
Prove that the set of all languages over a finite alphabet is uncountable.
I have a feeling it will require using the Cantor Diagonalization method - but I'm not sure how you would use it for this problem.
Set of languages over finite alphabet is uncountable.
Set of all languages over is uncountable. Power set of an infinite set is uncountable. Set of languages over is the power set of set of strings over which is an infinite set. Hence the set of languages becomes an uncountable set.
There are uncountably many languages over a nonempty set Σ but only countably many representations in a finite set of symbols. Therefore most languages will never have a finite representation. Regular expressions are one way to represent languages.
I've found in my computation theory class notes this proof, I hope it's useful for you
|N| < |languages(N)|
Supose that |N| >= |languages(N)|. Therefore, each of the elements of languages(N) can be related to one of the elements of N. So they can be put into order:
languages(N) = {S_1 , S_2, S_3, ...}
We define a set D like:
D = {n in N / n not in S_n}
D is valid and D is a subset of N, therefore D belongs languages(N). So, there must exist a k for which D = S_k
1) If k belongs to D then by definition of D, k doesn't belong to S_k. And k doesn't belong to D Because D = S_k(We find a contradiction)
2) If k doesn't belong to D then: k belongs to S_k(by definition of D) and k belongs to D because D = S_k(Contradiction again)
A sequence like the one assumed can't exist. Therefore an injective function that assigns an elemnt of N for each element of languages(N) is not possible. Concluding that |languages(N)| !<= |N|, so |languages(N)| > |N|
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With