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 *) |