src/HOL/Library/Ramsey.thy
changeset 81332 f94b30fa2b6c
parent 81142 6ad2c917dd2e
child 81871 e8ecc32d18c1
--- a/src/HOL/Library/Ramsey.thy	Sun Nov 03 21:12:50 2024 +0100
+++ b/src/HOL/Library/Ramsey.thy	Sun Nov 03 22:29:07 2024 +0100
@@ -5,13 +5,13 @@
 section \<open>Ramsey's Theorem\<close>
 
 theory Ramsey
-  imports Infinite_Set Equipollence FuncSet 
+  imports Infinite_Set Equipollence FuncSet
 begin
 
 subsection \<open>Preliminary definitions\<close>
 
 abbreviation strict_sorted :: "'a::linorder list \<Rightarrow> bool" where
-  "strict_sorted \<equiv> sorted_wrt (<)" 
+  "strict_sorted \<equiv> sorted_wrt (<)"
 
 subsubsection \<open>The $n$-element subsets of a set $A$\<close>
 
@@ -89,12 +89,13 @@
   shows "[A]\<^bsup>4\<^esup> = {U. \<exists>u x y z. U = {u,x,y,z} \<and> u \<in> A \<and> x \<in> A \<and> y \<in> A \<and> z \<in> A \<and> u < x \<and> x < y \<and> y < z}"
     (is "_ = Collect ?RHS")
 proof -
-  { fix U
-    assume "U \<in> [A]\<^bsup>4\<^esup>"
-    then obtain l where "strict_sorted l" "List.set l = U" "length l = 4" "U \<subseteq> A"
+  have "?RHS U" if "U \<in> [A]\<^bsup>4\<^esup>" for U
+  proof -
+    from that obtain l where "strict_sorted l" "List.set l = U" "length l = 4" "U \<subseteq> A"
       by (simp add: nsets_def) (metis finite_set_strict_sorted)
-    then have "?RHS U"
-      unfolding numeral_nat length_Suc_conv by auto blast }
+    then show ?thesis
+      unfolding numeral_nat length_Suc_conv by auto blast
+  qed
   moreover
   have "Collect ?RHS \<subseteq> [A]\<^bsup>4\<^esup>"
     apply (clarsimp simp add: nsets_def eval_nat_numeral)
@@ -109,13 +110,14 @@
   shows "[A]\<^bsup>5\<^esup> = {U. \<exists>u v x y z. U = {u,v,x,y,z} \<and> u \<in> A \<and> v \<in> A \<and> x \<in> A \<and> y \<in> A \<and> z \<in> A \<and> u < v \<and> v < x \<and> x < y \<and> y < z}"
     (is "_ = Collect ?RHS")
 proof -
-  { fix U
-  assume "U \<in> [A]\<^bsup>5\<^esup>"
-  then obtain l where "strict_sorted l" "List.set l = U" "length l = 5" "U \<subseteq> A"
-    apply (simp add: nsets_def)
-    by (metis finite_set_strict_sorted)
-  then have "?RHS U"
-    unfolding numeral_nat length_Suc_conv by auto blast }
+  have "?RHS U" if "U \<in> [A]\<^bsup>5\<^esup>" for U
+  proof -
+    from that obtain l where "strict_sorted l" "List.set l = U" "length l = 5" "U \<subseteq> A"
+      apply (simp add: nsets_def)
+      by (metis finite_set_strict_sorted)
+    then show ?thesis
+      unfolding numeral_nat length_Suc_conv by auto blast
+  qed
   moreover
   have "Collect ?RHS \<subseteq> [A]\<^bsup>5\<^esup>"
     apply (clarsimp simp add: nsets_def eval_nat_numeral)
@@ -338,7 +340,7 @@
   using partn_lst_def monochromatic_def assms by metis
 
 lemma partn_lst_less:
-  assumes M: "partn_lst \<beta> \<alpha> n" and eq: "length \<alpha>' = length \<alpha>" 
+  assumes M: "partn_lst \<beta> \<alpha> n" and eq: "length \<alpha>' = length \<alpha>"
     and le: "\<And>i. i < length \<alpha> \<Longrightarrow> \<alpha>'!i \<le> \<alpha>!i "
   shows "partn_lst \<beta> \<alpha>' n"
 proof (clarsimp simp: partn_lst_def)
@@ -385,7 +387,7 @@
 text \<open>The Erdős--Szekeres bound, essentially extracted from the proof\<close>
 fun ES :: "[nat,nat,nat] \<Rightarrow> nat"
   where "ES 0 k l = max k l"
-  |     "ES (Suc r) k l = 
+  |     "ES (Suc r) k l =
             (if r=0 then k+l-1
              else if k=0 \<or> l=0 then 1 else Suc (ES r (ES (Suc r) (k-1) l) (ES (Suc r) k (l-1))))"
 
@@ -685,7 +687,7 @@
       using Suc.prems
     proof (induct k \<equiv> "q1 + q2" arbitrary: q1 q2)
       case 0
-      with partn_lst_0 show ?case by auto 
+      with partn_lst_0 show ?case by auto
     next
       case (Suc k)
       consider "q1 = 0 \<or> q2 = 0" | "q1 \<noteq> 0" "q2 \<noteq> 0" by auto