src/HOL/HOLCF/FOCUS/Buffer_adm.thy
changeset 43924 1165fe965da8
parent 42151 4da4fc77664b
child 45653 63ed1be524eb
equal deleted inserted replaced
43923:ab93d0190a5d 43924:1165fe965da8
     6 
     6 
     7 theory Buffer_adm
     7 theory Buffer_adm
     8 imports Buffer Stream_adm
     8 imports Buffer Stream_adm
     9 begin
     9 begin
    10 
    10 
    11 declare Fin_0 [simp]
    11 declare enat_0 [simp]
    12 
    12 
    13 lemma BufAC_Asm_d2: "a\<leadsto>s:BufAC_Asm ==> ? d. a=Md d"
    13 lemma BufAC_Asm_d2: "a\<leadsto>s:BufAC_Asm ==> ? d. a=Md d"
    14 by (drule BufAC_Asm_unfold [THEN iffD1], auto)
    14 by (drule BufAC_Asm_unfold [THEN iffD1], auto)
    15 
    15 
    16 lemma BufAC_Asm_d3:
    16 lemma BufAC_Asm_d3:
   114 apply ( force dest!: fstream_prefix
   114 apply ( force dest!: fstream_prefix
   115               dest: BufAC_Asm_d3 intro!: BufAC_Asm_d_req)
   115               dest: BufAC_Asm_d3 intro!: BufAC_Asm_d_req)
   116 done
   116 done
   117 
   117 
   118 (*adm_BufAC_Asm,BufAC_Asm_antiton,adm_non_BufAC_Asm,BufAC_Asm_cong*)
   118 (*adm_BufAC_Asm,BufAC_Asm_antiton,adm_non_BufAC_Asm,BufAC_Asm_cong*)
   119 lemma BufAC_Cmt_2stream_monoP: "f:BufEq ==> ? l. !i x s. s:BufAC_Asm --> x << s --> Fin (l i) < #x --> 
   119 lemma BufAC_Cmt_2stream_monoP: "f:BufEq ==> ? l. !i x s. s:BufAC_Asm --> x << s --> enat (l i) < #x --> 
   120                      (x,f\<cdot>x):down_iterate BufAC_Cmt_F i --> 
   120                      (x,f\<cdot>x):down_iterate BufAC_Cmt_F i --> 
   121                      (s,f\<cdot>s):down_iterate BufAC_Cmt_F i"
   121                      (s,f\<cdot>s):down_iterate BufAC_Cmt_F i"
   122 apply (rule_tac x="%i. 2*i" in exI)
   122 apply (rule_tac x="%i. 2*i" in exI)
   123 apply (rule allI)
   123 apply (rule allI)
   124 apply (induct_tac "i")
   124 apply (induct_tac "i")
   137 (*
   137 (*
   138  1. \<And>i d xa ya t.
   138  1. \<And>i d xa ya t.
   139        \<lbrakk>f \<in> BufEq;
   139        \<lbrakk>f \<in> BufEq;
   140           \<forall>x s. s \<in> BufAC_Asm \<longrightarrow>
   140           \<forall>x s. s \<in> BufAC_Asm \<longrightarrow>
   141                 x \<sqsubseteq> s \<longrightarrow>
   141                 x \<sqsubseteq> s \<longrightarrow>
   142                 Fin (2 * i) < #x \<longrightarrow>
   142                 enat (2 * i) < #x \<longrightarrow>
   143                 (x, f\<cdot>x) \<in> down_iterate BufAC_Cmt_F i \<longrightarrow>
   143                 (x, f\<cdot>x) \<in> down_iterate BufAC_Cmt_F i \<longrightarrow>
   144                 (s, f\<cdot>s) \<in> down_iterate BufAC_Cmt_F i;
   144                 (s, f\<cdot>s) \<in> down_iterate BufAC_Cmt_F i;
   145           Md d\<leadsto>\<bullet>\<leadsto>xa \<in> BufAC_Asm; Fin (2 * i) < #ya; f\<cdot>(Md d\<leadsto>\<bullet>\<leadsto>ya) = d\<leadsto>t;
   145           Md d\<leadsto>\<bullet>\<leadsto>xa \<in> BufAC_Asm; enat (2 * i) < #ya; f\<cdot>(Md d\<leadsto>\<bullet>\<leadsto>ya) = d\<leadsto>t;
   146           (ya, t) \<in> down_iterate BufAC_Cmt_F i; ya \<sqsubseteq> xa\<rbrakk>
   146           (ya, t) \<in> down_iterate BufAC_Cmt_F i; ya \<sqsubseteq> xa\<rbrakk>
   147        \<Longrightarrow> (xa, rt\<cdot>(f\<cdot>(Md d\<leadsto>\<bullet>\<leadsto>xa))) \<in> down_iterate BufAC_Cmt_F i
   147        \<Longrightarrow> (xa, rt\<cdot>(f\<cdot>(Md d\<leadsto>\<bullet>\<leadsto>xa))) \<in> down_iterate BufAC_Cmt_F i
   148 *)
   148 *)
   149 apply (rotate_tac 2)
   149 apply (rotate_tac 2)
   150 apply (drule BufAC_Asm_prefix2)
   150 apply (drule BufAC_Asm_prefix2)
   156 apply (            rotate_tac -1)
   156 apply (            rotate_tac -1)
   157 apply (            simp)
   157 apply (            simp)
   158 apply (erule subst)
   158 apply (erule subst)
   159 (*
   159 (*
   160  1. \<And>i d xa ya t ff ffa.
   160  1. \<And>i d xa ya t ff ffa.
   161        \<lbrakk>f\<cdot>(Md d\<leadsto>\<bullet>\<leadsto>ya) = d\<leadsto>ffa\<cdot>ya; Fin (2 * i) < #ya;
   161        \<lbrakk>f\<cdot>(Md d\<leadsto>\<bullet>\<leadsto>ya) = d\<leadsto>ffa\<cdot>ya; enat (2 * i) < #ya;
   162           (ya, ffa\<cdot>ya) \<in> down_iterate BufAC_Cmt_F i; ya \<sqsubseteq> xa; f \<in> BufEq;
   162           (ya, ffa\<cdot>ya) \<in> down_iterate BufAC_Cmt_F i; ya \<sqsubseteq> xa; f \<in> BufEq;
   163           \<forall>x s. s \<in> BufAC_Asm \<longrightarrow>
   163           \<forall>x s. s \<in> BufAC_Asm \<longrightarrow>
   164                 x \<sqsubseteq> s \<longrightarrow>
   164                 x \<sqsubseteq> s \<longrightarrow>
   165                 Fin (2 * i) < #x \<longrightarrow>
   165                 enat (2 * i) < #x \<longrightarrow>
   166                 (x, f\<cdot>x) \<in> down_iterate BufAC_Cmt_F i \<longrightarrow>
   166                 (x, f\<cdot>x) \<in> down_iterate BufAC_Cmt_F i \<longrightarrow>
   167                 (s, f\<cdot>s) \<in> down_iterate BufAC_Cmt_F i;
   167                 (s, f\<cdot>s) \<in> down_iterate BufAC_Cmt_F i;
   168           xa \<in> BufAC_Asm; ff \<in> BufEq; ffa \<in> BufEq\<rbrakk>
   168           xa \<in> BufAC_Asm; ff \<in> BufEq; ffa \<in> BufEq\<rbrakk>
   169        \<Longrightarrow> (xa, ff\<cdot>xa) \<in> down_iterate BufAC_Cmt_F i
   169        \<Longrightarrow> (xa, ff\<cdot>xa) \<in> down_iterate BufAC_Cmt_F i
   170 *)
   170 *)