analysis.calculus.deriv.inverse
β·
Mathlib.Analysis.Calculus.Deriv.Inverse
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-/
import Analysis.Calculus.Deriv.Comp
-import Analysis.Calculus.Fderiv.Equiv
+import Analysis.Calculus.FDeriv.Equiv
#align_import analysis.calculus.deriv.inverse from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -79,18 +79,18 @@ theorem HasStrictDerivAt.of_local_left_inverse {f g : π β π} {f' a :
#align has_strict_deriv_at.of_local_left_inverse HasStrictDerivAt.of_local_left_inverse
-/
-#print LocalHomeomorph.hasStrictDerivAt_symm /-
+#print PartialHomeomorph.hasStrictDerivAt_symm /-
/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
nonzero derivative `f'` at `f.symm a` in the strict sense, then `f.symm` has the derivative `f'β»ΒΉ`
at `a` in the strict sense.
This is one of the easy parts of the inverse function theorem: it assumes that we already have
an inverse function. -/
-theorem LocalHomeomorph.hasStrictDerivAt_symm (f : LocalHomeomorph π π) {a f' : π}
+theorem PartialHomeomorph.hasStrictDerivAt_symm (f : PartialHomeomorph π π) {a f' : π}
(ha : a β f.target) (hf' : f' β 0) (htff' : HasStrictDerivAt f f' (f.symm a)) :
HasStrictDerivAt f.symm f'β»ΒΉ a :=
htff'.of_local_left_inverse (f.symm.ContinuousAt ha) hf' (f.eventually_right_inverse ha)
-#align local_homeomorph.has_strict_deriv_at_symm LocalHomeomorph.hasStrictDerivAt_symm
+#align local_homeomorph.has_strict_deriv_at_symm PartialHomeomorph.hasStrictDerivAt_symm
-/
#print HasDerivAt.of_local_left_inverse /-
@@ -106,16 +106,16 @@ theorem HasDerivAt.of_local_left_inverse {f g : π β π} {f' a : π} (hg
#align has_deriv_at.of_local_left_inverse HasDerivAt.of_local_left_inverse
-/
-#print LocalHomeomorph.hasDerivAt_symm /-
+#print PartialHomeomorph.hasDerivAt_symm /-
/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has an
nonzero derivative `f'` at `f.symm a`, then `f.symm` has the derivative `f'β»ΒΉ` at `a`.
This is one of the easy parts of the inverse function theorem: it assumes that we already have
an inverse function. -/
-theorem LocalHomeomorph.hasDerivAt_symm (f : LocalHomeomorph π π) {a f' : π} (ha : a β f.target)
+theorem PartialHomeomorph.hasDerivAt_symm (f : PartialHomeomorph π π) {a f' : π} (ha : a β f.target)
(hf' : f' β 0) (htff' : HasDerivAt f f' (f.symm a)) : HasDerivAt f.symm f'β»ΒΉ a :=
htff'.of_local_left_inverse (f.symm.ContinuousAt ha) hf' (f.eventually_right_inverse ha)
-#align local_homeomorph.has_deriv_at_symm LocalHomeomorph.hasDerivAt_symm
+#align local_homeomorph.has_deriv_at_symm PartialHomeomorph.hasDerivAt_symm
-/
#print HasDerivAt.eventually_ne /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-/
-import Mathbin.Analysis.Calculus.Deriv.Comp
-import Mathbin.Analysis.Calculus.Fderiv.Equiv
+import Analysis.Calculus.Deriv.Comp
+import Analysis.Calculus.Fderiv.Equiv
#align_import analysis.calculus.deriv.inverse from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module analysis.calculus.deriv.inverse
-! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Analysis.Calculus.Deriv.Comp
import Mathbin.Analysis.Calculus.Fderiv.Equiv
+#align_import analysis.calculus.deriv.inverse from "leanprover-community/mathlib"@"f60c6087a7275b72d5db3c5a1d0e19e35a429c0a"
+
/-!
# Inverse function theorem - the easy half
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -52,18 +52,23 @@ variable {s t : Set π}
variable {L Lβ Lβ : Filter π}
+#print HasStrictDerivAt.hasStrictFDerivAt_equiv /-
theorem HasStrictDerivAt.hasStrictFDerivAt_equiv {f : π β π} {f' x : π}
(hf : HasStrictDerivAt f f' x) (hf' : f' β 0) :
HasStrictFDerivAt f (ContinuousLinearEquiv.unitsEquivAut π (Units.mk0 f' hf') : π βL[π] π) x :=
hf
#align has_strict_deriv_at.has_strict_fderiv_at_equiv HasStrictDerivAt.hasStrictFDerivAt_equiv
+-/
+#print HasDerivAt.hasFDerivAt_equiv /-
theorem HasDerivAt.hasFDerivAt_equiv {f : π β π} {f' x : π} (hf : HasDerivAt f f' x)
(hf' : f' β 0) :
HasFDerivAt f (ContinuousLinearEquiv.unitsEquivAut π (Units.mk0 f' hf') : π βL[π] π) x :=
hf
#align has_deriv_at.has_fderiv_at_equiv HasDerivAt.hasFDerivAt_equiv
+-/
+#print HasStrictDerivAt.of_local_left_inverse /-
/-- If `f (g y) = y` for `y` in some neighborhood of `a`, `g` is continuous at `a`, and `f` has an
invertible derivative `f'` at `g a` in the strict sense, then `g` has the derivative `f'β»ΒΉ` at `a`
in the strict sense.
@@ -75,7 +80,9 @@ theorem HasStrictDerivAt.of_local_left_inverse {f g : π β π} {f' a :
HasStrictDerivAt g f'β»ΒΉ a :=
(hf.hasStrictFDerivAt_equiv hf').of_local_left_inverse hg hfg
#align has_strict_deriv_at.of_local_left_inverse HasStrictDerivAt.of_local_left_inverse
+-/
+#print LocalHomeomorph.hasStrictDerivAt_symm /-
/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
nonzero derivative `f'` at `f.symm a` in the strict sense, then `f.symm` has the derivative `f'β»ΒΉ`
at `a` in the strict sense.
@@ -87,7 +94,9 @@ theorem LocalHomeomorph.hasStrictDerivAt_symm (f : LocalHomeomorph π π) {a
HasStrictDerivAt f.symm f'β»ΒΉ a :=
htff'.of_local_left_inverse (f.symm.ContinuousAt ha) hf' (f.eventually_right_inverse ha)
#align local_homeomorph.has_strict_deriv_at_symm LocalHomeomorph.hasStrictDerivAt_symm
+-/
+#print HasDerivAt.of_local_left_inverse /-
/-- If `f (g y) = y` for `y` in some neighborhood of `a`, `g` is continuous at `a`, and `f` has an
invertible derivative `f'` at `g a`, then `g` has the derivative `f'β»ΒΉ` at `a`.
@@ -98,7 +107,9 @@ theorem HasDerivAt.of_local_left_inverse {f g : π β π} {f' a : π} (hg
HasDerivAt g f'β»ΒΉ a :=
(hf.hasFDerivAt_equiv hf').of_local_left_inverse hg hfg
#align has_deriv_at.of_local_left_inverse HasDerivAt.of_local_left_inverse
+-/
+#print LocalHomeomorph.hasDerivAt_symm /-
/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has an
nonzero derivative `f'` at `f.symm a`, then `f.symm` has the derivative `f'β»ΒΉ` at `a`.
@@ -108,19 +119,25 @@ theorem LocalHomeomorph.hasDerivAt_symm (f : LocalHomeomorph π π) {a f' :
(hf' : f' β 0) (htff' : HasDerivAt f f' (f.symm a)) : HasDerivAt f.symm f'β»ΒΉ a :=
htff'.of_local_left_inverse (f.symm.ContinuousAt ha) hf' (f.eventually_right_inverse ha)
#align local_homeomorph.has_deriv_at_symm LocalHomeomorph.hasDerivAt_symm
+-/
+#print HasDerivAt.eventually_ne /-
theorem HasDerivAt.eventually_ne (h : HasDerivAt f f' x) (hf' : f' β 0) :
βαΆ z in π[β ] x, f z β f x :=
(hasDerivAt_iff_hasFDerivAt.1 h).eventually_ne
β¨βf'ββ»ΒΉ, fun z => by field_simp [norm_smul, mt norm_eq_zero.1 hf']β©
#align has_deriv_at.eventually_ne HasDerivAt.eventually_ne
+-/
+#print HasDerivAt.tendsto_punctured_nhds /-
theorem HasDerivAt.tendsto_punctured_nhds (h : HasDerivAt f f' x) (hf' : f' β 0) :
Tendsto f (π[β ] x) (π[β ] f x) :=
tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within _ h.ContinuousAt.ContinuousWithinAt
(h.eventually_ne hf')
#align has_deriv_at.tendsto_punctured_nhds HasDerivAt.tendsto_punctured_nhds
+-/
+#print not_differentiableWithinAt_of_local_left_inverse_hasDerivWithinAt_zero /-
theorem not_differentiableWithinAt_of_local_left_inverse_hasDerivWithinAt_zero {f g : π β π} {a : π}
{s t : Set π} (ha : a β s) (hsu : UniqueDiffWithinAt π s a) (hf : HasDerivWithinAt f 0 t (g a))
(hst : MapsTo g s t) (hfg : f β g =αΆ [π[s] a] id) : Β¬DifferentiableWithinAt π g s a :=
@@ -129,7 +146,9 @@ theorem not_differentiableWithinAt_of_local_left_inverse_hasDerivWithinAt_zero {
have := (hf.comp a hg.has_deriv_within_at hst).congr_of_eventuallyEq_of_mem hfg.symm ha
simpa using hsu.eq_deriv _ this (hasDerivWithinAt_id _ _)
#align not_differentiable_within_at_of_local_left_inverse_has_deriv_within_at_zero not_differentiableWithinAt_of_local_left_inverse_hasDerivWithinAt_zero
+-/
+#print not_differentiableAt_of_local_left_inverse_hasDerivAt_zero /-
theorem not_differentiableAt_of_local_left_inverse_hasDerivAt_zero {f g : π β π} {a : π}
(hf : HasDerivAt f 0 (g a)) (hfg : f β g =αΆ [π a] id) : Β¬DifferentiableAt π g a :=
by
@@ -137,4 +156,5 @@ theorem not_differentiableAt_of_local_left_inverse_hasDerivAt_zero {f g : π
have := (hf.comp a hg.has_deriv_at).congr_of_eventuallyEq hfg.symm
simpa using this.unique (hasDerivAt_id a)
#align not_differentiable_at_of_local_left_inverse_has_deriv_at_zero not_differentiableAt_of_local_left_inverse_hasDerivAt_zero
+-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -112,7 +112,7 @@ theorem LocalHomeomorph.hasDerivAt_symm (f : LocalHomeomorph π π) {a f' :
theorem HasDerivAt.eventually_ne (h : HasDerivAt f f' x) (hf' : f' β 0) :
βαΆ z in π[β ] x, f z β f x :=
(hasDerivAt_iff_hasFDerivAt.1 h).eventually_ne
- β¨βf'ββ»ΒΉ, fun z => by field_simp [norm_smul, mt norm_eq_zero.1 hf'] β©
+ β¨βf'ββ»ΒΉ, fun z => by field_simp [norm_smul, mt norm_eq_zero.1 hf']β©
#align has_deriv_at.eventually_ne HasDerivAt.eventually_ne
theorem HasDerivAt.tendsto_punctured_nhds (h : HasDerivAt f f' x) (hf' : f' β 0) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
! This file was ported from Lean 3 source module analysis.calculus.deriv.inverse
-! leanprover-community/mathlib commit 3bce8d800a6f2b8f63fe1e588fd76a9ff4adcebe
+! leanprover-community/mathlib commit f60c6087a7275b72d5db3c5a1d0e19e35a429c0a
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.Analysis.Calculus.Fderiv.Equiv
/-!
# Inverse function theorem - the easy half
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file we prove that `g' (f x) = (f' x)β»ΒΉ` provided that `f` is strictly differentiable at
`x`, `f' x β 0`, and `g` is a local left inverse of `f` that is continuous at `f x`. This is the
easy half of the inverse function theorem: the harder half states that `g` exists.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -29,7 +29,7 @@ derivative, inverse function
universe u v w
-open Classical Topology BigOperators Filter ENNReal
+open scoped Classical Topology BigOperators Filter ENNReal
open Filter Asymptotics Set
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -32,19 +32,12 @@ open Topology BigOperators Filter ENNReal
open Filter Asymptotics Set
variable {π : Type u} [NontriviallyNormedField π]
-
variable {F : Type v} [NormedAddCommGroup F] [NormedSpace π F]
-
variable {E : Type w} [NormedAddCommGroup E] [NormedSpace π E]
-
variable {f fβ fβ g : π β F}
-
variable {f' fβ' fβ' g' : F}
-
variable {x : π}
-
variable {s t : Set π}
-
variable {L Lβ Lβ : Filter π}
theorem HasStrictDerivAt.hasStrictFDerivAt_equiv {f : π β π} {f' x : π}
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -26,7 +26,8 @@ derivative, inverse function
universe u v w
-open Classical Topology BigOperators Filter ENNReal
+open scoped Classical
+open Topology BigOperators Filter ENNReal
open Filter Asymptotics Set
@@ -106,7 +106,7 @@ theorem PartialHomeomorph.hasDerivAt_symm (f : PartialHomeomorph π π) {a f
theorem HasDerivAt.eventually_ne (h : HasDerivAt f f' x) (hf' : f' β 0) :
βαΆ z in π[β ] x, f z β f x :=
(hasDerivAt_iff_hasFDerivAt.1 h).eventually_ne
- β¨βf'ββ»ΒΉ, fun z => by field_simp [norm_smul, mt norm_eq_zero.1 hf'] β©
+ β¨βf'ββ»ΒΉ, fun z => by field_simp [norm_smul, mt norm_eq_zero.1 hf']β©
#align has_deriv_at.eventually_ne HasDerivAt.eventually_ne
theorem HasDerivAt.tendsto_punctured_nhds (h : HasDerivAt f f' x) (hf' : f' β 0) :
@@ -70,7 +70,7 @@ theorem HasStrictDerivAt.of_local_left_inverse {f g : π β π} {f' a :
(hf.hasStrictFDerivAt_equiv hf').of_local_left_inverse hg hfg
#align has_strict_deriv_at.of_local_left_inverse HasStrictDerivAt.of_local_left_inverse
-/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
+/-- If `f` is a partial homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
nonzero derivative `f'` at `f.symm a` in the strict sense, then `f.symm` has the derivative `f'β»ΒΉ`
at `a` in the strict sense.
@@ -93,7 +93,7 @@ theorem HasDerivAt.of_local_left_inverse {f g : π β π} {f' a : π} (hg
(hf.hasFDerivAt_equiv hf').of_local_left_inverse hg hfg
#align has_deriv_at.of_local_left_inverse HasDerivAt.of_local_left_inverse
-/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
+/-- If `f` is a partial homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
nonzero derivative `f'` at `f.symm a`, then `f.symm` has the derivative `f'β»ΒΉ` at `a`.
This is one of the easy parts of the inverse function theorem: it assumes that we already have
LocalHomeomorph
evokes a "local homeomorphism": this is not what this means.
Instead, this is a homeomorphism on an open set of the domain (extended to the whole space, by the junk value pattern). Hence, partial homeomorphism is more appropriate, and avoids confusion with IsLocallyHomeomorph
.
A future PR will rename LocalEquiv
to PartialEquiv
.
@@ -76,11 +76,11 @@ at `a` in the strict sense.
This is one of the easy parts of the inverse function theorem: it assumes that we already have
an inverse function. -/
-theorem LocalHomeomorph.hasStrictDerivAt_symm (f : LocalHomeomorph π π) {a f' : π}
+theorem PartialHomeomorph.hasStrictDerivAt_symm (f : PartialHomeomorph π π) {a f' : π}
(ha : a β f.target) (hf' : f' β 0) (htff' : HasStrictDerivAt f f' (f.symm a)) :
HasStrictDerivAt f.symm f'β»ΒΉ a :=
htff'.of_local_left_inverse (f.symm.continuousAt ha) hf' (f.eventually_right_inverse ha)
-#align local_homeomorph.has_strict_deriv_at_symm LocalHomeomorph.hasStrictDerivAt_symm
+#align local_homeomorph.has_strict_deriv_at_symm PartialHomeomorph.hasStrictDerivAt_symm
/-- If `f (g y) = y` for `y` in some neighborhood of `a`, `g` is continuous at `a`, and `f` has an
invertible derivative `f'` at `g a`, then `g` has the derivative `f'β»ΒΉ` at `a`.
@@ -98,10 +98,10 @@ nonzero derivative `f'` at `f.symm a`, then `f.symm` has the derivative `f'β»ΒΉ
This is one of the easy parts of the inverse function theorem: it assumes that we already have
an inverse function. -/
-theorem LocalHomeomorph.hasDerivAt_symm (f : LocalHomeomorph π π) {a f' : π} (ha : a β f.target)
+theorem PartialHomeomorph.hasDerivAt_symm (f : PartialHomeomorph π π) {a f' : π} (ha : a β f.target)
(hf' : f' β 0) (htff' : HasDerivAt f f' (f.symm a)) : HasDerivAt f.symm f'β»ΒΉ a :=
htff'.of_local_left_inverse (f.symm.continuousAt ha) hf' (f.eventually_right_inverse ha)
-#align local_homeomorph.has_deriv_at_symm LocalHomeomorph.hasDerivAt_symm
+#align local_homeomorph.has_deriv_at_symm PartialHomeomorph.hasDerivAt_symm
theorem HasDerivAt.eventually_ne (h : HasDerivAt f f' x) (hf' : f' β 0) :
βαΆ z in π[β ] x, f z β f x :=
@@ -2,15 +2,12 @@
Copyright (c) 2021 Yury Kudryashov. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module analysis.calculus.deriv.inverse
-! leanprover-community/mathlib commit 3bce8d800a6f2b8f63fe1e588fd76a9ff4adcebe
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Analysis.Calculus.Deriv.Comp
import Mathlib.Analysis.Calculus.FDeriv.Equiv
+#align_import analysis.calculus.deriv.inverse from "leanprover-community/mathlib"@"3bce8d800a6f2b8f63fe1e588fd76a9ff4adcebe"
+
/-!
# Inverse function theorem - the easy half
@@ -96,7 +96,7 @@ theorem HasDerivAt.of_local_left_inverse {f g : π β π} {f' a : π} (hg
(hf.hasFDerivAt_equiv hf').of_local_left_inverse hg hfg
#align has_deriv_at.of_local_left_inverse HasDerivAt.of_local_left_inverse
-/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has an
+/-- If `f` is a local homeomorphism defined on a neighbourhood of `f.symm a`, and `f` has a
nonzero derivative `f'` at `f.symm a`, then `f.symm` has the derivative `f'β»ΒΉ` at `a`.
This is one of the easy parts of the inverse function theorem: it assumes that we already have
@@ -132,4 +132,3 @@ theorem not_differentiableAt_of_local_left_inverse_hasDerivAt_zero {f g : π
have := (hf.comp a hg.hasDerivAt).congr_of_eventuallyEq hfg.symm
simpa using this.unique (hasDerivAt_id a)
#align not_differentiable_at_of_local_left_inverse_has_deriv_at_zero not_differentiableAt_of_local_left_inverse_hasDerivAt_zero
-
The unported dependencies are
algebra.order.module
init.core
algebra.order.monoid.cancel.defs
algebra.abs
algebra.group_power.lemmas
init.data.list.basic
algebra.order.monoid.cancel.basic
init.data.list.default
topology.subset_properties
init.logic
The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file