src/ZF/Induct/Tree_Forest.thy
changeset 12243 a2c0aaf94460
parent 12216 dda8c04a8fb4
child 12610 8b9845807f77
--- a/src/ZF/Induct/Tree_Forest.thy	Mon Nov 19 20:47:39 2001 +0100
+++ b/src/ZF/Induct/Tree_Forest.thy	Mon Nov 19 20:47:57 2001 +0100
@@ -37,7 +37,7 @@
   apply (rule Part_subset)
   done
 
-lemma treeI [TC]: "x : tree(A) ==> x : tree_forest(A)"
+lemma treeI [TC]: "x \<in> tree(A) ==> x \<in> tree_forest(A)"
   by (rule tree_subset_TF [THEN subsetD])
 
 lemma forest_subset_TF: "forest(A) \<subseteq> tree_forest(A)"
@@ -45,7 +45,7 @@
   apply (rule Part_subset)
   done
 
-lemma treeI [TC]: "x : forest(A) ==> x : tree_forest(A)"
+lemma treeI [TC]: "x \<in> forest(A) ==> x \<in> tree_forest(A)"
   by (rule forest_subset_TF [THEN subsetD])
 
 lemma TF_equals_Un: "tree(A) \<union> forest(A) = tree_forest(A)"
@@ -54,7 +54,7 @@
   done
 
 lemma (notes rews = tree_forest.con_defs tree_def forest_def)
-  tree_forest_unfold: "tree_forest(A) = (A*forest(A)) + ({0} + tree(A)*forest(A))"
+  tree_forest_unfold: "tree_forest(A) = (A \<times> forest(A)) + ({0} + tree(A) \<times> forest(A))"
     -- {* NOT useful, but interesting \dots *}
   apply (unfold tree_def forest_def)
   apply (fast intro!: tree_forest.intros [unfolded rews, THEN PartD1]
@@ -86,23 +86,23 @@
 lemma TF_rec_type:
   "[| z \<in> tree_forest(A);
       !!x f r. [| x \<in> A;  f \<in> forest(A);  r \<in> C(f)
-                |] ==> b(x,f,r): C(Tcons(x,f));
+                |] ==> b(x,f,r) \<in> C(Tcons(x,f));
       c \<in> C(Fnil);
-      !!t f r1 r2. [| t \<in> tree(A);  f \<in> forest(A);  r1: C(t); r2: C(f)
-                    |] ==> d(t,f,r1,r2): C(Fcons(t,f))
+      !!t f r1 r2. [| t \<in> tree(A);  f \<in> forest(A);  r1 \<in> C(t); r2 \<in> C(f)
+                    |] ==> d(t,f,r1,r2) \<in> C(Fcons(t,f))
    |] ==> tree_forest_rec(b,c,d,z) \<in> C(z)"
   by (induct_tac z) simp_all
 
 lemma tree_forest_rec_type:
   "[| !!x f r. [| x \<in> A;  f \<in> forest(A);  r \<in> D(f)
-                |] ==> b(x,f,r): C(Tcons(x,f));
+                |] ==> b(x,f,r) \<in> C(Tcons(x,f));
       c \<in> D(Fnil);
-      !!t f r1 r2. [| t \<in> tree(A);  f \<in> forest(A);  r1: C(t); r2: D(f)
-                    |] ==> d(t,f,r1,r2): D(Fcons(t,f))
-   |] ==> (\<forall>t \<in> tree(A).    tree_forest_rec(b,c,d,t)  \<in> C(t)) &
+      !!t f r1 r2. [| t \<in> tree(A);  f \<in> forest(A);  r1 \<in> C(t); r2 \<in> D(f)
+                    |] ==> d(t,f,r1,r2) \<in> D(Fcons(t,f))
+   |] ==> (\<forall>t \<in> tree(A).    tree_forest_rec(b,c,d,t) \<in> C(t)) \<and>
           (\<forall>f \<in> forest(A). tree_forest_rec(b,c,d,f) \<in> D(f))"
     -- {* Mutually recursive version. *}
-  apply (unfold Ball_def)  (* FIXME *)
+  apply (unfold Ball_def)
   apply (rule tree_forest.mutual_induct)
   apply simp_all
   done
@@ -159,7 +159,7 @@
   apply simp_all
   done
 
-lemma map_type [TC]: "l \<in> list(tree(A)) ==> of_list(l) \<in> forest(A)"
+lemma of_list_type [TC]: "l \<in> list(tree(A)) ==> of_list(l) \<in> forest(A)"
   apply (erule list.induct)
   apply simp_all
   done
@@ -168,16 +168,14 @@
   \medskip @{text map}.
 *}
 
-lemma map_type:
-  "[| !!x. x \<in> A ==> h(x): B |] ==>
-     (\<forall>t \<in> tree(A). map(h,t) \<in> tree(B)) &
-     (\<forall>f \<in> forest(A). map(h,f) \<in> forest(B))"
-  apply (unfold Ball_def)  (* FIXME *)
-  apply (rule tree_forest.mutual_induct)
-  apply simp_all
+lemma (assumes h_type: "!!x. x \<in> A ==> h(x): B")
+    map_tree_type: "t \<in> tree(A) ==> map(h,t) \<in> tree(B)"
+  and map_forest_type: "f \<in> forest(A) ==> map(h,f) \<in> forest(B)"
+  apply (induct rule: tree_forest.mutual_induct)
+    apply (insert h_type)
+    apply simp_all
   done
 
-
 text {*
   \medskip @{text size}.
 *}