src/HOL/IMP/Finite_Reachable.thy
changeset 52046 bc01725d7918
parent 50050 fac2b27893ff
child 62390 842917225d56
--- a/src/HOL/IMP/Finite_Reachable.thy	Fri May 17 02:57:00 2013 +0200
+++ b/src/HOL/IMP/Finite_Reachable.thy	Fri May 17 08:19:52 2013 +0200
@@ -43,14 +43,14 @@
 by(auto simp: reachable_def dest:Assign_starD)
 
 
-lemma Seq_stepsnD: "(c1; c2, s) \<rightarrow>(n) (c', t) \<Longrightarrow>
-  (\<exists>c1' m. c' = c1'; c2 \<and> (c1, s) \<rightarrow>(m) (c1', t) \<and> m \<le> n) \<or>
+lemma Seq_stepsnD: "(c1;; c2, s) \<rightarrow>(n) (c', t) \<Longrightarrow>
+  (\<exists>c1' m. c' = c1';; c2 \<and> (c1, s) \<rightarrow>(m) (c1', t) \<and> m \<le> n) \<or>
   (\<exists>s2 m1 m2. (c1,s) \<rightarrow>(m1) (SKIP,s2) \<and> (c2, s2) \<rightarrow>(m2) (c', t) \<and> m1+m2 < n)"
 proof(induction n arbitrary: c1 c2 s)
   case 0 thus ?case by auto
 next
   case (Suc n)
-  from Suc.prems obtain s' c12' where "(c1;c2, s) \<rightarrow> (c12', s')"
+  from Suc.prems obtain s' c12' where "(c1;;c2, s) \<rightarrow> (c12', s')"
     and n: "(c12',s') \<rightarrow>(n) (c',t)" by auto
   from this(1) show ?case
   proof
@@ -59,14 +59,14 @@
       using n by auto
     thus ?case by blast
   next
-    fix c1' s'' assume 1: "(c12', s') = (c1'; c2, s'')" "(c1, s) \<rightarrow> (c1', s'')"
-    hence n': "(c1';c2,s') \<rightarrow>(n) (c',t)" using n by auto
+    fix c1' s'' assume 1: "(c12', s') = (c1';; c2, s'')" "(c1, s) \<rightarrow> (c1', s'')"
+    hence n': "(c1';;c2,s') \<rightarrow>(n) (c',t)" using n by auto
     from Suc.IH[OF n'] show ?case
     proof
-      assume "\<exists>c1'' m. c' = c1''; c2 \<and> (c1', s') \<rightarrow>(m) (c1'', t) \<and> m \<le> n"
+      assume "\<exists>c1'' m. c' = c1'';; c2 \<and> (c1', s') \<rightarrow>(m) (c1'', t) \<and> m \<le> n"
         (is "\<exists> a b. ?P a b")
       then obtain c1'' m where 2: "?P c1'' m" by blast
-      hence "c' = c1'';c2 \<and> (c1, s) \<rightarrow>(Suc m) (c1'',t) \<and> Suc m \<le> Suc n"
+      hence "c' = c1'';;c2 \<and> (c1, s) \<rightarrow>(Suc m) (c1'',t) \<and> Suc m \<le> Suc n"
         using 1 by auto
       thus ?case by blast
     next
@@ -80,13 +80,13 @@
   qed
 qed
 
-corollary Seq_starD: "(c1; c2, s) \<rightarrow>* (c', t) \<Longrightarrow>
-  (\<exists>c1'. c' = c1'; c2 \<and> (c1, s) \<rightarrow>* (c1', t)) \<or>
+corollary Seq_starD: "(c1;; c2, s) \<rightarrow>* (c', t) \<Longrightarrow>
+  (\<exists>c1'. c' = c1';; c2 \<and> (c1, s) \<rightarrow>* (c1', t)) \<or>
   (\<exists>s2. (c1,s) \<rightarrow>* (SKIP,s2) \<and> (c2, s2) \<rightarrow>* (c', t))"
 by(metis Seq_stepsnD star_if_stepsn stepsn_if_star)
 
-lemma reachable_Seq: "reachable (c1;c2) \<subseteq>
-  (\<lambda>c1'. c1';c2) ` reachable c1 \<union> reachable c2"
+lemma reachable_Seq: "reachable (c1;;c2) \<subseteq>
+  (\<lambda>c1'. c1';;c2) ` reachable c1 \<union> reachable c2"
 by(auto simp: reachable_def image_def dest!: Seq_starD)
 
 
@@ -100,8 +100,8 @@
 
 
 lemma While_stepsnD: "(WHILE b DO c, s) \<rightarrow>(n) (c2,t) \<Longrightarrow>
-  c2 \<in> {WHILE b DO c, IF b THEN c ; WHILE b DO c ELSE SKIP, SKIP}
-  \<or> (\<exists>c1. c2 = c1 ; WHILE b DO c \<and> (\<exists> s1 s2. (c,s1) \<rightarrow>* (c1,s2)))"
+  c2 \<in> {WHILE b DO c, IF b THEN c ;; WHILE b DO c ELSE SKIP, SKIP}
+  \<or> (\<exists>c1. c2 = c1 ;; WHILE b DO c \<and> (\<exists> s1 s2. (c,s1) \<rightarrow>* (c1,s2)))"
 proof(induction n arbitrary: s rule: less_induct)
   case (less n1)
   show ?case
@@ -110,7 +110,7 @@
   next
     case (Suc n2)
     let ?w = "WHILE b DO c"
-    let ?iw = "IF b THEN c ; ?w ELSE SKIP"
+    let ?iw = "IF b THEN c ;; ?w ELSE SKIP"
     from Suc less.prems have n2: "(?iw,s) \<rightarrow>(n2) (c2,t)" by(auto elim!: WhileE)
     show ?thesis
     proof(cases n2)
@@ -122,11 +122,11 @@
       from this(1)
       show ?thesis
       proof
-        assume "(iw', s') = (c; WHILE b DO c, s)"
-        with n3 have "(c;?w, s) \<rightarrow>(n3) (c2,t)" by auto
+        assume "(iw', s') = (c;; WHILE b DO c, s)"
+        with n3 have "(c;;?w, s) \<rightarrow>(n3) (c2,t)" by auto
         from Seq_stepsnD[OF this] show ?thesis
         proof
-          assume "\<exists>c1' m. c2 = c1'; ?w \<and> (c,s) \<rightarrow>(m) (c1', t) \<and> m \<le> n3"
+          assume "\<exists>c1' m. c2 = c1';; ?w \<and> (c,s) \<rightarrow>(m) (c1', t) \<and> m \<le> n3"
           thus ?thesis by (metis star_if_stepsn)
         next
           assume "\<exists>s2 m1 m2. (c, s) \<rightarrow>(m1) (SKIP, s2) \<and>
@@ -144,8 +144,8 @@
 qed
 
 lemma reachable_While: "reachable (WHILE b DO c) \<subseteq>
-  {WHILE b DO c, IF b THEN c ; WHILE b DO c ELSE SKIP, SKIP} \<union>
-  (\<lambda>c'. c' ; WHILE b DO c) ` reachable c"
+  {WHILE b DO c, IF b THEN c ;; WHILE b DO c ELSE SKIP, SKIP} \<union>
+  (\<lambda>c'. c' ;; WHILE b DO c) ` reachable c"
 apply(auto simp: reachable_def image_def)
 by (metis While_stepsnD insertE singletonE stepsn_if_star)