584 \end{tabular} |
584 \end{tabular} |
585 \end{center} |
585 \end{center} |
586 |
586 |
587 \noindent |
587 \noindent |
588 Finially, we can define how an equational system should be solved. For this |
588 Finially, we can define how an equational system should be solved. For this |
589 we will need to iterate the elimination of an equation until only one equation |
589 we will need to iterate the process of eliminating equations until only one equation |
590 will be left in the system. However, we not just want to have any equation |
590 will be left in the system. However, we not just want to have any equation |
591 as being the last one, but the one for which we want to calculate the regular |
591 as being the last one, but the one involving the equivalence class for |
592 expression. Therefore we define the iteration step so that it chooses an |
592 which we want to calculate the regular |
593 equation with an equivalence class that is not @{text X}. This allows us to |
593 expression. Let us suppose the equivalence class is @{text X}. |
594 control, which equation will be the last. We use Hilbert's choice operator, |
594 Since @{text X} is the one to be solved, in every iteration step we have to pick an |
595 written @{text SOME}, to choose an equation to be eliminated in @{text ES}. |
595 equation to be eliminated that which is different from @{text X}. In this way |
|
596 @{text X} is kept to the final step. The choice is implemented by Hilbert's choice |
|
597 operator, written @{text SOME} in the definition below. |
596 |
598 |
597 \begin{center} |
599 \begin{center} |
598 \begin{tabular}{rc@ {\hspace{4mm}}r@ {\hspace{1mm}}l} |
600 \begin{tabular}{rc@ {\hspace{4mm}}r@ {\hspace{1mm}}l} |
599 @{thm (lhs) Iter_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-4mm}}l}{@{text "let"}}\\ |
601 @{thm (lhs) Iter_def} & @{text "\<equiv>"}~~\mbox{} & \multicolumn{2}{@ {\hspace{-4mm}}l}{@{text "let"}}\\ |
600 & & @{text "(Y, yrhs) ="} & @{term "SOME (Y, yrhs). (Y, yrhs) \<in> ES \<and> X \<noteq> Y"} \\ |
602 & & @{text "(Y, yrhs) ="} & @{term "SOME (Y, yrhs). (Y, yrhs) \<in> ES \<and> X \<noteq> Y"} \\ |
702 \begin{lemma} |
708 \begin{lemma} |
703 If @{thm (prem 1) Solve} and @{thm (prem 2) Solve} then there exists |
709 If @{thm (prem 1) Solve} and @{thm (prem 2) Solve} then there exists |
704 a @{text rhs} such that @{term "Solve X (Init (UNIV // \<approx>A)) = {(X, rhs)}"} |
710 a @{text rhs} such that @{term "Solve X (Init (UNIV // \<approx>A)) = {(X, rhs)}"} |
705 and @{term "invariant {(X, rhs)}"}. |
711 and @{term "invariant {(X, rhs)}"}. |
706 \end{lemma} |
712 \end{lemma} |
|
713 |
|
714 \begin{proof} |
|
715 ??? |
|
716 \end{proof} |
707 |
717 |
708 \noindent |
718 \noindent |
709 With this lemma in place we can show that for every equivalence class in @{term "UNIV // \<approx>A"} |
719 With this lemma in place we can show that for every equivalence class in @{term "UNIV // \<approx>A"} |
710 there exists a regular expression. |
720 there exists a regular expression. |
711 |
721 |