This section will be about strings, languages and language operations. You can find the related notes here.

Definitions and Properties

I first introduce what we mean by a string and a language in the context of theoretical computer science. I provide some common properties of these objects that will re-occur throughout the course.

Operations on languages

Much like sets, languages also have associated operations. I discuss some of these along with some exercises. Extra exercises are at the end of the handout for you to practice!

Exercises

Exercise (Sipser). Prove that \(L^2 \subseteq L\) iff \(L = L^+\). This is a good exercise to both practice your proving skills and get familiar with language operations.

Exercise. Suppose \(A\) and \(B\) are two languages defined over a non-empty alphabet \(\Sigma\). Prove that if both languages are finite \(|A \times B| = |A| \times |B|\). Is the same true for language concatenation?