diff -r 9c7cbad50e04 -r f35cbb4da88a src/HOL/Finite_Set.thy --- a/src/HOL/Finite_Set.thy Mon Mar 20 15:01:59 2023 +0100 +++ b/src/HOL/Finite_Set.thy Mon Mar 20 15:02:17 2023 +0100 @@ -2578,22 +2578,15 @@ begin lemma finite_has_maximal: - "\ finite A; A \ {} \ \ \ m \ A. \ b \ A. m \ b \ m = b" -proof (induction rule: finite_psubset_induct) - case (psubset A) - from \A \ {}\ obtain a where "a \ A" by auto - let ?B = "{b \ A. a < b}" - show ?case - proof cases - assume "?B = {}" - hence "\ b \ A. a \ b \ a = b" using le_neq_trans by blast - thus ?thesis using \a \ A\ by blast - next - assume "?B \ {}" - have "a \ ?B" by auto - hence "?B \ A" using \a \ A\ by blast - from psubset.IH[OF this \?B \ {}\] show ?thesis using order.strict_trans2 by blast - qed + assumes "finite A" and "A \ {}" + shows "\ m \ A. \ b \ A. m \ b \ m = b" +proof - + obtain m where "m \ A" and m_is_max: "\x\A. x \ m \ \ m < x" + using Finite_Set.bex_max_element[OF \finite A\ \A \ {}\, of "(<)"] by auto + moreover have "\b \ A. m \ b \ m = b" + using m_is_max by (auto simp: le_less) + ultimately show ?thesis + by auto qed lemma finite_has_maximal2: @@ -2601,22 +2594,15 @@ using finite_has_maximal[of "{b \ A. a \ b}"] by fastforce lemma finite_has_minimal: - "\ finite A; A \ {} \ \ \ m \ A. \ b \ A. b \ m \ m = b" -proof (induction rule: finite_psubset_induct) - case (psubset A) - from \A \ {}\ obtain a where "a \ A" by auto - let ?B = "{b \ A. b < a}" - show ?case - proof cases - assume "?B = {}" - hence "\ b \ A. b \ a \ a = b" using le_neq_trans by blast - thus ?thesis using \a \ A\ by blast - next - assume "?B \ {}" - have "a \ ?B" by auto - hence "?B \ A" using \a \ A\ by blast - from psubset.IH[OF this \?B \ {}\] show ?thesis using order.strict_trans1 by blast - qed + assumes "finite A" and "A \ {}" + shows "\ m \ A. \ b \ A. b \ m \ m = b" +proof - + obtain m where "m \ A" and m_is_min: "\x\A. x \ m \ \ x < m" + using Finite_Set.bex_min_element[OF \finite A\ \A \ {}\, of "(<)"] by auto + moreover have "\b \ A. b \ m \ m = b" + using m_is_min by (auto simp: le_less) + ultimately show ?thesis + by auto qed lemma finite_has_minimal2: