285 (Acc (arr_viewed_from Main Ext).[Lit (Intg 2)])) Skip))" |
285 (Acc (arr_viewed_from Main Ext).[Lit (Intg 2)])) Skip))" |
286 |
286 |
287 |
287 |
288 subsubsection "well-structuredness" |
288 subsubsection "well-structuredness" |
289 |
289 |
290 lemma not_Object_subcls_any [elim!]: "(Object, C) \<in> (subcls1 tprg)^+ \<Longrightarrow> R" |
290 lemma not_Object_subcls_any [elim!]: "(Object, C) \<in> (subcls1 tprg)\<^sup>+ \<Longrightarrow> R" |
291 apply (auto dest!: tranclD subcls1D) |
291 apply (auto dest!: tranclD subcls1D) |
292 done |
292 done |
293 |
293 |
294 lemma not_Throwable_subcls_SXcpt [elim!]: |
294 lemma not_Throwable_subcls_SXcpt [elim!]: |
295 "(SXcpt Throwable, SXcpt xn) \<in> (subcls1 tprg)^+ \<Longrightarrow> R" |
295 "(SXcpt Throwable, SXcpt xn) \<in> (subcls1 tprg)\<^sup>+ \<Longrightarrow> R" |
296 apply (auto dest!: tranclD subcls1D) |
296 apply (auto dest!: tranclD subcls1D) |
297 apply (simp add: Object_def SXcpt_def) |
297 apply (simp add: Object_def SXcpt_def) |
298 done |
298 done |
299 |
299 |
300 lemma not_SXcpt_n_subcls_SXcpt_n [elim!]: |
300 lemma not_SXcpt_n_subcls_SXcpt_n [elim!]: |
301 "(SXcpt xn, SXcpt xn) \<in> (subcls1 tprg)^+ \<Longrightarrow> R" |
301 "(SXcpt xn, SXcpt xn) \<in> (subcls1 tprg)\<^sup>+ \<Longrightarrow> R" |
302 apply (auto dest!: tranclD subcls1D) |
302 apply (auto dest!: tranclD subcls1D) |
303 apply (drule rtranclD) |
303 apply (drule rtranclD) |
304 apply auto |
304 apply auto |
305 done |
305 done |
306 |
306 |
307 lemma not_Base_subcls_Ext [elim!]: "(Base, Ext) \<in> (subcls1 tprg)^+ \<Longrightarrow> R" |
307 lemma not_Base_subcls_Ext [elim!]: "(Base, Ext) \<in> (subcls1 tprg)\<^sup>+ \<Longrightarrow> R" |
308 apply (auto dest!: tranclD subcls1D simp add: BaseCl_def) |
308 apply (auto dest!: tranclD subcls1D simp add: BaseCl_def) |
309 done |
309 done |
310 |
310 |
311 lemma not_TName_n_subcls_TName_n [rule_format (no_asm), elim!]: |
311 lemma not_TName_n_subcls_TName_n [rule_format (no_asm), elim!]: |
312 "(\<lparr>pid=java_lang,tid=TName tn\<rparr>, \<lparr>pid=java_lang,tid=TName tn\<rparr>) |
312 "(\<lparr>pid=java_lang,tid=TName tn\<rparr>, \<lparr>pid=java_lang,tid=TName tn\<rparr>) |
313 \<in> (subcls1 tprg)^+ \<longrightarrow> R" |
313 \<in> (subcls1 tprg)\<^sup>+ \<longrightarrow> R" |
314 apply (rule_tac n1 = "tn" in surj_tnam' [THEN exE]) |
314 apply (rule_tac n1 = "tn" in surj_tnam' [THEN exE]) |
315 apply (erule ssubst) |
315 apply (erule ssubst) |
316 apply (rule tnam'.induct) |
316 apply (rule tnam'.induct) |
317 apply safe |
317 apply safe |
318 apply (auto dest!: tranclD subcls1D simp add: BaseCl_def ExtCl_def MainCl_def) |
318 apply (auto dest!: tranclD subcls1D simp add: BaseCl_def ExtCl_def MainCl_def) |