Paper/Paper.thy
changeset 107 6f4f9b7b9891
parent 106 91dc591de63f
child 108 212bfa431fa5
equal deleted inserted replaced
106:91dc591de63f 107:6f4f9b7b9891
   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"} \\
   684 
   686 
   685   \begin{lemma}
   687   \begin{lemma}
   686   @{thm[mode=IfThen] iteration_step_invariant[where xrhs="rhs"]}
   688   @{thm[mode=IfThen] iteration_step_invariant[where xrhs="rhs"]}
   687   \end{lemma}
   689   \end{lemma}
   688 
   690 
       
   691   \begin{proof} 
       
   692   ???
       
   693   \end{proof}
       
   694 
   689   \begin{lemma}
   695   \begin{lemma}
   690   @{thm[mode=IfThen] iteration_step_measure[simplified (no_asm), where xrhs="rhs"]}
   696   @{thm[mode=IfThen] iteration_step_measure[simplified (no_asm), where xrhs="rhs"]}
   691   \end{lemma}
   697   \end{lemma}
   692 
   698 
   693   \begin{proof}
   699   \begin{proof}
   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 
   743   @{term "\<Union>(finals A) = L (\<Uplus>rs)"}
   753   @{term "\<Union>(finals A) = L (\<Uplus>rs)"}
   744   \end{center}
   754   \end{center}
   745 
   755 
   746   \noindent
   756   \noindent
   747   Since the left-hand side is equal to @{text A}, we can use @{term "\<Uplus>rs"} 
   757   Since the left-hand side is equal to @{text A}, we can use @{term "\<Uplus>rs"} 
   748   as the regular expression that solves the goal.\qed
   758   as the regular expression that is needed in the theorem.\qed
   749   \end{proof}
   759   \end{proof}
   750 *}
   760 *}
   751 
   761 
   752 
   762 
   753 
   763