Def: Fix an alphabet \Sigma. Then the regular languages over \Sigma are
all and only the following:
1. the \emptyset is a regular language,
{ \Lambda } (the singleton of the emptystring) is a regular language, and
{ a } (the singleton of a) is a regular language, for any a \in \Sigma.
2. If L_1 and L_2 are regular languages, then so are
L_1 \union L_2,
L_1 \concatenate L_2, and
L_1^*
Def: Fix an alphabet \Sigma. Then the regular expressions over \Sigma are
all and only the following:
1. \emptyset, \Lambda, and a are regular expressions, where a\in\Sigma.
2. If x and y are regular expressions, then so are
(x \union y),
(x \concatenate y), and
(x^*).
Keep clear: a regular expression is just a string. But a regular expression
\alpha names a regular language L(\alpha) in the natural (recursive) way:
L(\emptyset) = \emptyset
L(\Lambda) = { \Lambda }
L(a) = { a }
L((x \union y)) = L(x) \union L(y)
L((x \concatenate y)) = L(x) L(y)
L((x^*)) = (L(x))^*