|         |      1 theory Myhill | 
|         |      2   imports Myhill_2 | 
|         |      3 begin | 
|         |      4  | 
|         |      5 section {* Preliminaries \label{sec_prelim}*} | 
|         |      6  | 
|         |      7 subsection {* Finite automata and \mht  \label{sec_fa_mh} *} | 
|         |      8  | 
|         |      9 text {* | 
|         |     10  | 
|         |     11 A {\em determinisitc finite automata (DFA)} $M$ is a 5-tuple  | 
|         |     12 $(Q, \Sigma, \delta, s, F)$, where: | 
|         |     13 \begin{enumerate} | 
|         |     14   \item $Q$ is a finite set of {\em states}, also denoted $Q_M$. | 
|         |     15   \item $\Sigma$ is a finite set of {\em alphabets}, also denoted $\Sigma_M$. | 
|         |     16   \item $\delta$ is a {\em transition function} of type @{text "Q \<times> \<Sigma> \<Rightarrow> Q"} (a total function), | 
|         |     17            also denoted $\delta_M$. | 
|         |     18   \item @{text "s \<in> Q"} is a state called {\em initial state}, also denoted $s_M$. | 
|         |     19   \item @{text "F \<subseteq> Q"} is a set of states named {\em accepting states}, also denoted $F_M$. | 
|         |     20 \end{enumerate} | 
|         |     21 Therefore, we have $M = (Q_M, \Sigma_M, \delta_M, s_M, F_M)$. Every DFA $M$ can be interpreted as  | 
|         |     22 a function assigning states to strings, denoted $\dfa{M}$, the  definition of which is as the following: | 
|         |     23 \begin{equation} | 
|         |     24 \begin{aligned} | 
|         |     25   \dfa{M}([]) &\equiv s_M \\ | 
|         |     26    \dfa{M}(xa) &\equiv  \delta_M(\dfa{M}(x), a) | 
|         |     27 \end{aligned} | 
|         |     28 \end{equation} | 
|         |     29 A string @{text "x"} is said to be {\em accepted} (or {\em recognized}) by a DFA $M$ if  | 
|         |     30 $\dfa{M}(x) \in F_M$. The language recoginzed by DFA $M$, denoted | 
|         |     31 $L(M)$, is defined as: | 
|         |     32 \begin{equation} | 
|         |     33   L(M) \equiv \{x~|~\dfa{M}(x) \in F_M\} | 
|         |     34 \end{equation} | 
|         |     35 The standard way of specifying a laugage $\Lang$ as {\em regular} is by stipulating that: | 
|         |     36 $\Lang = L(M)$ for some DFA $M$. | 
|         |     37  | 
|         |     38 For any DFA $M$, the DFA obtained by changing initial state to another $p \in Q_M$ is denoted $M_p$,  | 
|         |     39 which is defined as: | 
|         |     40 \begin{equation} | 
|         |     41     M_p \ \equiv\ (Q_M, \Sigma_M, \delta_M, p, F_M)  | 
|         |     42 \end{equation} | 
|         |     43 Two states $p, q \in Q_M$ are said to be {\em equivalent}, denoted $p \approx_M q$, iff. | 
|         |     44 \begin{equation}\label{m_eq_def} | 
|         |     45   L(M_p) = L(M_q) | 
|         |     46 \end{equation} | 
|         |     47 It is obvious that $\approx_M$ is an equivalent relation over $Q_M$. and  | 
|         |     48 the partition induced by $\approx_M$ has $|Q_M|$ equivalent classes. | 
|         |     49 By overloading $\approx_M$,  an equivalent relation over strings can be defined: | 
|         |     50 \begin{equation} | 
|         |     51   x \approx_M y ~ ~ \equiv ~ ~ \dfa{M}(x) \approx_M \dfa{M}(y) | 
|         |     52 \end{equation} | 
|         |     53 It can be proved that the the partition induced by $\approx_M$ also has $|Q_M|$ equivalent classes. | 
|         |     54 It is also easy to show that: if $x \approx_M y$, then $x \approx_{L(M)} y$, and this means | 
|         |     55 $\approx_M$ is a more refined equivalent relation than $\approx_{L(M)}$. Since partition induced by | 
|         |     56 $\approx_M$ is finite, the one induced by $\approx_{L(M)}$ must also be finite, and this is  | 
|         |     57 one of the two directions of \mht: | 
|         |     58 \begin{Lem}[\mht , Direction two] | 
|         |     59   If a language $\Lang$ is regular (i.e. $\Lang = L(M)$ for some DFA $M$), then  | 
|         |     60   the partition induced by $\approx_\Lang$ is finite. | 
|         |     61 \end{Lem} | 
|         |     62  | 
|         |     63 The other direction is: | 
|         |     64 \begin{Lem}[\mht , Direction one]\label{auto_mh_d1} | 
|         |     65   If  the partition induced by $\approx_\Lang$ is finite, then | 
|         |     66   $\Lang$ is regular (i.e. $\Lang = L(M)$ for some DFA $M$). | 
|         |     67 \end{Lem} | 
|         |     68 The $M$ we are seeking when prove lemma \ref{auto_mh_d2} can be constructed out of $\approx_\Lang$, | 
|         |     69 denoted $M_\Lang$ and defined as the following: | 
|         |     70 \begin{subequations} | 
|         |     71 \begin{eqnarray} | 
|         |     72   Q_{M_\Lang} ~ & \equiv & ~ \{ \cls{x}{\approx_\Lang}~|~ x \in \Sigma^* \}\\ | 
|         |     73   \Sigma_{M_\Lang} ~ & \equiv & ~ \Sigma_M \\ | 
|         |     74   \delta_{M_\Lang} ~ & \equiv & ~ \left (\lambda (\cls{x}{\approx_\Lang}, a).  \cls{xa}{\approx_\Lang} \right) \\ | 
|         |     75   s_{M_\Lang} ~ & \equiv & ~ \cls{[]}{\approx_\Lang} \\ | 
|         |     76   F_{M_\Lang} ~ & \equiv & ~ \{ \cls{x}{\approx_\Lang}~|~ x \in \Lang \} | 
|         |     77 \end{eqnarray} | 
|         |     78 \end{subequations} | 
|         |     79 It can be proved that $Q_{M_\Lang}$ is indeed finite and $\Lang = L(M_\Lang)$, so lemma \ref{auto_mh_d1} holds. | 
|         |     80 It can also be proved that $M_\Lang$ is the minimal DFA (therefore unique) which recoginzes $\Lang$. | 
|         |     81  | 
|         |     82  | 
|         |     83  | 
|         |     84 *} | 
|         |     85  | 
|         |     86 subsection {* The objective and the underlying intuition *} | 
|         |     87  | 
|         |     88 text {* | 
|         |     89   It is now obvious from section \ref{sec_fa_mh} that \mht\ can be established easily when | 
|         |     90   {\em reglar languages} are defined as ones recognized by finite automata.  | 
|         |     91   Under the context where the use of finite automata is forbiden, the situation is quite different. | 
|         |     92   The theorem now has to be expressed as: | 
|         |     93   \begin{Thm}[\mht , Regular expression version] | 
|         |     94       A language $\Lang$ is regular (i.e. $\Lang = L(\re)$ for some {\em regular expression} $\re$) | 
|         |     95       iff. the partition induced by $\approx_\Lang$ is finite. | 
|         |     96   \end{Thm} | 
|         |     97   The proof of this version consists of two directions (if the use of automata are not allowed): | 
|         |     98   \begin{description} | 
|         |     99     \item [Direction one:]  | 
|         |    100       generating a regular expression $\re$ out of the finite partition induced by $\approx_\Lang$, | 
|         |    101       such that $\Lang = L(\re)$. | 
|         |    102     \item [Direction two:] | 
|         |    103           showing the finiteness of the partition induced by $\approx_\Lang$, under the assmption | 
|         |    104           that $\Lang$ is recognized by some regular expression $\re$ (i.e. $\Lang = L(\re)$). | 
|         |    105   \end{description} | 
|         |    106   The development of these two directions consititutes the body of this paper. | 
|         |    107  | 
|         |    108 *} | 
|         |    109  | 
|         |    110 section {* Direction @{text "regular language \<Rightarrow>finite partition"} *} | 
|         |    111  | 
|         |    112 text {* | 
|         |    113   Although not used explicitly, the notion of finite autotmata and its relationship with  | 
|         |    114   language partition, as outlined in section \ref{sec_fa_mh}, still servers as important intuitive  | 
|         |    115   guides in the development of this paper. | 
|         |    116   For example, {\em Direction one} follows the {\em Brzozowski algebraic method} | 
|         |    117   used to convert finite autotmata to regular expressions, under the intuition that every  | 
|         |    118   partition member $\cls{x}{\approx_\Lang}$ is a state in the DFA $M_\Lang$  constructed to prove  | 
|         |    119   lemma \ref{auto_mh_d1} of section \ref{sec_fa_mh}. | 
|         |    120  | 
|         |    121   The basic idea of Brzozowski method is to extract an equational system out of the  | 
|         |    122   transition relationship of the automaton in question. In the equational system, every | 
|         |    123   automaton state is represented by an unknown, the solution of which is expected to be  | 
|         |    124   a regular expresion characterizing the state in a certain sense. There are two choices of  | 
|         |    125   how a automaton state can be characterized.  The first is to characterize by the set of  | 
|         |    126   strings leading from the state in question into accepting states.  | 
|         |    127   The other choice is to characterize by the set of strings leading from initial state  | 
|         |    128   into the state in question. For the second choice, the language recognized the automaton  | 
|         |    129   can be characterized by the solution of initial state, while for the second choice,  | 
|         |    130   the language recoginzed by the automaton can be characterized by  | 
|         |    131   combining solutions of all accepting states by @{text "+"}. Because of the automaton  | 
|         |    132   used as our intuitive guide, the $M_\Lang$, the states of which are  | 
|         |    133   sets of strings leading from initial state, the second choice is used in this paper. | 
|         |    134  | 
|         |    135   Supposing the automaton in Fig \ref{fig_auto_part_rel} is the $M_\Lang$ for some language $\Lang$,  | 
|         |    136   and suppose $\Sigma = \{a, b, c, d, e\}$. Under the second choice, the equational system extracted is: | 
|         |    137   \begin{subequations} | 
|         |    138   \begin{eqnarray} | 
|         |    139     X_0 & = & X_1 \cdot c + X_2 \cdot d + \lambda \label{x_0_def_o} \\ | 
|         |    140     X_1 & = & X_0 \cdot a + X_1 \cdot b + X_2 \cdot d \label{x_1_def_o} \\ | 
|         |    141     X_2 & = & X_0 \cdot b + X_1 \cdot d + X_2 \cdot a \\ | 
|         |    142     X_3 & = & \begin{aligned} | 
|         |    143                  & X_0 \cdot (c + d + e) + X_1 \cdot (a + e) + X_2 \cdot (b + e) + \\ | 
|         |    144                  & X_3 \cdot (a + b + c + d + e) | 
|         |    145               \end{aligned} | 
|         |    146   \end{eqnarray} | 
|         |    147   \end{subequations}  | 
|         |    148  | 
|         |    149 \begin{figure}[h!] | 
|         |    150 \centering | 
|         |    151 \begin{minipage}{0.5\textwidth} | 
|         |    152 \scalebox{0.8}{ | 
|         |    153 \begin{tikzpicture}[ultra thick,>=latex] | 
|         |    154   \node[draw,circle,initial] (start) {$X_0$}; | 
|         |    155   \node[draw,circle,accepting] at ($(start) + (3.5cm,2cm)$) (ac1) {$X_1$}; | 
|         |    156   \node[draw,circle,accepting] at ($(start) + (3.5cm,-2cm)$) (ac2) {$X_2$}; | 
|         |    157   \node[draw,circle] at ($(start) + (6.5cm,0cm)$) (ab) {$X_3$}; | 
|         |    158  | 
|         |    159   \path[->] (start) edge [bend left] node [midway, above] {$a$} (ac1); | 
|         |    160   \path[->] (start) edge [bend right] node [midway, below] {$b$} (ac2); | 
|         |    161   \path[->] (ac1) edge [loop above] node [midway, above] {$b$} (ac1); | 
|         |    162   \path[->] (ac2) edge [loop below] node [midway, below] {$a$} (ac2); | 
|         |    163   \path[->] (ac1) edge [bend right] node [midway, left] {$c$} (ac2); | 
|         |    164   \path[->] (ac2) edge [bend right] node [midway, right] {$c$} (ac1); | 
|         |    165   \path[->] (ac1) edge node [midway, sloped, above] {$d$} (start); | 
|         |    166   \path[->] (ac2) edge node [midway, sloped, above] {$d$} (start); | 
|         |    167  | 
|         |    168   \path [draw, rounded corners,->,dashed] (start) -- ($(start) + (0cm, 3.7cm)$) | 
|         |    169          -- ($(ab) + (0cm, 3.7cm)$)  node[midway,above,sloped]{$\Sigma - \{a, b\}$} -- (ab); | 
|         |    170   \path[->,dashed] (ac1) edge node [midway, above, sloped] {$\Sigma - \{b,c,d\}$} (ab); | 
|         |    171   \path[->,dashed] (ac2) edge node [midway, below, sloped] {$\Sigma - \{a,c,d\}$} (ab); | 
|         |    172   \path[->,dashed] (ab) edge [loop right] node [midway, right] {$\Sigma$} (ab); | 
|         |    173 \end{tikzpicture}} | 
|         |    174 \end{minipage} | 
|         |    175 \caption{An example automaton}\label{fig_auto_part_rel} | 
|         |    176 \end{figure} | 
|         |    177  | 
|         |    178   Every $\cdot$-item on the right side of equations describes some state transtions, except  | 
|         |    179   the $\lambda$ in \eqref{x_0_def_o}, which represents empty string @{text "[]"}.  | 
|         |    180   The reason is that: every state is characterized by the | 
|         |    181   set of incoming strings leading from initial state. For non-initial state, every such | 
|         |    182   string can be splitted into a prefix leading into a preceding state and a single character suffix  | 
|         |    183   transiting into from the preceding state. The exception happens at | 
|         |    184   initial state, where the empty string is a incoming string which can not be splitted. The $\lambda$ | 
|         |    185   in \eqref{x_0_def_o} is introduce to repsent this indivisible string. There is one and only one | 
|         |    186   $\lambda$ in every equational system such obtained, becasue $[]$ can only be contaied in one | 
|         |    187   equivalent class (the intial state in $M_\Lang$) and equivalent classes are disjoint.  | 
|         |    188    | 
|         |    189   Suppose all unknowns ($X_0, X_1, X_2, X_3$) are  solvable, the regular expression charactering  | 
|         |    190   laugnage $\Lang$ is $X_1 + X_2$. This paper gives a procedure | 
|         |    191   by which arbitrarily picked unknown can be solved. The basic idea to solve $X_i$ is by  | 
|         |    192   eliminating all variables other than $X_i$ from the equational system. If | 
|         |    193   $X_0$ is the one picked to be solved,  variables $X_1, X_2, X_3$ have to be removed one by  | 
|         |    194   one.  The order to remove does not matter as long as the remaing equations are kept valid. | 
|         |    195   Suppose $X_1$ is the first one to remove, the action is to replace all occurences of $X_1$  | 
|         |    196   in remaining equations by the right hand side of its characterizing equation, i.e.  | 
|         |    197   the $ X_0 \cdot a + X_1 \cdot b + X_2 \cdot d$ in \eqref{x_1_def_o}. However, because | 
|         |    198   of the recursive occurence of $X_1$, this replacement does not really removed $X_1$. Arden's | 
|         |    199   lemma is invoked to transform recursive equations like \eqref{x_1_def_o} into non-recursive  | 
|         |    200   ones. For example, the recursive equation \eqref{x_1_def_o} is transformed into the follwing | 
|         |    201   non-recursive one: | 
|         |    202   \begin{equation} | 
|         |    203      X_1  =  (X_0 \cdot a + X_2 \cdot d) \cdot b^* = X_0 \cdot (a \cdot b^*) + X_2 \cdot (d \cdot b^*) | 
|         |    204   \end{equation} | 
|         |    205   which, by Arden's lemma, still characterizes $X_1$ correctly. By subsituting | 
|         |    206   $(X_0 \cdot a + X_2 \cdot d) \cdot b^*$ for all $X_1$ and removing  \eqref{x_1_def_o}, | 
|         |    207   we get: | 
|         |    208   \begin{subequations} | 
|         |    209   \begin{eqnarray} | 
|         |    210     X_0 & = & \begin{aligned} | 
|         |    211               & (X_0 \cdot (a \cdot b^*) + X_2 \cdot (d \cdot b^*)) \cdot c +  | 
|         |    212                 X_2 \cdot d + \lambda = \\ | 
|         |    213               & X_0 \cdot (a \cdot b^* \cdot c) + X_2 \cdot (d \cdot b^* \cdot c) +  | 
|         |    214                 X_2 \cdot d + \lambda = \\ | 
|         |    215               &  X_0 \cdot (a \cdot b^* \cdot c) + X_2 \cdot (d \cdot b^* \cdot c + d) + \lambda  | 
|         |    216               \end{aligned} \label{x_0_def_1} \\ | 
|         |    217     X_2 & = & \begin{aligned} | 
|         |    218                  & X_0 \cdot b + (X_0 \cdot (a \cdot b^*) + X_2 \cdot (d \cdot b^*)) \cdot d + X_2 \cdot a = \\ | 
|         |    219                  & X_0 \cdot b + X_0 \cdot (a \cdot b^* \cdot d) + X_2 \cdot (d \cdot b^* \cdot d) + X_2 \cdot a = \\ | 
|         |    220                  & X_0 \cdot (b + a \cdot b^* \cdot d) + X_2 \cdot (d \cdot b^* \cdot d + a) | 
|         |    221               \end{aligned} \\ | 
|         |    222     X_3 & = & \begin{aligned} | 
|         |    223                  & X_0 \cdot (c + d + e) + ((X_0 \cdot a + X_2 \cdot d) \cdot b^*) \cdot (a + e)\\ | 
|         |    224                  & + X_2 \cdot (b + e) + X_3 \cdot (a + b + c + d + e) \label{x_3_def_1} | 
|         |    225               \end{aligned} | 
|         |    226   \end{eqnarray} | 
|         |    227   \end{subequations}   | 
|         |    228 Suppose $X_3$ is the one to remove next, since $X_3$ dose not appear in either $X_0$ or $X_2$,  | 
|         |    229 the removal of equation \eqref{x_3_def_1} changes nothing in the rest equations. Therefore, we get: | 
|         |    230  \begin{subequations} | 
|         |    231   \begin{eqnarray} | 
|         |    232     X_0 & = & X_0 \cdot (a \cdot b^* \cdot c) + X_2 \cdot (d \cdot b^* \cdot c + d) + \lambda  \label{x_0_def_2} \\ | 
|         |    233     X_2 & = & X_0 \cdot (b + a \cdot b^* \cdot d) + X_2 \cdot (d \cdot b^* \cdot d + a) \label{x_2_def_2} | 
|         |    234   \end{eqnarray} | 
|         |    235   \end{subequations}   | 
|         |    236 Actually, since absorbing state like $X_3$ contributes nothing to the language $\Lang$, it could have been removed | 
|         |    237 at the very beginning of this precedure without affecting the final result. Now, the last unknown to remove  | 
|         |    238 is $X_2$ and the Arden's transformaton of \eqref{x_2_def_2} is: | 
|         |    239 \begin{equation} \label{x_2_ardened} | 
|         |    240    X_2 ~ = ~  (X_0 \cdot (b + a \cdot b^* \cdot d)) \cdot (d \cdot b^* \cdot d + a)^* = | 
|         |    241               X_0 \cdot ((b + a \cdot b^* \cdot d) \cdot (d \cdot b^* \cdot d + a)^*) | 
|         |    242 \end{equation} | 
|         |    243 By substituting the right hand side of \eqref{x_2_ardened} into \eqref{x_0_def_2}, we get: | 
|         |    244 \begin{equation} | 
|         |    245 \begin{aligned} | 
|         |    246   X_0  & = && X_0 \cdot (a \cdot b^* \cdot c) + \\ | 
|         |    247        &   && X_0 \cdot ((b + a \cdot b^* \cdot d) \cdot (d \cdot b^* \cdot d + a)^*) \cdot  | 
|         |    248            (d \cdot b^* \cdot c + d) + \lambda \\ | 
|         |    249        & =  && X_0 \cdot ((a \cdot b^* \cdot c) + \\ | 
|         |    250        &   && \hspace{3em} ((b + a \cdot b^* \cdot d) \cdot (d \cdot b^* \cdot d + a)^*) \cdot  | 
|         |    251            (d \cdot b^* \cdot c + d)) + \lambda  | 
|         |    252 \end{aligned} | 
|         |    253 \end{equation} | 
|         |    254 By applying Arden's transformation to this, we get the solution of $X_0$ as: | 
|         |    255 \begin{equation} | 
|         |    256 \begin{aligned} | 
|         |    257   X_0  =  ((a \cdot b^* \cdot c) +  | 
|         |    258                 ((b + a \cdot b^* \cdot d) \cdot (d \cdot b^* \cdot d + a)^*) \cdot  | 
|         |    259                         (d \cdot b^* \cdot c + d))^* | 
|         |    260 \end{aligned} | 
|         |    261 \end{equation} | 
|         |    262 Using the same method, solutions for $X_1$ and $X_2$ can be obtained as well and the | 
|         |    263 regular expressoin for $\Lang$ is just $X_1 + X_2$. The formalization of this procedure | 
|         |    264 consititues the first direction of the {\em regular expression} verion of | 
|         |    265 \mht. Detailed explaination are given in {\bf paper.pdf} and more details and comments | 
|         |    266 can be found in the formal scripts. | 
|         |    267 *} | 
|         |    268  | 
|         |    269 section {* Direction @{text "finite partition \<Rightarrow> regular language"} *} | 
|         |    270  | 
|         |    271 text {* | 
|         |    272   It is well known in the theory of regular languages that | 
|         |    273   the existence of finite  language partition amounts to the existence of  | 
|         |    274   a minimal automaton, i.e. the $M_\Lang$ constructed in section \ref{sec_prelim}, which recoginzes the  | 
|         |    275   same language $\Lang$. The standard way to prove the existence of finite language partition  | 
|         |    276   is to construct a automaton out of the regular expression which recoginzes the same language, from | 
|         |    277   which the existence of finite language partition follows immediately. As discussed in the introducton of  | 
|         |    278   {\bf paper.pdf} as well as in [5], the problem for this approach happens when automata  | 
|         |    279   of sub regular expressions are combined to form the automaton of the mother regular expression,  | 
|         |    280   no matter what kind of representation is used, the formalization is cubersome, as said  | 
|         |    281   by Nipkow in [5]: `{\em a more abstract mathod is clearly desirable}'. In this section,  | 
|         |    282   an {\em intrinsically abstract} method is given, which completely avoid the mentioning of automata, | 
|         |    283   let along any particular representations. | 
|         |    284   *} | 
|         |    285  | 
|         |    286 text {* | 
|         |    287   The main proof structure is a structural induction on regular expressions, | 
|         |    288   where base cases (cases for @{const "NULL"}, @{const "EMPTY"}, @{const "CHAR"}) are quite straightforward to | 
|         |    289   proof. Real difficulty lies in inductive cases.  By inductive hypothesis, languages defined by | 
|         |    290   sub-expressions induce finite partitiions. Under such hypothsis, we need to prove that the language  | 
|         |    291   defined by the composite regular expression gives rise to finite partion.   | 
|         |    292   The basic idea is to attach a tag @{text "tag(x)"} to every string  | 
|         |    293   @{text "x"}. The tagging fuction @{text "tag"} is carefully devised, which returns tags  | 
|         |    294   made of equivalent classes of the partitions induced by subexpressoins, and therefore has a finite | 
|         |    295   range. Let @{text "Lang"} be the composite language, it is proved that: | 
|         |    296   \begin{quote} | 
|         |    297   If strings with the same tag are equivalent with respect to @{text "Lang"}, expressed as: | 
|         |    298   \[ | 
|         |    299   @{text "tag(x) = tag(y) \<Longrightarrow> x \<approx>Lang y"} | 
|         |    300   \] | 
|         |    301   then the partition induced by @{text "Lang"} must be finite. | 
|         |    302   \end{quote} | 
|         |    303   There are two arguments for this. The first goes as the following: | 
|         |    304   \begin{enumerate} | 
|         |    305     \item First, the tagging function @{text "tag"} induces an equivalent relation @{text "(=tag=)"}  | 
|         |    306           (defiintion of @{text "f_eq_rel"} and lemma @{text "equiv_f_eq_rel"}). | 
|         |    307     \item It is shown that: if the range of @{text "tag"} (denoted @{text "range(tag)"}) is finite,  | 
|         |    308            the partition given rise by @{text "(=tag=)"} is finite (lemma @{text "finite_eq_f_rel"}). | 
|         |    309            Since tags are made from equivalent classes from component partitions, and the inductive | 
|         |    310            hypothesis ensures the finiteness of these partitions, it is not difficult to prove | 
|         |    311            the finiteness of @{text "range(tag)"}. | 
|         |    312     \item It is proved that if equivalent relation @{text "R1"} is more refined than @{text "R2"} | 
|         |    313            (expressed as @{text "R1 \<subseteq> R2"}), | 
|         |    314            and the partition induced by @{text "R1"} is finite, then the partition induced by @{text "R2"} | 
|         |    315            is finite as well (lemma @{text "refined_partition_finite"}). | 
|         |    316     \item The injectivity assumption @{text "tag(x) = tag(y) \<Longrightarrow> x \<approx>Lang y"} implies that | 
|         |    317             @{text "(=tag=)"} is more refined than @{text "(\<approx>Lang)"}. | 
|         |    318     \item Combining the points above, we have: the partition induced by language @{text "Lang"} | 
|         |    319           is finite (lemma @{text "tag_finite_imageD"}). | 
|         |    320   \end{enumerate} | 
|         |    321  | 
|         |    322 We could have followed another approach given in  appendix II of Brzozowski's paper [?], where | 
|         |    323 the set of derivatives of any regular expression can be proved to be finite.  | 
|         |    324 Since it is easy to show that strings with same derivative are equivalent with respect to the  | 
|         |    325 language, then the second direction follows. We believe that our | 
|         |    326 apporoach is easy to formalize, with no need to do complicated derivation calculations | 
|         |    327 and countings as in [???]. | 
|         |    328 *} | 
|         |    329  | 
|         |    330  | 
|         |    331 end |