src/HOL/MicroJava/BV/LBVComplete.thy
changeset 10612 779af7c58743
parent 10592 fc0b575a2cf7
child 10628 4ea7f3e8e471
equal deleted inserted replaced
10611:e460c53c1c9b 10612:779af7c58743
   425 proof (unfold wt_jvm_prog_def)
   425 proof (unfold wt_jvm_prog_def)
   426 
   426 
   427   assume wfprog: 
   427   assume wfprog: 
   428     "wf_prog (\<lambda>G C (sig,rT,mxs,mxl,b). wt_method G C (snd sig) rT mxs mxl b (Phi C sig)) G"
   428     "wf_prog (\<lambda>G C (sig,rT,mxs,mxl,b). wt_method G C (snd sig) rT mxs mxl b (Phi C sig)) G"
   429 
   429 
   430   thus ?thesis 
   430   thus ?thesis (* DvO: braucht ewig :-( *)
   431   proof (simp add: wtl_jvm_prog_def wf_prog_def wf_cdecl_def wf_mdecl_def, auto)
   431   proof (simp add: wtl_jvm_prog_def wf_prog_def wf_cdecl_def wf_mdecl_def, auto)
   432     fix a aa ab b ac ba ad ae af bb 
   432     fix a aa ab b ac ba ad ae af bb 
   433     assume 1 : "\<forall>(C,sc,fs,ms)\<in>set G.
   433     assume 1 : "\<forall>(C,D,fs,ms)\<in>set G.
   434              Ball (set fs) (wf_fdecl G) \<and>
   434              Ball (set fs) (wf_fdecl G) \<and> unique fs \<and>
   435              unique fs \<and>
       
   436              (\<forall>(sig,rT,mb)\<in>set ms. wf_mhead G sig rT \<and> 
   435              (\<forall>(sig,rT,mb)\<in>set ms. wf_mhead G sig rT \<and> 
   437                (\<lambda>(mxs,mxl,b). wt_method G C (snd sig) rT mxs mxl b (Phi C sig)) mb) \<and>
   436                (\<lambda>(mxs,mxl,b). wt_method G C (snd sig) rT mxs mxl b (Phi C sig)) mb) \<and>
   438              unique ms \<and>
   437              unique ms \<and>
   439              (case sc of None => C = Object
   438              (C \<noteq> Object \<longrightarrow>
   440               | Some D =>
       
   441                   is_class G D \<and>
   439                   is_class G D \<and>
   442                   (D, C) \<notin> (subcls1 G)^* \<and>
   440                   (D, C) \<notin> (subcls1 G)^* \<and>
   443                   (\<forall>(sig,rT,b)\<in>set ms. 
   441                   (\<forall>(sig,rT,b)\<in>set ms. 
   444                    \<forall>D' rT' b'. method (G, D) sig = Some (D', rT', b') --> G\<turnstile>rT\<preceq>rT'))"
   442                    \<forall>D' rT' b'. method (G, D) sig = Some (D', rT', b') --> G\<turnstile>rT\<preceq>rT'))"
   445              "(a, aa, ab, b) \<in> set G"
   443              "(a, aa, ab, b) \<in> set G"
   454       assume m: "\<forall>(sig,rT,mb)\<in>set b. wf_mhead G sig rT \<and> 
   452       assume m: "\<forall>(sig,rT,mb)\<in>set b. wf_mhead G sig rT \<and> 
   455                   (\<lambda>(mxs,mxl,b). wt_method G a (snd sig) rT mxs mxl b (Phi a sig)) mb" 
   453                   (\<lambda>(mxs,mxl,b). wt_method G a (snd sig) rT mxs mxl b (Phi a sig)) mb" 
   456       from m b
   454       from m b
   457       show ?thesis
   455       show ?thesis
   458       proof (rule bspec [elim_format], clarsimp)
   456       proof (rule bspec [elim_format], clarsimp)
   459         assume "wt_method G a ba ad ae af bb (Phi a (ac, ba))"         
   457         assume "wt_method G a ba ad ae af bb (Phi a (ac, ba))"
   460         with wfprog uG ub b 1
   458         with wfprog uG ub b 1
   461         show ?thesis
   459         show ?thesis
   462           by - (rule wtl_method_complete [elim_format], assumption+, 
   460           by - (rule wtl_method_complete [elim_format], assumption+, 
   463                 simp add: make_Cert_def unique_epsilon unique_epsilon')
   461                 simp add: make_Cert_def unique_epsilon unique_epsilon')
   464       qed 
   462       qed 
       
   463 oops
       
   464 (*
   465     qed
   465     qed
   466   qed
   466   qed
   467 qed
   467 qed
       
   468 *)
   468 
   469 
   469 lemmas [simp] = split_paired_Ex
   470 lemmas [simp] = split_paired_Ex
   470 
   471 
   471 end
   472 end