src/HOL/MicroJava/J/WellType.ML
changeset 8034 6fc37b5c5e98
parent 8011 d14c4e9e9c8e
child 8082 381716a86fcb
equal deleted inserted replaced
8033:325b8e754523 8034:6fc37b5c5e98
     4     Copyright   1999 Technische Universitaet Muenchen
     4     Copyright   1999 Technische Universitaet Muenchen
     5 *)
     5 *)
     6 
     6 
     7 Goalw [m_head_def]
     7 Goalw [m_head_def]
     8 "\\<lbrakk> m_head G T sig = Some (md,rT); wf_prog wtm G; G\\<turnstile>Class T''\\<preceq>RefT T\\<rbrakk> \\<Longrightarrow> \
     8 "\\<lbrakk> m_head G T sig = Some (md,rT); wf_prog wtm G; G\\<turnstile>Class T''\\<preceq>RefT T\\<rbrakk> \\<Longrightarrow> \
     9 \\\<exists>md' rT' b'. cmethd (G,T'') sig = Some (md',rT',b') \\<and>  G\\<turnstile>rT'\\<preceq>rT";
     9 \\\<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);
    10 by( forward_tac [widen_Class_RefT] 1);
    11 by( etac exE 1);
    11 by( etac exE 1);
    12 by( hyp_subst_tac 1);
    12 by( hyp_subst_tac 1);
    13 by( asm_full_simp_tac (simpset() delsimps [split_paired_Ex]) 1);
    13 by( asm_full_simp_tac (simpset() delsimps [split_paired_Ex]) 1);
    14 by( rewtac option_map_def);
    14 by( rewtac option_map_def);
    23 qed "widen_methd";
    23 qed "widen_methd";
    24 
    24 
    25 
    25 
    26 Goal
    26 Goal
    27 "\\<lbrakk>m_head G T sig = Some (md,rT); G\\<turnstile>Class T''\\<preceq>RefT T; wf_prog wtm G\\<rbrakk> \\<Longrightarrow> \
    27 "\\<lbrakk>m_head G T sig = Some (md,rT); G\\<turnstile>Class T''\\<preceq>RefT T; wf_prog wtm G\\<rbrakk> \\<Longrightarrow> \
    28 \ \\<exists>T' rT' b. cmethd (G,T'') sig = Some (T',rT',b) \\<and> \
    28 \ \\<exists>T' rT' b. method (G,T'') sig = Some (T',rT',b) \\<and> \
    29 \ G\\<turnstile>rT'\\<preceq>rT \\<and> G\\<turnstile>Class T''\\<preceq>Class T' \\<and> wf_mhead G sig rT' \\<and> wtm G T' (sig,rT',b)";
    29 \ G\\<turnstile>rT'\\<preceq>rT \\<and> G\\<turnstile>Class T''\\<preceq>Class T' \\<and> wf_mhead G sig rT' \\<and> wtm G T' (sig,rT',b)";
    30 by( dtac widen_methd 1);
    30 by( dtac widen_methd 1);
    31 by(   atac 1);
    31 by(   atac 1);
    32 by(  atac 1);
    32 by(  atac 1);
    33 by( Clarsimp_tac 1);
    33 by( Clarsimp_tac 1);
    34 by( dtac cmethd_wf_mdecl 1);
    34 by( dtac method_wf_mdecl 1);
    35 by(  atac 1);
    35 by(  atac 1);
    36 by( rewtac wf_mdecl_def);
    36 by( rewtac wf_mdecl_def);
    37 by Auto_tac;
    37 by Auto_tac;
    38 val Call_lemma = result();
    38 val Call_lemma = result();
    39 
    39