equal
deleted
inserted
replaced
66 with as show "fst a \<in> fst ` set list" by (simp add: fst_a_x) |
66 with as show "fst a \<in> fst ` set list" by (simp add: fst_a_x) |
67 qed |
67 qed |
68 |
68 |
69 with fst_eq Cons |
69 with fst_eq Cons |
70 show "unique (map f (a # list)) = unique (a # list)" |
70 show "unique (map f (a # list)) = unique (a # list)" |
71 by (simp add: unique_def fst_set) |
71 by (simp add: unique_def fst_set image_compose) |
72 qed |
72 qed |
73 qed |
73 qed |
74 |
74 |
75 lemma comp_unique: "unique (comp G) = unique G" |
75 lemma comp_unique: "unique (comp G) = unique G" |
76 apply (simp add: comp_def) |
76 apply (simp add: comp_def) |
290 Option.map (\<lambda> (D,rT,b). (D, rT, mtd_mb (compMethod G D (S, rT, b)))) |
290 Option.map (\<lambda> (D,rT,b). (D, rT, mtd_mb (compMethod G D (S, rT, b)))) |
291 (method (G, C) S))" |
291 (method (G, C) S))" |
292 apply (simp add: method_def) |
292 apply (simp add: method_def) |
293 apply (frule wf_subcls1) |
293 apply (frule wf_subcls1) |
294 apply (simp add: comp_class_rec) |
294 apply (simp add: comp_class_rec) |
295 apply (simp add: map_compose [THEN sym] split_iter split_compose del: map_compose) |
295 apply (simp add: split_iter split_compose map_map[symmetric] del: map_map) |
296 apply (rule_tac R="%x y. ((x S) = (Option.map (\<lambda>(D, rT, b). |
296 apply (rule_tac R="%x y. ((x S) = (Option.map (\<lambda>(D, rT, b). |
297 (D, rT, snd (snd (compMethod G D (S, rT, b))))) (y S)))" |
297 (D, rT, snd (snd (compMethod G D (S, rT, b))))) (y S)))" |
298 in class_rec_relation) |
298 in class_rec_relation) |
299 apply assumption |
299 apply assumption |
300 |
300 |
309 defer (* inj \<dots> *) |
309 defer (* inj \<dots> *) |
310 apply (simp add: inj_on_def split_beta) |
310 apply (simp add: inj_on_def split_beta) |
311 apply (simp add: split_beta compMethod_def) |
311 apply (simp add: split_beta compMethod_def) |
312 apply (simp add: map_of_map [THEN sym]) |
312 apply (simp add: map_of_map [THEN sym]) |
313 apply (simp add: split_beta) |
313 apply (simp add: split_beta) |
314 apply (simp add: map_compose [THEN sym] Fun.comp_def split_beta) |
314 apply (simp add: Fun.comp_def split_beta) |
315 apply (subgoal_tac "(\<lambda>x\<Colon>(vname list \<times> fdecl list \<times> stmt \<times> expr) mdecl. |
315 apply (subgoal_tac "(\<lambda>x\<Colon>(vname list \<times> fdecl list \<times> stmt \<times> expr) mdecl. |
316 (fst x, Object, |
316 (fst x, Object, |
317 snd (compMethod G Object |
317 snd (compMethod G Object |
318 (inv (\<lambda>(s\<Colon>sig, m\<Colon>ty \<times> vname list \<times> fdecl list \<times> stmt \<times> expr). |
318 (inv (\<lambda>(s\<Colon>sig, m\<Colon>ty \<times> vname list \<times> fdecl list \<times> stmt \<times> expr). |
319 (s, Object, m)) |
319 (s, Object, m)) |