src/HOL/MicroJava/J/WellType.ML
changeset 8185 59b62e8804b4
parent 8106 de9fae0cdfde
child 10042 7164dc0d24d8
equal deleted inserted replaced
8184:6b7ef9fc39da 8185:59b62e8804b4
     3     Author:     David von Oheimb
     3     Author:     David von Oheimb
     4     Copyright   1999 Technische Universitaet Muenchen
     4     Copyright   1999 Technische Universitaet Muenchen
     5 *)
     5 *)
     6 
     6 
     7 Goal
     7 Goal
     8 "\\<lbrakk> method (G,C) sig = Some (md,rT,b); wf_prog wf_mb G; G\\<turnstile>Class T''\\<preceq> Class C\\<rbrakk>\
     8 "\\<lbrakk> method (G,C) sig = Some (md,rT,b); wf_prog wf_mb G; G\\<turnstile>T''\\<preceq>C C\\<rbrakk>\
     9 \ \\<Longrightarrow> \\<exists>md' rT' b'. method (G,T'') sig = Some (md',rT',b') \\<and> G\\<turnstile>rT'\\<preceq>rT";
     9 \ \\<Longrightarrow> \\<exists>md' rT' b'. method (G,T'') sig = Some (md',rT',b') \\<and> G\\<turnstile>rT'\\<preceq>rT";
    10 by( forward_tac [widen_Class_RefT] 1);
       
    11 by( etac exE 1);
       
    12 by( asm_full_simp_tac (simpset() delsimps [split_paired_Ex]) 1);
       
    13 by( strip_tac1 1);
       
    14 by( dtac widen_Class_Class 1);
       
    15 by( dtac subcls_widen_methd 1);
    10 by( dtac subcls_widen_methd 1);
    16 by   Auto_tac;
    11 by   Auto_tac;
    17 qed "widen_methd";
    12 qed "widen_methd";
    18 
    13 
    19 
    14 
    20 Goal
    15 Goal
    21 "\\<lbrakk>method (G,C) sig = Some (md,rT,b); G\\<turnstile>Class T''\\<preceq> Class C; wf_prog wf_mb G\\<rbrakk> \\<Longrightarrow> \
    16 "\\<lbrakk>method (G,C) sig = Some (md,rT,b); G\\<turnstile>T''\\<preceq>C C; wf_prog wf_mb G\\<rbrakk> \\<Longrightarrow> \
    22 \ \\<exists>T' rT' b. method (G,T'') sig = Some (T',rT',b) \\<and> \
    17 \ \\<exists>T' rT' b. method (G,T'') sig = Some (T',rT',b) \\<and> \
    23 \ G\\<turnstile>rT'\\<preceq>rT \\<and> G\\<turnstile>Class T''\\<preceq> Class T' \\<and> wf_mhead G sig rT' \\<and> wf_mb G T' (sig,rT',b)";
    18 \ G\\<turnstile>rT'\\<preceq>rT \\<and> G\\<turnstile>T''\\<preceq>C T' \\<and> wf_mhead G sig rT' \\<and> wf_mb G T' (sig,rT',b)";
    24 by( datac widen_methd 2 1);
    19 by( datac widen_methd 2 1);
    25 by( Clarsimp_tac 1);
    20 by( Clarsimp_tac 1);
    26 by( dtac method_wf_mdecl 1);
    21 by( dtac method_wf_mdecl 1);
    27 by(  atac 1);
    22 by(  atac 1);
    28 by( rewtac wf_mdecl_def);
    23 by( rewtac wf_mdecl_def);