### Stylistic tweaks, which I hope are improvements :-)

parent bf041f4c01bf
 ... ... @@ -26,8 +26,7 @@ proof - have "small D" "D \ ON" using assms down elts_subset_ON [of \] by auto then have \_less_iff: "\\ \. \\ \ elts (tp D); \ \ elts (tp D)\ \ \ \ < \ \ \ \ < \" using ordermap_mono_less [of _ _ VWF D] bij_betw_apply [OF bij_\] VWF_iff_Ord_less \_cancel_right trans_VWF wf_VWF by (metis ON_imp_Ord Ord_linear2 less_V_def order.asym) by (metis ON_imp_Ord Ord_linear2 \_def inv_into_ordermap inv_ordermap_VWF_mono_le leD less_V_def) obtain \s where "List.set \s \ ON" and "\_dec \s" and tpD_eq: "tp D = \_sum \s" using Ord_ordertype \_nf_exists by blast \ \Cantor normal form of the ordertype\ have ord [simp]: "Ord (\s ! k)" "Ord (\_sum (take k \s))" if "k < length \s" for k ... ... @@ -225,7 +224,8 @@ qed text \The ``remark'' of Erdős and E. C. Milner, Canad. Math. Bull. Vol. 17 (2), 1974\ proposition indecomposable_imp_Ex_less_sets: assumes indec: "indecomposable \" and "\ > 1" and A: "tp A = \" "small A" "A \ ON" assumes indec: "indecomposable \" and "\ > 1" and A: "tp A = \" "small A" "A \ ON" and "x \ A" and A1: "tp A1 = \" "A1 \ A" obtains A2 where "tp A2 = \" "A2 \ A1" "{x} \ A2" proof - ... ... @@ -244,12 +244,15 @@ proof - then have "Ord \" using Ord_in_Ord \Ord \\ by blast define B where "B \ \ ` (elts (succ \))" have B: "{y \ A. ordermap A VWF y \ ordermap A VWF x} \ B" apply (clarsimp simp add: B_def \_def image_iff \_def) by (metis Ord_linear Ord_ordermap OrdmemD bij_betw_inv_into_left bij_om leD) show thesis proof have "small A1" by (meson \small A\ A1 smaller_than_small) then have "tp (A1 - B) \ tp A1" unfolding B_def by (auto intro!: ordertype_VWF_mono del: vsubsetI) by (simp add: ordertype_VWF_mono) moreover have "tp (A1 - B) \ \" proof - have "\ (\ \ tp B)" ... ... @@ -265,34 +268,20 @@ proof - using \ Limit_def \Limit \\ by blast with A sub show "\ u < \ v" if "u \ elts (succ \)" and "v \ elts (succ \)" and "u < v" for u v by (metis ON_imp_Ord Ord_not_le \A \ ON\ \small A\ \_def bij_\ bij_betw_apply inv_ordermap_VWF_mono_le leD subsetD that) by (metis ON_imp_Ord Ord_linear2 \_def inv_into_ordermap inv_ordermap_VWF_mono_le leD subset_iff that) show "\ \ \ tp (elts (succ \))" by (metis Limit_def Ord_succ \ \Limit \\ \Ord \\ mem_not_refl ordertype_eq_Ord vsubsetD) qed auto then show ?thesis using indecomposable_ordertype_ge [OF indec, of A1 B] \small A1\ A1 by (auto simp: B_def) using indecomposable_ordertype_ge [OF indec, of A1 B] \small A1\ A1 by (auto simp: B_def) qed ultimately show "tp (A1 - B) = \" using A1 by blast show "{x} \ (A1 - B)" proof (clarsimp simp: less_sets_def B_def simp del: elts_succ) fix y assume "y \ A1" and y: "y \ \ ` elts (succ \)" obtain "Ord x" "Ord y" using \A \ ON\ \x \ A\ \y \ A1\ A1 by auto have "y \ \ ` elts (succ \)" if "y \ elts (succ x)" proof - have "ordermap A VWF y \ elts (ZFC_in_HOL.succ (ordermap A VWF x))" using A1 by (metis insert_iff ordermap_mono subset_iff that wf_VWF OrdmemD VWF_iff_Ord_less \Ord x\ \Ord y\ \small A\ \y \ A1\ elts_succ) then show ?thesis using that A1 unfolding \_def by (metis \y \ A1\ \_def bij_betw_inv_into_left bij_om imageI subsetD) qed then show "x < y" by (meson Ord_linear2 Ord_mem_iff_lt Ord_succ \Ord x\ \Ord y\ y succ_le_iff) qed have "{x} \ (A - B)" using assms B apply (clarsimp simp: less_sets_def \_def subset_iff) by (metis Ord_not_le VWF_iff_Ord_less less_V_def order_refl ordermap_mono_less trans_VWF wf_VWF) with \A1 \ A\ show "{x} \ (A1 - B)" by auto qed auto qed ... ... @@ -1242,7 +1231,7 @@ qed theorem Erdos_Milner: assumes \: "\ \ elts \1" shows "partn_lst_VWF (\\(1 + \ * ord_of_nat n)) [ord_of_nat (2^n), \\(1+\)] 2" shows "partn_lst_VWF (\\(1 + \ * n)) [ord_of_nat (2^n), \\(1+\)] 2" proof (induction n) case 0 then show ?case ... ...
 ... ... @@ -1623,7 +1623,7 @@ proof (subst ordertype_eq_iff) assume "f p < f q" with \
assms have "(u, x) \ r \ u=x \ (v, y) \ s" apply (simp add: f_def) by (metis Ord_add Ord_add_mult_iff Ord_mem_iff_lt Ord_mult Ord_ordermap converse_ordermap_mono by (metis Ord_add Ord_add_mult_iff Ord_mem_iff_lt Ord_mult wf_Ord_ordermap converse_ordermap_mono ordermap_eq_iff ordermap_in_ordertype wf_Ord_ordertype) then show "(p,q) \ (r <*lex*> s)" by (simp add: \
) ... ... @@ -1642,7 +1642,7 @@ proof (subst ordertype_eq_iff) assume "p = (a, b)" and "q = (a', b')" then have "?\ * ordermap A r a + ordermap B s b < ?\ * ordermap A r a'" using ux assms \
by (metis Ord_mult Ord_ordermap OrdmemD Pair_inject add_mult_less ordermap_in_ordertype ordermap_mono wf_Ord_ordertype) by (metis Ord_mult wf_Ord_ordermap OrdmemD Pair_inject add_mult_less ordermap_in_ordertype ordermap_mono wf_Ord_ordertype) also have "\ \ ?\ * ordermap A r a' + ordermap B s b'" by simp finally show "?\ * ordermap A r a + ordermap B s b < ?\ * ordermap A r a' + ordermap B s b'" . ... ...
 ... ... @@ -909,7 +909,7 @@ lemma ordermap: "wf r \ ordermap A r a = set (ordermap A r ` {y unfolding ordermap_def by (auto simp: wfrec_fixpoint adm_wf_def) lemma Ord_ordermap [iff]: assumes "wf r" "trans r" shows "Ord (ordermap A r x)" lemma wf_Ord_ordermap [iff]: assumes "wf r" "trans r" shows "Ord (ordermap A r x)" using \wf r\ proof (induction x rule: wf_induct_rule) case (less u) ... ... @@ -942,7 +942,7 @@ proof - if "y = ordermap A r x" "x \ A" "small (ordermap A r ` A)" for x y using that by (auto simp: less_eq_V_def ordermap [OF \wf r\, of A x]) moreover have "z \ y" if "y \ ordermap A r ` A" "z \ elts y" for y z by (metis Ord_ordermap OrdmemD assms imageE order.strict_implies_order that) by (metis wf_Ord_ordermap OrdmemD assms imageE order.strict_implies_order that) ultimately show ?thesis unfolding ordertype_def Ord_def Transset_def by simp qed ... ... @@ -950,6 +950,9 @@ qed lemma Ord_ordertype [simp]: "Ord(ordertype A VWF)" using wf_Ord_ordertype by blast lemma Ord_ordermap [simp]: "Ord (ordermap A VWF x)" by blast lemma ordertype_singleton [simp]: assumes "wf r" shows "ordertype {x} r = 1" ... ... @@ -1075,7 +1078,7 @@ proof - case (less x) have "ordermap X r z < ordermap Y r x" if "z \ X" and zx: "(z,x) \ r" for z using less [OF zx] assms by (meson Ord_linear2 OrdmemD Ord_ordermap ordermap_mono in_mono leD that(1) vsubsetD zx) by (meson Ord_linear2 OrdmemD wf_Ord_ordermap ordermap_mono in_mono leD that(1) vsubsetD zx) then show ?case by (auto simp add: ordermap [of _ X x] \small X\ Ord_mem_iff_lt set_image_le_iff less_eq_V_def r) qed ... ... @@ -1211,7 +1214,7 @@ proof (rule ordertype_inc_eq) by (meson assms smaller_than_small) show "(ordermap A r x, ordermap A r y) \ VWF" if "x \ X" "y \ X" "(x, y) \ r" for x y by (meson that Ord_ordermap VWF_iff_Ord_less assms ordermap_mono_less subsetD) by (meson that wf_Ord_ordermap VWF_iff_Ord_less assms ordermap_mono_less subsetD) qed (use assms in auto) lemma ordertype_map_image: ... ... @@ -1268,7 +1271,7 @@ proof moreover have "ordermap A r x \ ordermap B s ` B" by (meson L \x \ A\ \small A\ in_mono ordermap_in_ordertype ordermap_surj vsubsetD) moreover have "ordermap A r x < ordermap A r y" using * r s by (metis (no_types) Ord_ordermap OrdmemD \(x, y) \ r\ \x \ A\ \small A\ ordermap_mono) using * r s by (metis (no_types) wf_Ord_ordermap OrdmemD \(x, y) \ r\ \x \ A\ \small A\ ordermap_mono) ultimately show "(f x, f y) \ s" using \ s by (metis assms(7) f_inv_into_f inv_into_into less_asym ordermap_mono_less total_on_def) qed ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!