equal
deleted
inserted
replaced
670 (auto elim!: evalc1_term_cases equivD2 [OF unfold_while]) |
670 (auto elim!: evalc1_term_cases equivD2 [OF unfold_while]) |
671 |
671 |
672 lemma FB_lemma2: |
672 lemma FB_lemma2: |
673 "(c,s) \<longrightarrow>\<^sub>1\<^sup>* (c',s') \<Longrightarrow> c \<noteq> None \<Longrightarrow> |
673 "(c,s) \<longrightarrow>\<^sub>1\<^sup>* (c',s') \<Longrightarrow> c \<noteq> None \<Longrightarrow> |
674 \<langle>if c' = None then \<SKIP> else the c',s'\<rangle> \<longrightarrow>\<^sub>c t \<Longrightarrow> \<langle>the c,s\<rangle> \<longrightarrow>\<^sub>c t" |
674 \<langle>if c' = None then \<SKIP> else the c',s'\<rangle> \<longrightarrow>\<^sub>c t \<Longrightarrow> \<langle>the c,s\<rangle> \<longrightarrow>\<^sub>c t" |
675 apply (induct rule: converse_rtrancl_induct2) |
675 apply (induct rule: converse_rtrancl_induct2, force) |
676 apply simp |
|
677 apply clarsimp |
|
678 apply (fastsimp elim!: evalc1_term_cases intro: FB_lemma3) |
676 apply (fastsimp elim!: evalc1_term_cases intro: FB_lemma3) |
679 done |
677 done |
680 |
678 |
681 lemma evalc1_impl_evalc': "\<langle>c,s\<rangle> \<longrightarrow>\<^sub>1\<^sup>* \<langle>t\<rangle> \<Longrightarrow> \<langle>c,s\<rangle> \<longrightarrow>\<^sub>c t" |
679 lemma evalc1_impl_evalc': "\<langle>c,s\<rangle> \<longrightarrow>\<^sub>1\<^sup>* \<langle>t\<rangle> \<Longrightarrow> \<langle>c,s\<rangle> \<longrightarrow>\<^sub>c t" |
682 by (fastsimp dest: FB_lemma2) |
680 by (fastsimp dest: FB_lemma2) |