src/HOL/MicroJava/J/Eval.ML
author oheimb
Thu, 18 Jan 2001 20:23:51 +0100
changeset 10927 33e290a70445
parent 10613 78b1d6c3ee9c
child 10990 e7ffc23a05f6
permissions -rw-r--r--
splitted Loop rule
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     1
(*  Title:      HOL/MicroJava/J/Eval.ML
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     2
    ID:         $Id$
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     3
    Author:     David von Oheimb
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     4
    Copyright   1999 Technische Universitaet Muenchen
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     5
*)
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
     6
10042
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
     7
Goal "[|new_Addr (heap s) = (a,x); \
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
     8
\      s' = c_hupd (heap s(a\\<mapsto>(C,init_vars (fields (G,C))))) (x,s)|] ==> \
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
     9
\      G\\<turnstile>Norm s -NewC C\\<succ>Addr a-> s'";
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    10
by (Asm_simp_tac 1);
9346
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents: 8011
diff changeset
    11
br eval_evals_exec.NewC 1;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents: 8011
diff changeset
    12
by Auto_tac;
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents: 8011
diff changeset
    13
qed "NewCI";
297dcbf64526 re-structuring MicroJava; added Example; corrected := syntax; simplfied cast
oheimb
parents: 8011
diff changeset
    14
10042
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
    15
Goal "!!s s'. (G\\<turnstile>(x,s) -e \\<succ>  v -> (x',s') --> x'=None --> x=None) \\<and> \
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
    16
\             (G\\<turnstile>(x,s) -es[\\<succ>]vs-> (x',s') --> x'=None --> x=None) \\<and> \
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
    17
\             (G\\<turnstile>(x,s) -c       -> (x',s') --> x'=None --> x=None)";
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    18
by(split_all_tac 1);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    19
by(rtac eval_evals_exec.induct 1);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    20
by(rewtac c_hupd_def);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    21
by(ALLGOALS Asm_full_simp_tac);
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    22
qed "eval_evals_exec_no_xcpt";
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    23
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    24
Goal "G\\<turnstile>(x,s) -e\\<succ>v-> (None,s') ==> x=None";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    25
by (dtac (eval_evals_exec_no_xcpt RS conjunct1 RS mp) 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    26
by (Fast_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    27
qed "eval_no_xcpt";
8011
d14c4e9e9c8e *** empty log message ***
nipkow
parents:
diff changeset
    28
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    29
Goal "G\\<turnstile>(x,s) -e[\\<succ>]v-> (None,s') ==> x=None";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    30
by (dtac (eval_evals_exec_no_xcpt RS conjunct2 RS conjunct1 RS mp) 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    31
by (Fast_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    32
qed "evals_no_xcpt";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    33
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    34
Goal 
10042
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
    35
"!!s s'. (G\\<turnstile>(x,s) -e \\<succ>  v -> (x',s') --> x=Some xc --> x'=Some xc \\<and> s'=s) \\<and> \
7164dc0d24d8 unsymbolized
kleing
parents: 9346
diff changeset
    36
\        (G\\<turnstile>(x,s) -es[\\<succ>]vs-> (x',s') --> x=Some xc --> x'=Some xc \\<and> s'=s) \\<and> \
10613
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    37
\        (G\\<turnstile>(x,s) -c       -> (x',s') --> x=Some xc --> x'=Some xc \\<and> s'=s)";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    38
by (split_all_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    39
by (rtac eval_evals_exec.induct 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    40
by (rewtac c_hupd_def);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    41
by (ALLGOALS Asm_full_simp_tac);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    42
qed "eval_evals_exec_xcpt";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    43
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    44
Goal "G\\<turnstile>(Some xc,s) -e\\<succ>v-> (x',s') ==> x'=Some xc \\<and>  s'=s";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    45
by (dtac (eval_evals_exec_xcpt RS conjunct1 RS mp) 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    46
by (Fast_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    47
qed "eval_xcpt";  
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    48
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    49
Goal "G\\<turnstile>(Some xc,s) -s0-> (x',s') ==> x'=Some xc \\<and>  s'=s";
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    50
by (dtac (eval_evals_exec_xcpt RS conjunct2 RS conjunct2 RS mp) 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    51
by (Fast_tac 1);
78b1d6c3ee9c improved superclass entry for classes and definition status of is_class, class
oheimb
parents: 10042
diff changeset
    52
qed "exec_xcpt";