src/HOL/Multivariate_Analysis/Derivative.thy
changeset 56117 2dbf84ee3deb
parent 55970 6d123f0ae358
child 56133 304e37faf1ac
equal deleted inserted replaced
56116:bdc03e91684a 56117:2dbf84ee3deb
  1243 
  1243 
  1244 
  1244 
  1245 subsection {* Proving surjectivity via Brouwer fixpoint theorem *}
  1245 subsection {* Proving surjectivity via Brouwer fixpoint theorem *}
  1246 
  1246 
  1247 lemma brouwer_surjective:
  1247 lemma brouwer_surjective:
  1248   fixes f :: "'n::ordered_euclidean_space \<Rightarrow> 'n"
  1248   fixes f :: "'n::euclidean_space \<Rightarrow> 'n"
  1249   assumes "compact t"
  1249   assumes "compact t"
  1250     and "convex t"
  1250     and "convex t"
  1251     and "t \<noteq> {}"
  1251     and "t \<noteq> {}"
  1252     and "continuous_on t f"
  1252     and "continuous_on t f"
  1253     and "\<forall>x\<in>s. \<forall>y\<in>t. x + (y - f y) \<in> t"
  1253     and "\<forall>x\<in>s. \<forall>y\<in>t. x + (y - f y) \<in> t"
  1264     apply auto
  1264     apply auto
  1265     done
  1265     done
  1266 qed
  1266 qed
  1267 
  1267 
  1268 lemma brouwer_surjective_cball:
  1268 lemma brouwer_surjective_cball:
  1269   fixes f :: "'n::ordered_euclidean_space \<Rightarrow> 'n"
  1269   fixes f :: "'n::euclidean_space \<Rightarrow> 'n"
  1270   assumes "e > 0"
  1270   assumes "e > 0"
  1271     and "continuous_on (cball a e) f"
  1271     and "continuous_on (cball a e) f"
  1272     and "\<forall>x\<in>s. \<forall>y\<in>cball a e. x + (y - f y) \<in> cball a e"
  1272     and "\<forall>x\<in>s. \<forall>y\<in>cball a e. x + (y - f y) \<in> cball a e"
  1273     and "x \<in> s"
  1273     and "x \<in> s"
  1274   shows "\<exists>y\<in>cball a e. f y = x"
  1274   shows "\<exists>y\<in>cball a e. f y = x"
  1280   done
  1280   done
  1281 
  1281 
  1282 text {* See Sussmann: "Multidifferential calculus", Theorem 2.1.1 *}
  1282 text {* See Sussmann: "Multidifferential calculus", Theorem 2.1.1 *}
  1283 
  1283 
  1284 lemma sussmann_open_mapping:
  1284 lemma sussmann_open_mapping:
  1285   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::ordered_euclidean_space"
  1285   fixes f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
  1286   assumes "open s"
  1286   assumes "open s"
  1287     and "continuous_on s f"
  1287     and "continuous_on s f"
  1288     and "x \<in> s"
  1288     and "x \<in> s"
  1289     and "(f has_derivative f') (at x)"
  1289     and "(f has_derivative f') (at x)"
  1290     and "bounded_linear g'" "f' \<circ> g' = id"
  1290     and "bounded_linear g'" "f' \<circ> g' = id"
  1467     done
  1467     done
  1468   with h(1) show ?thesis by blast
  1468   with h(1) show ?thesis by blast
  1469 qed
  1469 qed
  1470 
  1470 
  1471 lemma has_derivative_inverse_strong:
  1471 lemma has_derivative_inverse_strong:
  1472   fixes f :: "'n::ordered_euclidean_space \<Rightarrow> 'n"
  1472   fixes f :: "'n::euclidean_space \<Rightarrow> 'n"
  1473   assumes "open s"
  1473   assumes "open s"
  1474     and "x \<in> s"
  1474     and "x \<in> s"
  1475     and "continuous_on s f"
  1475     and "continuous_on s f"
  1476     and "\<forall>x\<in>s. g (f x) = x"
  1476     and "\<forall>x\<in>s. g (f x) = x"
  1477     and "(f has_derivative f') (at x)"
  1477     and "(f has_derivative f') (at x)"
  1546 qed
  1546 qed
  1547 
  1547 
  1548 text {* A rewrite based on the other domain. *}
  1548 text {* A rewrite based on the other domain. *}
  1549 
  1549 
  1550 lemma has_derivative_inverse_strong_x:
  1550 lemma has_derivative_inverse_strong_x:
  1551   fixes f :: "'a::ordered_euclidean_space \<Rightarrow> 'a"
  1551   fixes f :: "'a::euclidean_space \<Rightarrow> 'a"
  1552   assumes "open s"
  1552   assumes "open s"
  1553     and "g y \<in> s"
  1553     and "g y \<in> s"
  1554     and "continuous_on s f"
  1554     and "continuous_on s f"
  1555     and "\<forall>x\<in>s. g (f x) = x"
  1555     and "\<forall>x\<in>s. g (f x) = x"
  1556     and "(f has_derivative f') (at (g y))"
  1556     and "(f has_derivative f') (at (g y))"
  1562   by simp
  1562   by simp
  1563 
  1563 
  1564 text {* On a region. *}
  1564 text {* On a region. *}
  1565 
  1565 
  1566 lemma has_derivative_inverse_on:
  1566 lemma has_derivative_inverse_on:
  1567   fixes f :: "'n::ordered_euclidean_space \<Rightarrow> 'n"
  1567   fixes f :: "'n::euclidean_space \<Rightarrow> 'n"
  1568   assumes "open s"
  1568   assumes "open s"
  1569     and "\<forall>x\<in>s. (f has_derivative f'(x)) (at x)"
  1569     and "\<forall>x\<in>s. (f has_derivative f'(x)) (at x)"
  1570     and "\<forall>x\<in>s. g (f x) = x"
  1570     and "\<forall>x\<in>s. g (f x) = x"
  1571     and "f' x \<circ> g' x = id"
  1571     and "f' x \<circ> g' x = id"
  1572     and "x \<in> s"
  1572     and "x \<in> s"