src/HOLCF/FOCUS/Buffer_adm.ML
changeset 11701 3d51fbf81c17
parent 11655 923e4d0d36d5
child 11704 3c50a2cd6f00
equal deleted inserted replaced
11700:a0e6bda62b7b 11701:3d51fbf81c17
    39 
    39 
    40 (**** adm_BufAC_Asm ***********************************************************)
    40 (**** adm_BufAC_Asm ***********************************************************)
    41 
    41 
    42 Goalw [BufAC_Asm_F_def, stream_monoP_def] "stream_monoP BufAC_Asm_F";
    42 Goalw [BufAC_Asm_F_def, stream_monoP_def] "stream_monoP BufAC_Asm_F";
    43 by (res_inst_tac [("x","{x. (? d. x = Md d\\<leadsto>\\<bullet>\\<leadsto><>)}")] exI 1);
    43 by (res_inst_tac [("x","{x. (? d. x = Md d\\<leadsto>\\<bullet>\\<leadsto><>)}")] exI 1);
    44 by (res_inst_tac [("x","2")] exI 1);
    44 by (res_inst_tac [("x","Suc (Suc 0)")] exI 1);
    45 by (Clarsimp_tac 1);
    45 by (Clarsimp_tac 1);
    46 qed "BufAC_Asm_F_stream_monoP";
    46 qed "BufAC_Asm_F_stream_monoP";
    47 
    47 
    48 val adm_BufAC_Asm = prove_goalw thy [BufAC_Asm_def] "adm (%x. x:BufAC_Asm)" (K [
    48 val adm_BufAC_Asm = prove_goalw thy [BufAC_Asm_def] "adm (%x. x:BufAC_Asm)" (K [
    49 rtac (cont_BufAC_Asm_F RS (BufAC_Asm_F_stream_monoP RS fstream_gfp_admI))1]);
    49 rtac (cont_BufAC_Asm_F RS (BufAC_Asm_F_stream_monoP RS fstream_gfp_admI))1]);
    52 (**** adm_non_BufAC_Asm *******************************************************)
    52 (**** adm_non_BufAC_Asm *******************************************************)
    53 
    53 
    54 Goalw [stream_antiP_def, BufAC_Asm_F_def] "stream_antiP BufAC_Asm_F";
    54 Goalw [stream_antiP_def, BufAC_Asm_F_def] "stream_antiP BufAC_Asm_F";
    55 b y strip_tac 1;
    55 b y strip_tac 1;
    56 b y res_inst_tac [("x","{x. (? d. x = Md d\\<leadsto>\\<bullet>\\<leadsto><>)}")] exI 1;
    56 b y res_inst_tac [("x","{x. (? d. x = Md d\\<leadsto>\\<bullet>\\<leadsto><>)}")] exI 1;
    57 b y res_inst_tac [("x","2")] exI 1;
    57 b y res_inst_tac [("x","Suc (Suc 0)")] exI 1;
    58 b y rtac conjI 1;
    58 b y rtac conjI 1;
    59 b y  strip_tac 2;
    59 b y  strip_tac 2;
    60 b y  dtac slen_mono 2;
    60 b y  dtac slen_mono 2;
    61 b y  datac (thm "ile_trans") 1 2;
    61 b y  datac (thm "ile_trans") 1 2;
    62 b y ALLGOALS Force_tac;
    62 b y ALLGOALS Force_tac;
   108 
   108 
   109 (*adm_BufAC_Asm,BufAC_Asm_antiton,adm_non_BufAC_Asm,BufAC_Asm_cong*)
   109 (*adm_BufAC_Asm,BufAC_Asm_antiton,adm_non_BufAC_Asm,BufAC_Asm_cong*)
   110 Goal "f:BufEq ==> ? l. !i x s. s:BufAC_Asm --> x << s --> Fin (l i) < #x --> \
   110 Goal "f:BufEq ==> ? l. !i x s. s:BufAC_Asm --> x << s --> Fin (l i) < #x --> \
   111 		\    (x,f\\<cdot>x):down_iterate BufAC_Cmt_F i --> \
   111 		\    (x,f\\<cdot>x):down_iterate BufAC_Cmt_F i --> \
   112 		\    (s,f\\<cdot>s):down_iterate BufAC_Cmt_F i";
   112 		\    (s,f\\<cdot>s):down_iterate BufAC_Cmt_F i";
   113 by (res_inst_tac [("x","%i. #2*i")] exI 1);
   113 by (res_inst_tac [("x","%i. # 2*i")] exI 1);
   114 by (rtac allI 1);
   114 by (rtac allI 1);
   115 by (nat_ind_tac "i" 1);
   115 by (nat_ind_tac "i" 1);
   116 by ( Simp_tac 1);
   116 by ( Simp_tac 1);
   117 by (simp_tac (simpset() addsimps [add_commute]) 1);
   117 by (simp_tac (simpset() addsimps [add_commute]) 1);
   118 by (strip_tac 1);
   118 by (strip_tac 1);
   127 (*
   127 (*
   128  1. \\<And>i d xa ya t.
   128  1. \\<And>i d xa ya t.
   129        \\<lbrakk>f \\<in> BufEq;
   129        \\<lbrakk>f \\<in> BufEq;
   130           \\<forall>x s. s \\<in> BufAC_Asm \\<longrightarrow>
   130           \\<forall>x s. s \\<in> BufAC_Asm \\<longrightarrow>
   131                 x \\<sqsubseteq> s \\<longrightarrow>
   131                 x \\<sqsubseteq> s \\<longrightarrow>
   132                 Fin (#2 * i) < #x \\<longrightarrow>
   132                 Fin (# 2 * i) < #x \\<longrightarrow>
   133                 (x, f\\<cdot>x) \\<in> down_iterate BufAC_Cmt_F i \\<longrightarrow>
   133                 (x, f\\<cdot>x) \\<in> down_iterate BufAC_Cmt_F i \\<longrightarrow>
   134                 (s, f\\<cdot>s) \\<in> down_iterate BufAC_Cmt_F i;
   134                 (s, f\\<cdot>s) \\<in> down_iterate BufAC_Cmt_F i;
   135           Md d\\<leadsto>\\<bullet>\\<leadsto>xa \\<in> BufAC_Asm; Fin (#2 * i) < #ya; f\\<cdot>(Md d\\<leadsto>\\<bullet>\\<leadsto>ya) = d\\<leadsto>t;
   135           Md d\\<leadsto>\\<bullet>\\<leadsto>xa \\<in> BufAC_Asm; Fin (# 2 * i) < #ya; f\\<cdot>(Md d\\<leadsto>\\<bullet>\\<leadsto>ya) = d\\<leadsto>t;
   136           (ya, t) \\<in> down_iterate BufAC_Cmt_F i; ya \\<sqsubseteq> xa\\<rbrakk>
   136           (ya, t) \\<in> down_iterate BufAC_Cmt_F i; ya \\<sqsubseteq> xa\\<rbrakk>
   137        \\<Longrightarrow> (xa, rt\\<cdot>(f\\<cdot>(Md d\\<leadsto>\\<bullet>\\<leadsto>xa))) \\<in> down_iterate BufAC_Cmt_F i
   137        \\<Longrightarrow> (xa, rt\\<cdot>(f\\<cdot>(Md d\\<leadsto>\\<bullet>\\<leadsto>xa))) \\<in> down_iterate BufAC_Cmt_F i
   138 *)
   138 *)
   139 by (rotate_tac 2 1);
   139 by (rotate_tac 2 1);
   140 by (dtac BufAC_Asm_prefix2 1);
   140 by (dtac BufAC_Asm_prefix2 1);
   145 by (		rotate_tac ~1 1);
   145 by (		rotate_tac ~1 1);
   146 by (		Asm_full_simp_tac 1);
   146 by (		Asm_full_simp_tac 1);
   147 by (hyp_subst_tac 1);
   147 by (hyp_subst_tac 1);
   148 (*
   148 (*
   149  1. \\<And>i d xa ya t ff ffa.
   149  1. \\<And>i d xa ya t ff ffa.
   150        \\<lbrakk>f\\<cdot>(Md d\\<leadsto>\\<bullet>\\<leadsto>ya) = d\\<leadsto>ffa\\<cdot>ya; Fin (#2 * i) < #ya;
   150        \\<lbrakk>f\\<cdot>(Md d\\<leadsto>\\<bullet>\\<leadsto>ya) = d\\<leadsto>ffa\\<cdot>ya; Fin (# 2 * i) < #ya;
   151           (ya, ffa\\<cdot>ya) \\<in> down_iterate BufAC_Cmt_F i; ya \\<sqsubseteq> xa; f \\<in> BufEq;
   151           (ya, ffa\\<cdot>ya) \\<in> down_iterate BufAC_Cmt_F i; ya \\<sqsubseteq> xa; f \\<in> BufEq;
   152           \\<forall>x s. s \\<in> BufAC_Asm \\<longrightarrow>
   152           \\<forall>x s. s \\<in> BufAC_Asm \\<longrightarrow>
   153                 x \\<sqsubseteq> s \\<longrightarrow>
   153                 x \\<sqsubseteq> s \\<longrightarrow>
   154                 Fin (#2 * i) < #x \\<longrightarrow>
   154                 Fin (# 2 * i) < #x \\<longrightarrow>
   155                 (x, f\\<cdot>x) \\<in> down_iterate BufAC_Cmt_F i \\<longrightarrow>
   155                 (x, f\\<cdot>x) \\<in> down_iterate BufAC_Cmt_F i \\<longrightarrow>
   156                 (s, f\\<cdot>s) \\<in> down_iterate BufAC_Cmt_F i;
   156                 (s, f\\<cdot>s) \\<in> down_iterate BufAC_Cmt_F i;
   157           xa \\<in> BufAC_Asm; ff \\<in> BufEq; ffa \\<in> BufEq\\<rbrakk>
   157           xa \\<in> BufAC_Asm; ff \\<in> BufEq; ffa \\<in> BufEq\\<rbrakk>
   158        \\<Longrightarrow> (xa, ff\\<cdot>xa) \\<in> down_iterate BufAC_Cmt_F i
   158        \\<Longrightarrow> (xa, ff\\<cdot>xa) \\<in> down_iterate BufAC_Cmt_F i
   159 *)
   159 *)