analysis.calculus.deriv.inverse ⟷ Mathlib.Analysis.Calculus.Deriv.Inverse

This file has been ported!

Changes since the initial port

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.

Changes in mathlib3

(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)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -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"
 
Diff
@@ -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 /-
Diff
@@ -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"
 
Diff
@@ -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
 
Diff
@@ -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
+-/
 
Diff
@@ -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) :
Diff
@@ -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.
Diff
@@ -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
 

Changes in mathlib4

mathlib3
mathlib4
chore(*): remove empty lines between variable statements (#11418)

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)
Diff
@@ -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 : π•œ}
chore: scope open Classical (#11199)

We remove all but one open Classicals, 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.

Diff
@@ -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
 
chore: uneven spacing for ⟨ ⟩ (#10014)

This cleans up instances of

⟨ foo, bar⟩

and

⟨foo, bar ⟩

where spaces a on the inside one side, but not on the other side. Fixing this by removing the extra space.

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -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) :
chore: audit remaining uses of "local homeomorphism" in comments (#9245)

Almost all of them should speak about partial homeomorphisms instead. In two cases, I decided removing the "local" was clearer than adding "partial".

Follow-up to #8982; complements #9238.

Diff
@@ -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
chore: rename LocalHomeomorph to PartialHomeomorph (#8982)

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.

Zulip discussion

Diff
@@ -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 :=
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -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
 
chore: fix grammar 1/3 (#5001)

All of these are doc fixes

Diff
@@ -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
-
feat: port Analysis.Calculus.Deriv.Inverse (#4438)

Dependencies 10 + 679

680 files ported (98.6%)
301890 lines ported (98.3%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file