Myhill_1.thy
changeset 43 cb4403fabda7
parent 42 f809cb54de4e
child 46 28d70591042a
--- a/Myhill_1.thy	Thu Jan 27 12:35:06 2011 +0000
+++ b/Myhill_1.thy	Thu Jan 27 16:58:11 2011 +0000
@@ -1,5 +1,5 @@
 theory Myhill_1
-  imports Main List_Prefix Prefix_subtract
+  imports Main List_Prefix Prefix_subtract Prelude
 begin
 
 (*
@@ -26,15 +26,20 @@
 
 section {* Preliminary definitions *}
 
-text {* Sequential composition of two languages @{text "L1"} and @{text "L2"} *}
+types lang = "string set"
+
+text {* 
+  Sequential composition of two languages @{text "L1"} and @{text "L2"} 
+*}
+
 definition Seq :: "string set \<Rightarrow> string set \<Rightarrow> string set" ("_ ;; _" [100,100] 100)
 where 
   "L1 ;; L2 = {s1 @ s2 | s1 s2. s1 \<in> L1 \<and> s2 \<in> L2}"
 
 text {* Transitive closure of language @{text "L"}. *}
 inductive_set
-  Star :: "string set \<Rightarrow> string set" ("_\<star>" [101] 102)
-  for L :: "string set"
+  Star :: "lang \<Rightarrow> lang" ("_\<star>" [101] 102)
+  for L 
 where
   start[intro]: "[] \<in> L\<star>"
 | step[intro]:  "\<lbrakk>s1 \<in> L; s2 \<in> L\<star>\<rbrakk> \<Longrightarrow> s1@s2 \<in> L\<star>" 
@@ -193,7 +198,7 @@
   *}
 lemma folds_alt_simp [simp]:
   "finite rs \<Longrightarrow> L (folds ALT NULL rs) = \<Union> (L ` rs)"
-apply (rule set_ext, simp add:folds_def)
+apply (rule set_eq_intro, simp add:folds_def)
 apply (rule someI2_ex, erule finite_imp_fold_graph)
 by (erule fold_graph.induct, auto)
 
@@ -206,7 +211,7 @@
   @{text "\<approx>L"} is an equivalent class defined by language @{text "Lang"}.
 *}
 definition
-  str_eq_rel ("\<approx>_")
+  str_eq_rel ("\<approx>_" [100] 100)
 where
   "\<approx>Lang \<equiv> {(x, y).  (\<forall>z. x @ z \<in> Lang \<longleftrightarrow> y @ z \<in> Lang)}"