equal
deleted
inserted
replaced
233 proof (rule liseq'_expand) |
233 proof (rule liseq'_expand) |
234 fix "is" |
234 fix "is" |
235 assume H: "liseq' xs j = card is" "is \<in> iseq xs (Suc j)" |
235 assume H: "liseq' xs j = card is" "is \<in> iseq xs (Suc j)" |
236 "finite is" "Max is = j" "is \<noteq> {}" |
236 "finite is" "Max is = j" "is \<noteq> {}" |
237 from H j have "card is + 1 = card (is \<union> {i})" |
237 from H j have "card is + 1 = card (is \<union> {i})" |
238 by (simp add: card_insert max_notin) |
238 by (simp add: card.insert_remove max_notin) |
239 moreover { |
239 moreover { |
240 from H j have "xs (Max is) \<le> xs i" by simp |
240 from H j have "xs (Max is) \<le> xs i" by simp |
241 moreover from \<open>j < i\<close> have "Suc j \<le> i" by simp |
241 moreover from \<open>j < i\<close> have "Suc j \<le> i" by simp |
242 with \<open>is \<in> iseq xs (Suc j)\<close> have "is \<in> iseq xs i" |
242 with \<open>is \<in> iseq xs (Suc j)\<close> have "is \<in> iseq xs i" |
243 by (rule iseq_mono) |
243 by (rule iseq_mono) |
365 apply (rule_tac xs=xs and i=j in liseq_expand) |
365 apply (rule_tac xs=xs and i=j in liseq_expand) |
366 apply simp |
366 apply simp |
367 apply (rule_tac xs=xs and i=i in liseq'_expand) |
367 apply (rule_tac xs=xs and i=i in liseq'_expand) |
368 apply simp |
368 apply simp |
369 apply (rule_tac js="isa \<union> {j}" in liseq_eq [symmetric]) |
369 apply (rule_tac js="isa \<union> {j}" in liseq_eq [symmetric]) |
370 apply (simp add: card_insert card_Diff_singleton_if max_notin) |
370 apply (simp add: card.insert_remove card_Diff_singleton_if max_notin) |
371 apply (rule iseq_insert) |
371 apply (rule iseq_insert) |
372 apply simp |
372 apply simp |
373 apply (erule iseq_mono) |
373 apply (erule iseq_mono) |
374 apply simp |
374 apply simp |
375 apply (case_tac "j = Max js'") |
375 apply (case_tac "j = Max js'") |
386 apply (simp add: less_eq_Suc_le [symmetric]) |
386 apply (simp add: less_eq_Suc_le [symmetric]) |
387 apply (rule Max_diff) |
387 apply (rule Max_diff) |
388 apply simp |
388 apply simp |
389 apply (rule le_diff_iff [THEN iffD1, of 1]) |
389 apply (rule le_diff_iff [THEN iffD1, of 1]) |
390 apply (simp add: card_0_eq [symmetric] del: card_0_eq) |
390 apply (simp add: card_0_eq [symmetric] del: card_0_eq) |
391 apply (simp add: card_insert) |
391 apply (simp add: card.insert_remove) |
392 apply (subgoal_tac "card (js' - {j}) = card js' - 1") |
392 apply (subgoal_tac "card (js' - {j}) = card js' - 1") |
393 apply (simp add: card_insert card_Diff_singleton_if max_notin) |
393 apply (simp add: card.insert_remove card_Diff_singleton_if max_notin) |
394 apply (frule_tac A=js' in Max_in) |
394 apply (frule_tac A=js' in Max_in) |
395 apply assumption |
395 apply assumption |
396 apply (simp add: card_Diff_singleton_if) |
396 apply (simp add: card_Diff_singleton_if) |
397 apply (drule_tac js=js' in iseq_butlast) |
397 apply (drule_tac js=js' in iseq_butlast) |
398 apply assumption |
398 apply assumption |
409 apply (rule_tac xs=xs and i=j in liseq_expand) |
409 apply (rule_tac xs=xs and i=j in liseq_expand) |
410 apply simp |
410 apply simp |
411 apply (rule_tac xs=xs and i=i in liseq'_expand) |
411 apply (rule_tac xs=xs and i=i in liseq'_expand) |
412 apply simp |
412 apply simp |
413 apply (rule_tac js="isa \<union> {j}" in liseq'_eq [symmetric]) |
413 apply (rule_tac js="isa \<union> {j}" in liseq'_eq [symmetric]) |
414 apply (simp add: card_insert card_Diff_singleton_if max_notin) |
414 apply (simp add: card.insert_remove card_Diff_singleton_if max_notin) |
415 apply (rule iseq_insert) |
415 apply (rule iseq_insert) |
416 apply simp |
416 apply simp |
417 apply (erule iseq_mono) |
417 apply (erule iseq_mono) |
418 apply simp |
418 apply simp |
419 apply simp |
419 apply simp |
432 apply (simp add: less_eq_Suc_le [symmetric]) |
432 apply (simp add: less_eq_Suc_le [symmetric]) |
433 apply (rule Max_diff) |
433 apply (rule Max_diff) |
434 apply simp |
434 apply simp |
435 apply (rule le_diff_iff [THEN iffD1, of 1]) |
435 apply (rule le_diff_iff [THEN iffD1, of 1]) |
436 apply (simp add: card_0_eq [symmetric] del: card_0_eq) |
436 apply (simp add: card_0_eq [symmetric] del: card_0_eq) |
437 apply (simp add: card_insert) |
437 apply (simp add: card.insert_remove) |
438 apply (subgoal_tac "card (js' - {j}) = card js' - 1") |
438 apply (subgoal_tac "card (js' - {j}) = card js' - 1") |
439 apply (simp add: card_insert card_Diff_singleton_if max_notin) |
439 apply (simp add: card.insert_remove card_Diff_singleton_if max_notin) |
440 apply (frule_tac A=js' in Max_in) |
440 apply (frule_tac A=js' in Max_in) |
441 apply assumption |
441 apply assumption |
442 apply (simp add: card_Diff_singleton_if) |
442 apply (simp add: card_Diff_singleton_if) |
443 done |
443 done |
444 |
444 |