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); |