src/HOL/Bali/TypeRel.thy
changeset 45605 a89b4bc311a5
parent 38541 9cfafdb56749
child 46212 d86ef6b96097
equal deleted inserted replaced
45604:29cf40fe8daf 45605:a89b4bc311a5
    58 section "subclass and subinterface relations"
    58 section "subclass and subinterface relations"
    59 
    59 
    60   (* direct subinterface in Decl.thy, cf. 9.1.3 *)
    60   (* direct subinterface in Decl.thy, cf. 9.1.3 *)
    61   (* direct subclass     in Decl.thy, cf. 8.1.3 *)
    61   (* direct subclass     in Decl.thy, cf. 8.1.3 *)
    62 
    62 
    63 lemmas subcls_direct = subcls1I [THEN r_into_rtrancl, standard]
    63 lemmas subcls_direct = subcls1I [THEN r_into_rtrancl]
    64 
    64 
    65 lemma subcls_direct1:
    65 lemma subcls_direct1:
    66  "\<lbrakk>class G C = Some c; C \<noteq> Object;D=super c\<rbrakk> \<Longrightarrow> G\<turnstile>C\<preceq>\<^sub>C D"
    66  "\<lbrakk>class G C = Some c; C \<noteq> Object;D=super c\<rbrakk> \<Longrightarrow> G\<turnstile>C\<preceq>\<^sub>C D"
    67 apply (auto dest: subcls_direct)
    67 apply (auto dest: subcls_direct)
    68 done
    68 done
   552 apply (erule widen.induct)
   552 apply (erule widen.induct)
   553 apply (auto dest: widen_Iface widen_NT2 widen_Class)
   553 apply (auto dest: widen_Iface widen_NT2 widen_Class)
   554 done
   554 done
   555 
   555 
   556 lemmas subint_antisym = 
   556 lemmas subint_antisym = 
   557        subint1_acyclic [THEN acyclic_impl_antisym_rtrancl, standard]
   557        subint1_acyclic [THEN acyclic_impl_antisym_rtrancl]
   558 lemmas subcls_antisym = 
   558 lemmas subcls_antisym = 
   559        subcls1_acyclic [THEN acyclic_impl_antisym_rtrancl, standard]
   559        subcls1_acyclic [THEN acyclic_impl_antisym_rtrancl]
   560 
   560 
   561 lemma widen_antisym: "\<lbrakk>G\<turnstile>S\<preceq>T; G\<turnstile>T\<preceq>S; ws_prog G\<rbrakk> \<Longrightarrow> S=T"
   561 lemma widen_antisym: "\<lbrakk>G\<turnstile>S\<preceq>T; G\<turnstile>T\<preceq>S; ws_prog G\<rbrakk> \<Longrightarrow> S=T"
   562 by (fast elim: widen_antisym_lemma subint_antisym [THEN antisymD] 
   562 by (fast elim: widen_antisym_lemma subint_antisym [THEN antisymD] 
   563                                    subcls_antisym [THEN antisymD])
   563                                    subcls_antisym [THEN antisymD])
   564 
   564