src/HOL/MicroJava/J/Example.ML
author oheimb
Tue, 02 Jan 2001 22:41:17 +0100
changeset 10763 08e1610c1dcb
parent 10613 78b1d6c3ee9c
child 10925 5ffe7ed8899a
permissions -rw-r--r--
added type annotation to Call
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
     1
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
     2
Addsimps [inj_cnam_, inj_vnam_];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
     3
Addsimps [Base_not_Object,Ext_not_Object];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
     4
Addsimps [Base_not_Object RS not_sym,Ext_not_Object RS not_sym];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
     5
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
     6
bind_thm ("map_of_Cons", hd (tl (thms "map_of.simps")));
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
     7
Goal "map_of ((aa,bb)#ps) aa = Some bb";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
     8
by (Simp_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
     9
qed "map_of_Cons1";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    10
Goal "aa\\<noteq>k ==> map_of ((k,bb)#ps) aa = map_of ps aa";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    11
by (Asm_simp_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    12
qed "map_of_Cons2";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    13
Delsimps[map_of_Cons]; (* sic! *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    14
Addsimps[map_of_Cons1, map_of_Cons2];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    15
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    16
Goalw [ObjectC_def] "class tprg Object = Some (arbitrary, [], [])";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    17
by (Simp_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    18
qed "class_tprg_Object";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    19
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    20
Goalw [ObjectC_def, BaseC_def, ExtC_def] "class tprg Base = Some (Object, \
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    21
	\ [(vee, PrimT Boolean)], \
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    22
        \ [((foo, [Class Base]), Class Base, foo_Base)])";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    23
by (Simp_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    24
qed "class_tprg_Base";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    25
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    26
Goalw [ObjectC_def, BaseC_def, ExtC_def] "class tprg Ext = Some (Base, \
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    27
	\ [(vee, PrimT Integer)], \
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    28
        \ [((foo, [Class Base]), Class Ext, foo_Ext)])";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    29
by (Simp_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    30
qed "class_tprg_Ext";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    31
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    32
Addsimps [class_tprg_Object, class_tprg_Base, class_tprg_Ext];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    33
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    34
Goal "(Object,C) \\<in> (subcls1 tprg)^+ ==> R";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    35
by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    36
qed "not_Object_subcls";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    37
AddSEs [not_Object_subcls];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    38
10042
7164dc0d24d8 unsymbolized
kleing
parents: 9348
diff changeset
    39
Goal "tprg\\<turnstile>Object\\<preceq>C C ==> C = Object";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    40
be rtrancl_induct 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    41
by  Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    42
bd subcls1D 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    43
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    44
qed "subcls_ObjectD";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    45
AddSDs[subcls_ObjectD];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    46
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    47
Goal "(Base, Ext) \\<in> (subcls1 tprg)^+ ==> R";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    48
by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    49
qed "not_Base_subcls_Ext";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    50
AddSEs [not_Base_subcls_Ext];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    51
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    52
Goalw [ObjectC_def, BaseC_def, ExtC_def] "class tprg C = Some z ==> C=Object \\<or> C=Base \\<or> C=Ext";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    53
by (auto_tac (claset(),simpset()addsplits[split_if_asm]addsimps[map_of_Cons]));
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    54
qed "class_tprgD";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    55
10042
7164dc0d24d8 unsymbolized
kleing
parents: 9348
diff changeset
    56
Goal "(C,C) \\<in> (subcls1 tprg)^+ ==> R";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    57
by (auto_tac (claset() addSDs [tranclD,subcls1D],simpset()));
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    58
by (ftac class_tprgD 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    59
by (auto_tac (claset() addSDs [],simpset()));
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    60
bd rtranclD 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    61
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    62
qed "not_class_subcls_class";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    63
AddSEs [not_class_subcls_class];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    64
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    65
goalw thy [ObjectC_def, BaseC_def, ExtC_def] "unique tprg";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    66
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    67
qed "unique_classes";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    68
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    69
bind_thm ("subcls_direct", subcls1I RS r_into_rtrancl);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    70
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    71
Goal "tprg\\<turnstile>Ext\\<preceq>C Base";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    72
br subcls_direct 1;
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    73
by Auto_tac;
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    74
qed "Ext_subcls_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    75
Addsimps [Ext_subcls_Base];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    76
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10138
diff changeset
    77
Goal "tprg\\<turnstile>Class Ext\\<preceq> Class Base";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    78
br widen.subcls 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    79
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    80
qed "Ext_widen_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    81
Addsimps [Ext_widen_Base];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    82
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    83
AddSIs ty_expr_ty_exprs_wt_stmt.intrs;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    84
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    85
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    86
Goal "acyclic (subcls1 tprg)";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    87
br acyclicI 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    88
by Safe_tac ;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    89
qed "acyclic_subcls1_";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    90
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    91
val wf_subcls1_=acyclic_subcls1_ RS(finite_subcls1 RS finite_acyclic_wf_converse);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    92
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    93
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    94
val fields_rec_ = wf_subcls1_ RSN (1, fields_rec_lemma);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    95
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    96
Goal "fields (tprg, Object) = []";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    97
by (stac fields_rec_ 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    98
by   Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
    99
qed "fields_Object";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   100
Addsimps [fields_Object];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   101
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   102
Goal "fields (tprg,Base) = [((vee, Base), PrimT Boolean)]";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   103
by (stac fields_rec_ 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   104
by   Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   105
qed "fields_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   106
Addsimps [fields_Base];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   107
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   108
Goal "fields (tprg, Ext)  = [((vee, Ext ), PrimT Integer)] @\
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   109
                                    \ fields (tprg, Base)";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   110
br trans 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   111
br  fields_rec_ 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   112
by   Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   113
qed "fields_Ext";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   114
Addsimps [fields_Ext];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   115
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   116
val method_rec_ = wf_subcls1_ RS method_rec_lemma;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   117
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   118
Goal "method (tprg,Object) = map_of []";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   119
by (stac method_rec_ 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   120
by  Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   121
qed "method_Object";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   122
Addsimps [method_Object];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   123
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   124
Goal "method (tprg, Base) = map_of \
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   125
\ [((foo, [Class Base]), Base, (Class Base, foo_Base))]";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   126
br trans 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   127
br  method_rec_ 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   128
by  Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   129
qed "method_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   130
Addsimps [method_Base];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   131
10138
412a3ced6efd eliminated \<oplus>;
wenzelm
parents: 10042
diff changeset
   132
Goal "method (tprg, Ext) = (method (tprg, Base) ++ map_of \
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   133
\ [((foo, [Class Base]), Ext , (Class Ext, foo_Ext))])";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   134
br trans 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   135
br  method_rec_ 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   136
by  Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   137
qed "method_Ext";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   138
Addsimps [method_Ext];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   139
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   140
Goalw [wf_mdecl_def,wf_mhead_def,wf_java_mdecl_def,foo_Base_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   141
"wf_mdecl wf_java_mdecl tprg Base ((foo, [Class Base]), (Class Base, foo_Base))";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   142
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   143
qed "wf_foo_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   144
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   145
Goalw [wf_mdecl_def,wf_mhead_def,wf_java_mdecl_def,foo_Ext_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   146
"wf_mdecl wf_java_mdecl tprg Ext ((foo, [Class Base]), (Class Ext, foo_Ext))";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   147
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   148
br  ty_expr_ty_exprs_wt_stmt.Cast 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   149
by   (Simp_tac 2);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   150
br   cast.subcls 2;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   151
by   (rewtac field_def);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   152
by   Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   153
qed "wf_foo_Ext";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   154
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   155
Goalw [wf_cdecl_def, wf_fdecl_def, ObjectC_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   156
"wf_cdecl wf_java_mdecl tprg ObjectC";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   157
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   158
qed "wf_ObjectC";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   159
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   160
Goalw [wf_cdecl_def, wf_fdecl_def, BaseC_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   161
"wf_cdecl wf_java_mdecl tprg BaseC";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   162
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   163
by (fold_goals_tac [BaseC_def]);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   164
br (wf_foo_Base RS conjI) 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   165
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   166
qed "wf_BaseC";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   167
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   168
Goalw [wf_cdecl_def, wf_fdecl_def, ExtC_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   169
"wf_cdecl wf_java_mdecl tprg ExtC";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   170
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   171
by (fold_goals_tac [ExtC_def]);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   172
br (wf_foo_Ext RS conjI) 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   173
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   174
bd rtranclD 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   175
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   176
qed "wf_ExtC";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   177
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   178
Goalw [wf_prog_def,Let_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   179
"wf_prog wf_java_mdecl tprg";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   180
by(simp_tac (simpset() addsimps [wf_ObjectC,wf_BaseC,wf_ExtC,unique_classes])1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   181
qed "wf_tprg";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   182
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   183
Goalw [appl_methds_def] 
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   184
"appl_methds tprg Base (foo, [NT]) = \
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   185
\ {((Class Base, Class Base), [Class Base])}";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   186
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   187
by (subgoal_tac "tprg\\<turnstile>NT\\<preceq> Class Base" 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   188
by  (auto_tac (claset(), simpset() addsimps [map_of_Cons,foo_Base_def]));
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   189
qed "appl_methds_foo_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   190
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   191
Goalw [max_spec_def] "max_spec tprg Base (foo, [NT]) = \
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   192
\ {((Class Base, Class Base), [Class Base])}";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   193
by (auto_tac (claset(), simpset() addsimps [appl_methds_foo_Base]));
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   194
qed "max_spec_foo_Base";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   195
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   196
fun t thm = resolve_tac ty_expr_ty_exprs_wt_stmt.intrs 1 thm;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   197
Goalw [test_def] "(tprg, empty(e\\<mapsto>Class Base))\\<turnstile>\ 
10763
08e1610c1dcb added type annotation to Call
oheimb
parents: 10613
diff changeset
   198
\ Expr(e::=NewC Ext);; Expr({Base}LAcc e..foo({?pTs'}[Lit Null]))\\<surd>";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   199
(* ?pTs' = [Class Base] *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   200
by t;		(* ;; *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   201
by  t;		(* Expr *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   202
by  t;		(* LAss *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   203
by    t;	(* LAcc *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   204
by     (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   205
by    (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   206
by   t;	(* NewC *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   207
by   (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   208
by  (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   209
by t;	(* Expr *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   210
by t;	(* Call *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   211
by   t;	(* LAcc *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   212
by    (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   213
by   (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   214
by  t;	(* Cons *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   215
by   t;	(* Lit *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   216
by   (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   217
by  t;	(* Nil *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   218
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   219
br max_spec_foo_Base 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   220
qed "wt_test";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   221
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   222
fun e thm = resolve_tac (NewCI::eval_evals_exec.intrs) 1 thm;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   223
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   224
Delsplits[split_if];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   225
Addsimps[init_vars_def,c_hupd_def,cast_ok_def];
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   226
Goalw [test_def] 
10042
7164dc0d24d8 unsymbolized
kleing
parents: 9348
diff changeset
   227
" [|new_Addr (heap (snd s0)) = (a, None)|] ==> \
7164dc0d24d8 unsymbolized
kleing
parents: 9348
diff changeset
   228
\ tprg\\<turnstile>s0 -test-> ?s";
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   229
(* ?s = s3 *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   230
by e;		(* ;; *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   231
by  e;		(* Expr *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   232
by  e;		(* LAss *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   233
by   e;	(* NewC *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   234
by    (Force_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   235
by   (Force_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   236
by  (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   237
be thin_rl 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   238
by e;	(* Expr *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   239
by e;	(* Call *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   240
by       e;	(* LAcc *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   241
by      (Force_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   242
by     e;	(* Cons *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   243
by      e;	(* Lit *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   244
by     e;	(* Nil *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   245
by    (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   246
by   (force_tac (claset(), simpset() addsimps [foo_Ext_def]) 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   247
by  (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   248
by  e;	(* Expr *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   249
by  e;	(* FAss *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   250
by       e;(* Cast *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   251
by        e;(* LAcc *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   252
by       (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   253
by      (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   254
by     (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   255
by     e;(* XcptE *)
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   256
by    (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   257
by   (EVERY'[rtac (surjective_pairing RS sym RSN (2,trans)), stac Pair_eq,
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   258
             Force_tac] 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   259
by  (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   260
by (Simp_tac 1);
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents:
diff changeset
   261
by e;	(* XcptE *)
9348
f495dba0cb07 corrections (cast relation, Prog.ML -> Decl.ML)
oheimb
parents: 9346
diff changeset
   262
bind_thm ("exec_test", simplify (simpset()) (result()));