src/HOL/MicroJava/J/Example.ML
changeset 10925 5ffe7ed8899a
parent 10763 08e1610c1dcb
child 10996 74e970389def
equal deleted inserted replaced
10924:92305ae9f460 10925:5ffe7ed8899a
    11 by (Asm_simp_tac 1);
    11 by (Asm_simp_tac 1);
    12 qed "map_of_Cons2";
    12 qed "map_of_Cons2";
    13 Delsimps[map_of_Cons]; (* sic! *)
    13 Delsimps[map_of_Cons]; (* sic! *)
    14 Addsimps[map_of_Cons1, map_of_Cons2];
    14 Addsimps[map_of_Cons1, map_of_Cons2];
    15 
    15 
    16 Goalw [ObjectC_def] "class tprg Object = Some (arbitrary, [], [])";
    16 Goalw [ObjectC_def,class_def] "class tprg Object = Some (arbitrary, [], [])";
    17 by (Simp_tac 1);
    17 by (Simp_tac 1);
    18 qed "class_tprg_Object";
    18 qed "class_tprg_Object";
    19 
    19 
    20 Goalw [ObjectC_def, BaseC_def, ExtC_def] "class tprg Base = Some (Object, \
    20 Goalw [ObjectC_def, BaseC_def, ExtC_def, class_def] 
       
    21 "class tprg Base = Some (Object, \
    21 	\ [(vee, PrimT Boolean)], \
    22 	\ [(vee, PrimT Boolean)], \
    22         \ [((foo, [Class Base]), Class Base, foo_Base)])";
    23         \ [((foo, [Class Base]), Class Base, foo_Base)])";
    23 by (Simp_tac 1);
    24 by (Simp_tac 1);
    24 qed "class_tprg_Base";
    25 qed "class_tprg_Base";
    25 
    26 
    26 Goalw [ObjectC_def, BaseC_def, ExtC_def] "class tprg Ext = Some (Base, \
    27 Goalw [ObjectC_def, BaseC_def, ExtC_def, class_def] 
       
    28 "class tprg Ext = Some (Base, \
    27 	\ [(vee, PrimT Integer)], \
    29 	\ [(vee, PrimT Integer)], \
    28         \ [((foo, [Class Base]), Class Ext, foo_Ext)])";
    30         \ [((foo, [Class Base]), Class Ext, foo_Ext)])";
    29 by (Simp_tac 1);
    31 by (Simp_tac 1);
    30 qed "class_tprg_Ext";
    32 qed "class_tprg_Ext";
    31 
    33 
    47 Goal "(Base, Ext) \\<in> (subcls1 tprg)^+ ==> R";
    49 Goal "(Base, Ext) \\<in> (subcls1 tprg)^+ ==> R";
    48 by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
    50 by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
    49 qed "not_Base_subcls_Ext";
    51 qed "not_Base_subcls_Ext";
    50 AddSEs [not_Base_subcls_Ext];
    52 AddSEs [not_Base_subcls_Ext];
    51 
    53 
    52 Goalw [ObjectC_def, BaseC_def, ExtC_def] "class tprg C = Some z ==> C=Object \\<or> C=Base \\<or> C=Ext";
    54 Goalw [ObjectC_def, BaseC_def, ExtC_def, class_def] 
       
    55 "class tprg C = Some z ==> C=Object \\<or> C=Base \\<or> C=Ext";
    53 by (auto_tac (claset(),simpset()addsplits[split_if_asm]addsimps[map_of_Cons]));
    56 by (auto_tac (claset(),simpset()addsplits[split_if_asm]addsimps[map_of_Cons]));
    54 qed "class_tprgD";
    57 qed "class_tprgD";
    55 
    58 
    56 Goal "(C,C) \\<in> (subcls1 tprg)^+ ==> R";
    59 Goal "(C,C) \\<in> (subcls1 tprg)^+ ==> R";
    57 by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
    60 by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
    96 Goal "fields (tprg, Object) = []";
    99 Goal "fields (tprg, Object) = []";
    97 by (stac fields_rec_ 1);
   100 by (stac fields_rec_ 1);
    98 by   Auto_tac;
   101 by   Auto_tac;
    99 qed "fields_Object";
   102 qed "fields_Object";
   100 Addsimps [fields_Object];
   103 Addsimps [fields_Object];
       
   104 
       
   105 Addsimps [is_class_def];
   101 
   106 
   102 Goal "fields (tprg,Base) = [((vee, Base), PrimT Boolean)]";
   107 Goal "fields (tprg,Base) = [((vee, Base), PrimT Boolean)]";
   103 by (stac fields_rec_ 1);
   108 by (stac fields_rec_ 1);
   104 by   Auto_tac;
   109 by   Auto_tac;
   105 qed "fields_Base";
   110 qed "fields_Base";