src/HOL/Multivariate_Analysis/Brouwer_Fixpoint.thy
changeset 56371 fb9ae0727548
parent 56273 def3bbe6f2a5
child 56541 0e3abadbef39
equal deleted inserted replaced
56370:7c717ba55a0b 56371:fb9ae0727548
   105   show thesis
   105   show thesis
   106     by (rule that [of 1]) (auto simp: True)
   106     by (rule that [of 1]) (auto simp: True)
   107 next
   107 next
   108   case False
   108   case False
   109   have "continuous_on s (norm \<circ> f)"
   109   have "continuous_on s (norm \<circ> f)"
   110     by (rule continuous_on_intros continuous_on_norm assms(2))+
   110     by (rule continuous_intros continuous_on_norm assms(2))+
   111   with False obtain x where x: "x \<in> s" "\<forall>y\<in>s. (norm \<circ> f) x \<le> (norm \<circ> f) y"
   111   with False obtain x where x: "x \<in> s" "\<forall>y\<in>s. (norm \<circ> f) x \<le> (norm \<circ> f) y"
   112     using continuous_attains_inf[OF assms(1), of "norm \<circ> f"]
   112     using continuous_attains_inf[OF assms(1), of "norm \<circ> f"]
   113     unfolding o_def
   113     unfolding o_def
   114     by auto
   114     by auto
   115   have "(norm \<circ> f) x > 0"
   115   have "(norm \<circ> f) x > 0"
  1458   then have *: "\<not> (\<exists>x\<in>unit_cube. f x - x = 0)"
  1458   then have *: "\<not> (\<exists>x\<in>unit_cube. f x - x = 0)"
  1459     by auto
  1459     by auto
  1460   obtain d where
  1460   obtain d where
  1461       d: "d > 0" "\<And>x. x \<in> unit_cube \<Longrightarrow> d \<le> norm (f x - x)"
  1461       d: "d > 0" "\<And>x. x \<in> unit_cube \<Longrightarrow> d \<le> norm (f x - x)"
  1462     apply (rule brouwer_compactness_lemma[OF compact_unit_cube _ *])
  1462     apply (rule brouwer_compactness_lemma[OF compact_unit_cube _ *])
  1463     apply (rule continuous_on_intros assms)+
  1463     apply (rule continuous_intros assms)+
  1464     apply blast
  1464     apply blast
  1465     done
  1465     done
  1466   have *: "\<forall>x. x \<in> unit_cube \<longrightarrow> f x \<in> unit_cube"
  1466   have *: "\<forall>x. x \<in> unit_cube \<longrightarrow> f x \<in> unit_cube"
  1467     "\<forall>x. x \<in> (unit_cube::'a set) \<longrightarrow> (\<forall>i\<in>Basis. True \<longrightarrow> 0 \<le> x \<bullet> i \<and> x \<bullet> i \<le> 1)"
  1467     "\<forall>x. x \<in> (unit_cube::'a set) \<longrightarrow> (\<forall>i\<in>Basis. True \<longrightarrow> 0 \<le> x \<bullet> i \<and> x \<bullet> i \<le> 1)"
  1468     using assms(2)[unfolded image_subset_iff Ball_def]
  1468     using assms(2)[unfolded image_subset_iff Ball_def]
  2021     apply (erule conjE)
  2021     apply (erule conjE)
  2022     apply (rule brouwer_ball[OF assms])
  2022     apply (rule brouwer_ball[OF assms])
  2023     apply assumption+
  2023     apply assumption+
  2024     apply (rule_tac x=x in bexI)
  2024     apply (rule_tac x=x in bexI)
  2025     apply assumption+
  2025     apply assumption+
  2026     apply (rule continuous_on_intros)+
  2026     apply (rule continuous_intros)+
  2027     unfolding frontier_cball subset_eq Ball_def image_iff
  2027     unfolding frontier_cball subset_eq Ball_def image_iff
  2028     apply rule
  2028     apply rule
  2029     apply rule
  2029     apply rule
  2030     apply (erule bexE)
  2030     apply (erule bexE)
  2031     unfolding dist_norm
  2031     unfolding dist_norm