# HG changeset patch # User oheimb # Date 947093227 -3600 # Node ID de9fae0cdfdebff622cd7a8b51ea480636b51d6c # Parent 2dda3e88d23f88c1b5f3df1ae2cff7a4d4901f24 improved symbol for subcls relation diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/Conform.ML --- a/src/HOL/MicroJava/J/Conform.ML Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/Conform.ML Wed Jan 05 18:27:07 2000 +0100 @@ -55,7 +55,7 @@ (K [Asm_full_simp_tac 1]); val conf_obj_AddrI = prove_goalw thy [conf_def] - "\\G. \\h a = Some (C,fs); G\\Class C\\Class D\\ \\ G,h\\Addr a\\\\Class D" + "\\G. \\h a = Some (C,fs); G\\Class C\\ Class D\\ \\ G,h\\Addr a\\\\ Class D" (K [Asm_full_simp_tac 1]); Goalw [conf_def] "is_type G T \\ G,h\\default_val T\\\\T"; @@ -116,8 +116,8 @@ Step_tac 1, Auto_tac]); -val non_np_objD = prove_goal thy "\\G. \\a' \\ Null; G,h\\a'\\\\Class C; C \\ Object\\ \\ \ -\ (\\a C' fs. a' = Addr a \\ h a = Some (C',fs) \\ G\\Class C'\\Class C)" +val non_np_objD = prove_goal thy "\\G. \\a' \\ Null; G,h\\a'\\\\ Class C; C \\ Object\\ \\ \ +\ (\\a C' fs. a' = Addr a \\ h a = Some (C',fs) \\ G\\Class C'\\ Class C)" (K[fast_tac (HOL_cs addDs [non_npD]) 1]); Goal "a' \\ Null \\ wf_prog wf_mb G \\ G,h\\a'\\\\RefT t \\\ diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/JTypeSafe.ML --- a/src/HOL/MicroJava/J/JTypeSafe.ML Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/JTypeSafe.ML Wed Jan 05 18:27:07 2000 +0100 @@ -45,7 +45,7 @@ qed "Cast_conf"; Goal "\\ wf_prog wf_mb G; field (G,C) fn = Some (fd, ft); (h,l)\\\\(G,lT); \ -\ x' = None \\ G,h\\a'\\\\Class C; np a' x' = None \\ \\ \ +\ x' = None \\ G,h\\a'\\\\ Class C; np a' x' = None \\ \\ \ \ G,h\\the (snd (the (h (the_Addr a'))) (fn, fd))\\\\ft"; by( dtac np_NoneD 1); by( etac conjE 1); @@ -67,7 +67,7 @@ \ (G, lT)\\v\\T'; G\\T'\\ft; \ \ (G, lT)\\aa\\Class C; \ \ field (G,C) fn = Some (fd, ft); h''\\|h'; \ -\ x' = None \\ G,h'\\a'\\\\Class C; h'\\|h; \ +\ x' = None \\ G,h'\\a'\\\\ Class C; h'\\|h; \ \ (h, l)\\\\(G, lT); G,h\\x\\\\T'; np a' x' = None\\ \\ \ \ h''\\|h(a\\(c,(fs((fn,fd)\\x)))) \\ \ \ (h(a\\(c,(fs((fn,fd)\\x)))), l)\\\\(G, lT) \\ \ @@ -131,7 +131,7 @@ \ (G, lT)\\blk\\ \\ h\\|xi \\ (xi, xl)\\\\(G, lT); \ \ \\lT. (xi, xl)\\\\(G, lT) \\ (\\T. (G, lT)\\res\\T \\ \ \ xi\\|h' \\ (h', xj)\\\\(G, lT) \\ (x' = None \\ G,h'\\v\\\\T)); \ -\ G,xh\\a'\\\\Class C \\ \\ \ +\ G,xh\\a'\\\\ Class C \\ \\ \ \ xc\\|h' \\ (h', l)\\\\(G, lT) \\ (x' = None \\ G,h'\\v\\\\rTa)"; by( dtac (insertI1 RSN (2,(equalityD2 RS subsetD))) 1); by( dtac (max_spec2appl_meths RS appl_methsD) 1); diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/TypeRel.ML --- a/src/HOL/MicroJava/J/TypeRel.ML Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/TypeRel.ML Wed Jan 05 18:27:07 2000 +0100 @@ -95,8 +95,8 @@ val widen_Class_NullT = prove_typerel "G\\Class C\\RefT NullT \\ R" [prove_widen_lemma "G\\S\\T \\ S=Class C \\ T=RefT NullT \\ R"]; -val widen_Class_Class = prove_typerel "G\\Class C\\Class cm \\ G\\C\\C cm" -[ prove_widen_lemma "G\\S\\T \\ S = Class C \\ T = Class cm \\ G\\C\\C cm"]; +val widen_Class_Class = prove_typerel "G\\Class C\\ Class cm \\ G\\C\\C cm" +[ prove_widen_lemma "G\\S\\T \\ S = Class C \\ T = Class cm \\ G\\C\\C cm"]; Goal "G\\S\\U \\ \\T. G\\U\\T \\ G\\S\\T"; by( etac widen.induct 1); diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/TypeRel.thy --- a/src/HOL/MicroJava/J/TypeRel.thy Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/TypeRel.thy Wed Jan 05 18:27:07 2000 +0100 @@ -15,13 +15,13 @@ syntax subcls1 :: "'c prog \\ [cname, cname] \\ bool" ("_\\_\\C1_" [71,71,71] 70) - subcls :: "'c prog \\ [cname, cname] \\ bool" ("_\\_\\C _" [71,71,71] 70) + subcls :: "'c prog \\ [cname, cname] \\ bool" ("_\\_\\C _" [71,71,71] 70) widen :: "'c prog \\ [ty, ty] \\ bool" ("_\\_\\_" [71,71,71] 70) cast :: "'c prog \\ [ty, ty] \\ bool" ("_\\_\\? _"[71,71,71] 70) translations "G\\C \\C1 D" == "(C,D) \\ subcls1 G" - "G\\C \\C D" == "(C,D) \\ (subcls1 G)^*" + "G\\C \\C D" == "(C,D) \\ (subcls1 G)^*" "G\\S \\ T" == "(S,T) \\ widen G" "G\\S \\? T" == "(S,T) \\ cast G" @@ -66,11 +66,11 @@ inductive "widen G" intrs (*widening, viz. method invocation conversion, cf. 5.3 i.e. sort of syntactic subtyping *) refl "G\\ T \\ T" (* identity conv., cf. 5.1.1 *) - subcls "G\\C\\C D \\ G\\Class C \\ Class D" + subcls "G\\C\\C D \\ G\\Class C \\ Class D" null "G\\ NT \\ RefT R" inductive "cast G" intrs (* casting / narr.ref. conversion, cf. 5.5 / 5.1.5 *) widen "G\\S\\T \\ G\\ S \\? T" - subcls "G\\C\\C D \\ G\\Class D \\? Class C" + subcls "G\\C\\C D \\ G\\Class D \\? Class C" end diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/WellForm.ML --- a/src/HOL/MicroJava/J/WellForm.ML Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/WellForm.ML Wed Jan 05 18:27:07 2000 +0100 @@ -140,7 +140,7 @@ "\\X. wf_prog wf_mb G \\ field (G,Object) = empty" (K [Asm_simp_tac 1]); Addsimps [field_Object]; -Goal "\\is_class G C; wf_prog wf_mb G\\ \\ G\\C\\C Object"; +Goal "\\is_class G C; wf_prog wf_mb G\\ \\ G\\C\\C Object"; by(etac subcls1_induct 1); by( atac 1); by( Fast_tac 1); @@ -152,7 +152,7 @@ "\\sig. wf_mhead G sig rT \\ is_type G rT" (K [split_all_tac 1, Auto_tac]); -Goal "\\wf_prog wf_mb G; is_class G C\\ \\ G\\Class C\\Class Object"; +Goal "\\wf_prog wf_mb G; is_class G C\\ \\ G\\Class C\\ Class Object"; by(rtac widen.subcls 1); by(eatac subcls_C_Object 1 1); qed "widen_Class_Object"; @@ -166,7 +166,7 @@ qed_spec_mp "fields_mono"; Goal "\\is_class G C; wf_prog wf_mb G\\ \\ \ -\ \\((fn,fd),fT)\\set (fields (G,C)). G\\Class C\\Class fd"; +\ \\((fn,fd),fT)\\set (fields (G,C)). G\\Class C\\ Class fd"; by( etac subcls1_induct 1); by( atac 1); by( Asm_simp_tac 1); @@ -189,7 +189,7 @@ qed "widen_fields_defpl'"; Goal "\\is_class G C; wf_prog wf_mb G; ((fn,fd),fT) \\ set (fields (G,C))\\ \\ \ -\ G\\Class C\\Class fd"; +\ G\\Class C\\ Class fd"; by( datac widen_fields_defpl' 1 1); (*###################*) by( dtac bspec 1); @@ -227,7 +227,7 @@ qed "rtranclD"; Goal -"\\wf_prog wf_mb G; G\\Class C'\\Class C; map_of(fields (G,C )) f = Some ft\\ \\ \ +"\\wf_prog wf_mb G; G\\Class C'\\ Class C; map_of(fields (G,C )) f = Some ft\\ \\ \ \ map_of (fields (G,C')) f = Some ft"; by( dtac widen_Class_Class 1); by( dtac rtranclD 1); @@ -246,11 +246,11 @@ (K [rtac table_map_Some 1, Asm_full_simp_tac 1]); val widen_cfs_fields = prove_goal thy "\\X. \\field (G,C) fn = Some (fd, fT);\ -\ G\\Class C'\\Class C; wf_prog wf_mb G\\ \\ map_of (fields (G,C')) (fn, fd) = Some fT" (K[ +\ G\\Class C'\\ Class C; wf_prog wf_mb G\\ \\ map_of (fields (G,C')) (fn, fd) = Some fT" (K[ fast_tac (HOL_cs addIs [widen_fields_mono, cfs_fields_lemma]) 1]); Goal "wf_prog wf_mb G \\ method (G,C) sig = Some (md,mh,m)\ -\ \\ G\\Class C\\Class md \\ wf_mdecl wf_mb G md (sig,(mh,m))"; +\ \\ G\\Class C\\ Class md \\ wf_mdecl wf_mb G md (sig,(mh,m))"; by( case_tac "is_class G C" 1); by( forw_inst_tac [("C","C")] method_rec 2); by( asm_full_simp_tac (simpset() addsimps [is_class_def] @@ -278,7 +278,7 @@ by( Asm_full_simp_tac 1); qed_spec_mp "method_wf_mdecl"; -Goal "\\G\\T\\C T'; wf_prog wf_mb G\\ \\ \ +Goal "\\G\\T\\C T'; wf_prog wf_mb G\\ \\ \ \ \\D rT b. method (G,T') sig = Some (D,rT ,b) \\\ \ (\\D' rT' b'. method (G,T) sig = Some (D',rT',b') \\ G\\rT'\\rT)"; by( dtac rtranclD 1); @@ -313,7 +313,7 @@ Goal - "\\ G\\Class C\\Class D; wf_prog wf_mb G; \ + "\\ G\\Class C\\ Class D; wf_prog wf_mb G; \ \ method (G,D) sig = Some (md, rT, b) \\ \ \ \\ \\mD' rT' b'. method (G,C) sig= Some(mD',rT',b') \\ G\\rT'\\rT"; by(auto_tac (claset() addSDs [widen_Class_Class] diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/WellForm.thy --- a/src/HOL/MicroJava/J/WellForm.thy Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/WellForm.thy Wed Jan 05 18:27:07 2000 +0100 @@ -36,7 +36,7 @@ (\\m\\set ms. wf_mdecl wf_mb G C m) \\ unique ms \\ (case sc of None \\ C = Object | Some D \\ - is_class G D \\ \\ G\\D\\C C \\ + is_class G D \\ \\ G\\D\\C C \\ (\\(sig,rT,b)\\set ms. \\D' rT' b'. method(G,D) sig = Some(D',rT',b') \\ G\\rT\\rT'))" diff -r 2dda3e88d23f -r de9fae0cdfde src/HOL/MicroJava/J/WellType.ML --- a/src/HOL/MicroJava/J/WellType.ML Wed Jan 05 16:13:05 2000 +0100 +++ b/src/HOL/MicroJava/J/WellType.ML Wed Jan 05 18:27:07 2000 +0100 @@ -5,7 +5,7 @@ *) Goal -"\\ method (G,C) sig = Some (md,rT,b); wf_prog wf_mb G; G\\Class T''\\Class C\\\ +"\\ method (G,C) sig = Some (md,rT,b); wf_prog wf_mb G; G\\Class T''\\ Class C\\\ \ \\ \\md' rT' b'. method (G,T'') sig = Some (md',rT',b') \\ G\\rT'\\rT"; by( forward_tac [widen_Class_RefT] 1); by( etac exE 1); @@ -18,9 +18,9 @@ Goal -"\\method (G,C) sig = Some (md,rT,b); G\\Class T''\\Class C; wf_prog wf_mb G\\ \\ \ +"\\method (G,C) sig = Some (md,rT,b); G\\Class T''\\ Class C; wf_prog wf_mb G\\ \\ \ \ \\T' rT' b. method (G,T'') sig = Some (T',rT',b) \\ \ -\ G\\rT'\\rT \\ G\\Class T''\\Class T' \\ wf_mhead G sig rT' \\ wf_mb G T' (sig,rT',b)"; +\ G\\rT'\\rT \\ G\\Class T''\\ Class T' \\ wf_mhead G sig rT' \\ wf_mb G T' (sig,rT',b)"; by( datac widen_methd 2 1); by( Clarsimp_tac 1); by( dtac method_wf_mdecl 1);