equal
deleted
inserted
replaced
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" |