equal
deleted
inserted
replaced
181 ML{* |
181 ML{* |
182 val forward_hyp_tac = ALLGOALS (TRY o (EVERY' [dtac spec, mp_tac, |
182 val forward_hyp_tac = ALLGOALS (TRY o (EVERY' [dtac spec, mp_tac, |
183 (mp_tac ORELSE' (dtac spec THEN' mp_tac)), REPEAT o (etac conjE)])) |
183 (mp_tac ORELSE' (dtac spec THEN' mp_tac)), REPEAT o (etac conjE)])) |
184 *} |
184 *} |
185 |
185 |
186 declare [[unify_search_bound = 40, unify_trace_bound = 40]] |
|
187 |
|
188 |
186 |
189 theorem eval_evals_exec_type_sound: |
187 theorem eval_evals_exec_type_sound: |
190 "wf_java_prog G ==> |
188 "wf_java_prog G ==> |
191 (G\<turnstile>(x,(h,l)) -e \<succ>v -> (x', (h',l')) --> |
189 (G\<turnstile>(x,(h,l)) -e \<succ>v -> (x', (h',l')) --> |
192 (\<forall>lT. (x,(h ,l ))::\<preceq>(G,lT) --> (\<forall>T . (G,lT)\<turnstile>e :: T --> |
190 (\<forall>lT. (x,(h ,l ))::\<preceq>(G,lT) --> (\<forall>T . (G,lT)\<turnstile>e :: T --> |
366 apply blast |
364 apply blast |
367 apply (simp (no_asm_simp))+ |
365 apply (simp (no_asm_simp))+ |
368 |
366 |
369 done |
367 done |
370 |
368 |
371 declare [[unify_search_bound = 20, unify_trace_bound = 20]] |
|
372 |
|
373 |
369 |
374 lemma eval_type_sound: "!!E s s'. |
370 lemma eval_type_sound: "!!E s s'. |
375 [| wf_java_prog G; G\<turnstile>(x,s) -e\<succ>v -> (x',s'); (x,s)::\<preceq>E; E\<turnstile>e::T; G=prg E |] |
371 [| wf_java_prog G; G\<turnstile>(x,s) -e\<succ>v -> (x',s'); (x,s)::\<preceq>E; E\<turnstile>e::T; G=prg E |] |
376 ==> (x',s')::\<preceq>E \<and> (x'=None --> G,heap s'\<turnstile>v::\<preceq>T) \<and> heap s \<le>| heap s'" |
372 ==> (x',s')::\<preceq>E \<and> (x'=None --> G,heap s'\<turnstile>v::\<preceq>T) \<and> heap s \<le>| heap s'" |
377 apply (simp (no_asm_simp) only: split_tupled_all) |
373 apply (simp (no_asm_simp) only: split_tupled_all) |