equal
deleted
inserted
replaced
284 "\<forall>l. g l < ack (kg, list_add l) ==> |
284 "\<forall>l. g l < ack (kg, list_add l) ==> |
285 fs \<in> lists(PRIMREC Int {f. \<exists>kf. \<forall>l. f l < ack(kf, list_add l)}) |
285 fs \<in> lists(PRIMREC Int {f. \<exists>kf. \<forall>l. f l < ack(kf, list_add l)}) |
286 ==> \<exists>k. \<forall>l. COMP g fs l < ack(k, list_add l)" |
286 ==> \<exists>k. \<forall>l. COMP g fs l < ack(k, list_add l)" |
287 apply (unfold COMP_def) |
287 apply (unfold COMP_def) |
288 apply (frule Int_lower1 [THEN lists_mono, THEN subsetD]) |
288 apply (frule Int_lower1 [THEN lists_mono, THEN subsetD]) |
289 apply (drule COMP_map_aux) |
289 --{*Now, if meson tolerated map, we could finish with |
290 apply (meson ack_less_mono2 ack_nest_bound less_trans) |
290 @{text "(drule COMP_map_aux, meson ack_less_mono2 ack_nest_bound less_trans).*} |
|
291 apply (erule COMP_map_aux [THEN exE]) |
|
292 apply (rule exI) |
|
293 apply (rule allI) |
|
294 apply (drule spec)+ |
|
295 apply (erule less_trans) |
|
296 apply (blast intro: ack_less_mono2 ack_nest_bound less_trans) |
291 done |
297 done |
292 |
298 |
293 |
299 |
294 text {* @{term PREC} case *} |
300 text {* @{term PREC} case *} |
295 |
301 |