By
definition, the
alphabet of a formal language L over \Sigma is the set \Sigma, which can be
any non-empty set of symbols from which every string in L is built. For example, the set \Sigma = \{\_,\mathrm{a}, \dots, \mathrm{z}, \mathrm{A}, \dots, \mathrm{Z}, 0, \mathrm{1}, \dots, \mathrm{9}\} can be the alphabet of the formal language L that means "all
variable identifiers in the
C programming language". It is not required to use every symbol in the alphabet of L for its strings. Given an alphabet \Sigma, the set of all strings of length n over the alphabet \Sigma is indicated by \Sigma^n. The set \bigcup_{i \in \mathbb{N}} \Sigma^i of all finite strings (regardless of their length) is indicated by the
Kleene star operator as \Sigma^*, and is also called the Kleene closure of \Sigma. The notation \Sigma^\omega indicates the set of all infinite sequences over the alphabet \Sigma, and \Sigma^\infty indicates the set \Sigma^\ast \cup \Sigma^\omega of all finite or infinite sequences. For example, using the binary alphabet {0,1}, the strings ε, 0, 1, 00, 01, 10, 11, 000, etc. are all in the Kleene closure of the alphabet (where ε represents the
empty string). ==Applications==