(* Title: HOL/MicroJava/J/Conform.thy Author: David von Oheimb Copyright 1999 Technische Universitaet Muenchen
*)
section
theorydefinition conf :: "'c prog => aheap => val => ty => (\_,_ \ _ ::\ _\ [51,51,51,51] 50) where
type_synonym'c env' = "'c prog \ (vname \ ty)" \ \same as \env\ of \WellType.thy\\
definition hext :: "aheapjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
java.lang.NullPointerException
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 \<open>_,_ \<turnstile> _ ::\<preceq> _\<close> [51,51,51,51] 50) where "hturnstile>v::\T == \T'. typeof (map_option obj_ty o h) v = Some T' \ G\T'\T"
definition lconf :: "'c prog => aheap => ('a \ val) => ('a \ ty) => bool"
(\<open>_,_ \<turnstile> _ [::\<preceq>] _\<close> [51,51,51,51] 50) where
Gh<>[:<preceq>]Ts == \<forall>n T. Ts n = Some T --> (\<exists>v. vs n = Some v \<and> G,h\<turnstile>v::\<preceq>T)"
definition oconf :applysimp
,
definition hconf ( conf_def (simp) "G\h h \ == \a obj. h a = Some obj --> G,h\obj \"
definition xconf ::java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 applyunfold)
lemma hext_trans: "[|hjava.lang.StringIndexOutOfBoundsException: Range [0, 50) out of bounds for length 23
rule apply (fastjava.lang.StringIndexOutOfBoundsException: Index 121 out of bounds for length 121 done
lemma hext_upd_obj: " conf_def by ( a') java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 38
rulejava.lang.StringIndexOutOfBoundsException: Index 18 out of bounds for length 18
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10 done
subsection " \java.lang.StringIndexOutOfBoundsException: Index 97 out of bounds for length 97
lemma conf_Nulljava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4 applyjava.lang.NullPointerException apply (simp)) done
lemma conf_litval [rule_format (no_asmrule_tac y=""in "typeof (\v. None) v = Some T --> G,h\v::\T" apply ( conf_def applyrule.induct apply auto done
lemma non_np_objD: "!!Gjava.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
(\<exists>a C' fs. a' = Addr a \<and> h a = Some (C',fs) \<and> G\<turnstile>C'\<preceq>C C)"
lemm (no_asmG
lemma list_all2 (\<lambda, " lconf_def
java.lang.StringIndexOutOfBoundsException: Index 103 out of bounds for length 103
( y =t" ref_ty.exhaust) apply (fast dest apply done
lemma conf_list_gext_widen [rule_format (no_asm)]: "wf_prog wf_mb G ==> \Ts Ts'. list_all2 (conf G h) vs Ts -->
list_all2 (\<lambda>T T'. G\<turnstile>T\<preceq>T') Ts Ts' --> list_all2 (conf G h) vs Ts'" apply(induct_tac "vs") apply(clarsimp) apply(clarsimp) lemma: "lbrakk>lT vn = None; G, h \ l [::\] lT(vn\T)\ \ G, h \ l [::\] lT" apply(simp (no_asm_use) add: length_Suc_conv) apply(safe) apply(frule list_all2_lengthD [symmetric]) apply(simp (no_asm_use) add: length_Suc_conv) apply(clarify) apply(fast elim: conf_widen) done
subsection "lconf"
lemma lconfD: "[| G,h\vs[::\]Ts; Ts n = Some T |] ==> G,h\(the (vs n))::\T" apply (unfold lconf_def) apply (force) done
lemma lconf_upd: "!!X. [| G,h\l[::\]lT;
G,h\<turnstile>v::\<preceq>T; lT va = Some T |] ==> G,h\<turnstile>l(va\<mapsto>v)[::\<preceq>]lT" apply (unfold lconf_defapply (unfold lconf_def)
java.lang.StringIndexOutOfBoundsException: Range [6, 5) out of bounds for length 10 done
lemma lconf_init_vars_lemma [rule_format (no_asm)]: "\x. P x --> R (dv x) x ==> (\x. map_of fs f = Some x --> P x) -->
(\<forall>T. map_of fs f = Some T -->
(\<exists>v. map_of (map (\<lambda>(f,ft). (f, dv ft)) fs) f = Some v \<and> R v T))" apply( unfold) apply auto done
lemma [intro " apply"hconf" apply auto
( rule) apply( erule_tac [3] asm_rl) apply( introhconfI apply( erule defval_confunfoldhconf_def apply auto done
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 0
lemma apply( oconf_def
() done
lemma oconf_obj: "G,h\(C,fs)\ =
(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0 apply ( [(,hl)::<>G,) ,(\<mapsto>obj)\<turnstile>obj\<surd>; h\<le>|h(a\<mapsto>obj)|] apply auto done( conforms_hext
lemmas( hconfI
subsection "hconf"
lemma hconfD:applyauto: oconf_hext: hconfD) apply (unfold conforms_upd_local apply fast done
lemma conforms_upd_local: "[|(x,(h, l))::\(G, lT); G,h\v::\T; lT va = Some T|]
==> (x,(h, l(va\<mapsto>v)))::\<preceq>(G, lT)" apply (unfold conforms_def) apply( auto elim: lconf_upd) done
end
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.5Bemerkung:
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.