Union of two regular languages

From HandWiki

In formal language theory, and in particular the theory of nondeterministic finite automata, it is known that the union of two regular languages is a regular language. This article provides a proof of that statement.

Theorem

For any regular languages [math]\displaystyle{ L_{1} }[/math] and [math]\displaystyle{ L_{2} }[/math], language [math]\displaystyle{ L_{1}\cup L_{2} }[/math] is regular.

Proof

Since [math]\displaystyle{ L_{1} }[/math] and [math]\displaystyle{ L_{2} }[/math] are regular, there exist NFAs [math]\displaystyle{ N_{1},\ N_{2} }[/math] that recognize [math]\displaystyle{ L_{1} }[/math] and [math]\displaystyle{ L_{2} }[/math].

Let

[math]\displaystyle{ N_{1} = (Q_{1},\ \Sigma ,\ T_{1},\ q_{1},\ A_{1}) }[/math]
[math]\displaystyle{ N_{2} = (Q_{2},\ \Sigma ,\ T_{2},\ q_{2},\ A_{2}) }[/math][clarification needed]

Construct

[math]\displaystyle{ N = (Q,\ \Sigma ,\ T,\ q_{0},\ A_{1}\cup A_{2}) }[/math]

where

[math]\displaystyle{ Q = Q_{1}\cup Q_{2}\cup\{q_{0}\} }[/math]
[math]\displaystyle{ T(q,x) = \left\{\begin{array}{lll} T_{1}(q,x) & \mbox{if} & q\in Q_{1} \\ T_{2}(q,x) & \mbox{if} & q\in Q_{2} \\ \{q_{1}, q_{2}\} & \mbox{if} & q = q_{0}\ and\ x =\epsilon\\ \emptyset & \mbox{if} & q = q_{0}\ and\ x\neq\epsilon \end{array}\right. }[/math]

In the following, we shall use [math]\displaystyle{ p\stackrel{x,T}{\rightarrow}q }[/math] to denote [math]\displaystyle{ q\in E(T(p,x)) }[/math][clarification needed]

Let [math]\displaystyle{ w }[/math] be a string from [math]\displaystyle{ L_{1}\cup L_{2} }[/math]. Without loss of generality assume [math]\displaystyle{ w\in L_{1} }[/math].

Let [math]\displaystyle{ w = x_{1}x_{2}\cdots x_{m} }[/math] where [math]\displaystyle{ m\geq 0, x_{i}\in\Sigma }[/math]

Since [math]\displaystyle{ N_{1} }[/math] accepts [math]\displaystyle{ x_{1}x_{2}\cdots x_{m} }[/math], there exist [math]\displaystyle{ r_{0}, r_{1},\cdots r_{m}\in Q_{1} }[/math] such that[clarification needed]

[math]\displaystyle{ q_{1}\stackrel{\epsilon , T_{1}}{\rightarrow}r_{0}\stackrel{x_{1} , T_{1}}{\rightarrow}r_{1}\stackrel{x_{2} , T_{1}}{\rightarrow}r_{2}\cdots r_{m-1}\stackrel{x_{m} , T_{1}}{\rightarrow}r_{m}, r_{m}\in A_{1} }[/math]

Since [math]\displaystyle{ T_{1}(q,x) = T(q,x)\ \forall q\in Q_{1}\forall x\in\Sigma }[/math]

[math]\displaystyle{ r_{0}\in E(T_{1}(q_{1},\epsilon ))\Rightarrow r_{0}\in E(T(q_{1},\epsilon )) }[/math]
[math]\displaystyle{ r_{1}\in E(T_{1}(r_{0},x_{1} ))\Rightarrow r_{1}\in E(T(r_{0},x_{1} )) }[/math]
[math]\displaystyle{ \vdots }[/math]
[math]\displaystyle{ r_{m}\in E(T_{1}(r_{m-1},x_{m} ))\Rightarrow r_{m}\in E(T(r_{m-1},x_{m} )) }[/math]


We can therefore substitute [math]\displaystyle{ T }[/math] for [math]\displaystyle{ T_{1} }[/math] and rewrite the above path as


[math]\displaystyle{ q_{1}\stackrel{\epsilon , T}{\rightarrow}r_{0}\stackrel{x_{1} , T}{\rightarrow}r_{1}\stackrel{x_{2} , T}{\rightarrow}r_{2}\cdots r_{m-1}\stackrel{x_{m} , T}{\rightarrow}r_{m}, r_{m}\in A_{1}\cup A_{2}, r_{0}, r_{1},\cdots r_{m}\in Q }[/math]


Furthermore,

[math]\displaystyle{ \begin{array}{lcl} T(q_{0}, \epsilon) = \{q_{1}, q_{2}\} & \Rightarrow & q_{1}\in T(q_{0}, \epsilon)\\ \\ & \Rightarrow & q_{1}\in E(T(q_{0}, \epsilon))\\ \\ & \Rightarrow & q_{0}\stackrel{\epsilon , T}{\rightarrow}q_{1} \end{array} }[/math]

and

[math]\displaystyle{ q_{0}\stackrel{\epsilon , T}{\rightarrow}q_{1}\stackrel{\epsilon , T}{\rightarrow}r_{0}\Rightarrow q_{0}\stackrel{\epsilon , T}{\rightarrow}r_{0} }[/math]


The above path can be rewritten as


[math]\displaystyle{ q_{0}\stackrel{\epsilon , T}{\rightarrow}r_{0}\stackrel{x_{1} , T}{\rightarrow}r_{1}\stackrel{x_{2} , T}{\rightarrow}r_{2}\cdots r_{m-1}\stackrel{x_{m} , T}{\rightarrow}r_{m}, r_{m}\in A_{1}\cup A_{2}, r_{0}, r_{1},\cdots r_{m}\in Q }[/math]


Therefore, [math]\displaystyle{ N }[/math] accepts [math]\displaystyle{ x_{1}x_{2}\cdots x_{m} }[/math] and the proof is complete.[clarification needed]


Note: The idea drawn from this mathematical proof for constructing a machine to recognize [math]\displaystyle{ L_{1}\cup L_{2} }[/math] is to create an initial state and connect it to the initial states of [math]\displaystyle{ L_{1} }[/math] and [math]\displaystyle{ L_{2} }[/math] using [math]\displaystyle{ \epsilon }[/math] arrows.

References

  • Michael Sipser, Introduction to the Theory of Computation ISBN:0-534-94728-X. (See . Theorem 1.22, section 1.2, pg. 59.)