File: Mathlib/Geometry/Manifold/MFDeriv/Basic.lean

full_name: uniqueMDiffWithinAt_univ
code: theorem uniqueMDiffWithinAt_univ : UniqueMDiffWithinAt I univ x 
goal: UniqueMDiffWithinAt I Set.univ x

full_name: uniqueMDiffWithinAt_iff
code: theorem uniqueMDiffWithinAt_iff {s : Set M} {x : M} :
    UniqueMDiffWithinAt I s x ↔
      UniqueDiffWithinAt 𝕜 ((extChartAt I x).symm ⁻¹' s ∩ (extChartAt I x).target)
        ((extChartAt I x) x) 
goal: UniqueMDiffWithinAt I s x ↔
  UniqueDiffWithinAt 𝕜 (↑(extChartAt I x).symm ⁻¹' s ∩ (extChartAt I x).target) (↑(extChartAt I x) x)

full_name: UniqueMDiffWithinAt.mono_nhds
code: nonrec theorem UniqueMDiffWithinAt.mono_nhds {s t : Set M} {x : M} (hs : UniqueMDiffWithinAt I s x)
    (ht : 𝓝[s] x ≤ 𝓝[t] x) : UniqueMDiffWithinAt I t x 
goal: UniqueMDiffWithinAt I t x

full_name: UniqueMDiffWithinAt.mono_of_mem
code: theorem UniqueMDiffWithinAt.mono_of_mem {s t : Set M} {x : M} (hs : UniqueMDiffWithinAt I s x)
    (ht : t ∈ 𝓝[s] x) : UniqueMDiffWithinAt I t x 
goal: UniqueMDiffWithinAt I t x

full_name: UniqueMDiffWithinAt.mono
code: theorem UniqueMDiffWithinAt.mono (h : UniqueMDiffWithinAt I s x) (st : s ⊆ t) :
    UniqueMDiffWithinAt I t x 
goal: UniqueMDiffWithinAt I t x

full_name: UniqueMDiffWithinAt.inter'
code: theorem UniqueMDiffWithinAt.inter' (hs : UniqueMDiffWithinAt I s x) (ht : t ∈ 𝓝[s] x) :
    UniqueMDiffWithinAt I (s ∩ t) x 
goal: UniqueMDiffWithinAt I (s ∩ t) x

full_name: UniqueMDiffWithinAt.inter
code: theorem UniqueMDiffWithinAt.inter (hs : UniqueMDiffWithinAt I s x) (ht : t ∈ 𝓝 x) :
    UniqueMDiffWithinAt I (s ∩ t) x 
goal: UniqueMDiffWithinAt I (s ∩ t) x

full_name: IsOpen.uniqueMDiffWithinAt
code: theorem IsOpen.uniqueMDiffWithinAt (hs : IsOpen s) (xs : x ∈ s) : UniqueMDiffWithinAt I s x 
goal: UniqueMDiffWithinAt I s x

full_name: UniqueMDiffOn.inter
code: theorem UniqueMDiffOn.inter (hs : UniqueMDiffOn I s) (ht : IsOpen t) : UniqueMDiffOn I (s ∩ t) 
goal: UniqueMDiffOn I (s ∩ t)

full_name: IsOpen.uniqueMDiffOn
code: theorem IsOpen.uniqueMDiffOn (hs : IsOpen s) : UniqueMDiffOn I s 
goal: UniqueMDiffOn I s

full_name: uniqueMDiffOn_univ
code: theorem uniqueMDiffOn_univ : UniqueMDiffOn I (univ : Set M) 
goal: UniqueMDiffOn I Set.univ

full_name: UniqueMDiffWithinAt.eq
code: /-- `UniqueMDiffWithinAt` achieves its goal: it implies the uniqueness of the derivative. -/
nonrec theorem UniqueMDiffWithinAt.eq (U : UniqueMDiffWithinAt I s x)
    (h : HasMFDerivWithinAt I I' f s x f') (h₁ : HasMFDerivWithinAt I I' f s x f₁') : f' = f₁' 
goal: f' = f₁'

full_name: UniqueMDiffOn.eq
code: theorem UniqueMDiffOn.eq (U : UniqueMDiffOn I s) (hx : x ∈ s) (h : HasMFDerivWithinAt I I' f s x f')
    (h₁ : HasMFDerivWithinAt I I' f s x f₁') : f' = f₁' 
goal: f' = f₁'

full_name: UniqueMDiffWithinAt.prod
code: nonrec theorem UniqueMDiffWithinAt.prod {x : M} {y : M'} {s t} (hs : UniqueMDiffWithinAt I s x)
    (ht : UniqueMDiffWithinAt I' t y) : UniqueMDiffWithinAt (I.prod I') (s ×ˢ t) (x, y) 
goal: UniqueMDiffWithinAt (I.prod I') (s ×ˢ t) (x, y)

full_name: UniqueMDiffOn.prod
code: theorem UniqueMDiffOn.prod {s : Set M} {t : Set M'} (hs : UniqueMDiffOn I s)
    (ht : UniqueMDiffOn I' t) : UniqueMDiffOn (I.prod I') (s ×ˢ t) 
goal: UniqueMDiffOn (I.prod I') (s ×ˢ t)

full_name: mdifferentiableWithinAt_iff
code: theorem mdifferentiableWithinAt_iff {f : M → M'} {s : Set M} {x : M} :
    MDifferentiableWithinAt I I' f s x ↔
      ContinuousWithinAt f s x ∧
        DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' x f)
          ((extChartAt I x).target ∩ (extChartAt I x).symm ⁻¹' s) ((extChartAt I x) x) 
goal: MDifferentiableWithinAt I I' f s x ↔
  ContinuousWithinAt f s x ∧
    DifferentiableWithinAt 𝕜 (writtenInExtChartAt I I' x f) ((extChartAt I x).target ∩ ↑(extChartAt I x).symm ⁻¹' s)
      (↑(extChartAt I x) x)

full_name: mdifferentiableWithinAt_iff_of_mem_source
code: /-- One can reformulate differentiability within a set at a point as continuity within this set at
this point, and differentiability in any chart containing that point. -/
theorem mdifferentiableWithinAt_iff_of_mem_source {x' : M} {y : M'}
    (hx : x' ∈ (chartAt H x).source) (hy : f x' ∈ (chartAt H' y).source) :
    MDifferentiableWithinAt I I' f s x' ↔
      ContinuousWithinAt f s x' ∧
        DifferentiableWithinAt 𝕜 (extChartAt I' y ∘ f ∘ (extChartAt I x).symm)
          ((extChartAt I x).symm ⁻¹' s ∩ Set.range I) ((extChartAt I x) x') 
goal: MDifferentiableWithinAt I I' f s x' ↔
  ContinuousWithinAt f s x' ∧
    DifferentiableWithinAt 𝕜 (↑(extChartAt I' y) ∘ f ∘ ↑(extChartAt I x).symm)
      (↑(extChartAt I x).symm ⁻¹' s ∩ Set.range ↑I) (↑(extChartAt I x) x')

full_name: mfderivWithin_zero_of_not_mdifferentiableWithinAt
code: theorem mfderivWithin_zero_of_not_mdifferentiableWithinAt
    (h : ¬MDifferentiableWithinAt I I' f s x) : mfderivWithin I I' f s x = 0 
goal: mfderivWithin I I' f s x = 0

full_name: mfderiv_zero_of_not_mdifferentiableAt
code: theorem mfderiv_zero_of_not_mdifferentiableAt (h : ¬MDifferentiableAt I I' f x) :
    mfderiv I I' f x = 0 
goal: mfderiv I I' f x = 0

full_name: HasMFDerivWithinAt.mono
code: theorem HasMFDerivWithinAt.mono (h : HasMFDerivWithinAt I I' f t x f') (hst : s ⊆ t) :
    HasMFDerivWithinAt I I' f s x f' 
goal: HasMFDerivWithinAt I I' f s x f'

full_name: HasMFDerivAt.hasMFDerivWithinAt
code: theorem HasMFDerivAt.hasMFDerivWithinAt (h : HasMFDerivAt I I' f x f') :
    HasMFDerivWithinAt I I' f s x f' 
goal: HasMFDerivWithinAt I I' f s x f'

full_name: HasMFDerivWithinAt.mdifferentiableWithinAt
code: theorem HasMFDerivWithinAt.mdifferentiableWithinAt (h : HasMFDerivWithinAt I I' f s x f') :
    MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f s x

full_name: HasMFDerivAt.mdifferentiableAt
code: theorem HasMFDerivAt.mdifferentiableAt (h : HasMFDerivAt I I' f x f') :
    MDifferentiableAt I I' f x 
goal: MDifferentiableAt I I' f x

full_name: hasMFDerivWithinAt_univ
code: @[simp, mfld_simps]
theorem hasMFDerivWithinAt_univ :
    HasMFDerivWithinAt I I' f univ x f' ↔ HasMFDerivAt I I' f x f' 
goal: HasMFDerivWithinAt I I' f Set.univ x f' ↔ HasMFDerivAt I I' f x f'

full_name: hasMFDerivAt_unique
code: theorem hasMFDerivAt_unique (h₀ : HasMFDerivAt I I' f x f₀') (h₁ : HasMFDerivAt I I' f x f₁') :
    f₀' = f₁' 
goal: f₀' = f₁'

full_name: hasMFDerivWithinAt_inter'
code: theorem hasMFDerivWithinAt_inter' (h : t ∈ 𝓝[s] x) :
    HasMFDerivWithinAt I I' f (s ∩ t) x f' ↔ HasMFDerivWithinAt I I' f s x f' 
goal: HasMFDerivWithinAt I I' f (s ∩ t) x f' ↔ HasMFDerivWithinAt I I' f s x f'

full_name: hasMFDerivWithinAt_inter
code: theorem hasMFDerivWithinAt_inter (h : t ∈ 𝓝 x) :
    HasMFDerivWithinAt I I' f (s ∩ t) x f' ↔ HasMFDerivWithinAt I I' f s x f' 
goal: HasMFDerivWithinAt I I' f (s ∩ t) x f' ↔ HasMFDerivWithinAt I I' f s x f'

full_name: HasMFDerivWithinAt.union
code: theorem HasMFDerivWithinAt.union (hs : HasMFDerivWithinAt I I' f s x f')
    (ht : HasMFDerivWithinAt I I' f t x f') : HasMFDerivWithinAt I I' f (s ∪ t) x f' 
goal: HasMFDerivWithinAt I I' f (s ∪ t) x f'

full_name: HasMFDerivWithinAt.mono_of_mem
code: theorem HasMFDerivWithinAt.mono_of_mem (h : HasMFDerivWithinAt I I' f s x f') (ht : s ∈ 𝓝[t] x) :
    HasMFDerivWithinAt I I' f t x f' 
goal: HasMFDerivWithinAt I I' f t x f'

full_name: HasMFDerivWithinAt.hasMFDerivAt
code: theorem HasMFDerivWithinAt.hasMFDerivAt (h : HasMFDerivWithinAt I I' f s x f') (hs : s ∈ 𝓝 x) :
    HasMFDerivAt I I' f x f' 
goal: HasMFDerivAt I I' f x f'

full_name: MDifferentiableWithinAt.hasMFDerivWithinAt
code: theorem MDifferentiableWithinAt.hasMFDerivWithinAt (h : MDifferentiableWithinAt I I' f s x) :
    HasMFDerivWithinAt I I' f s x (mfderivWithin I I' f s x) 
goal: HasMFDerivWithinAt I I' f s x (mfderivWithin I I' f s x)

full_name: MDifferentiableWithinAt.mfderivWithin
code: protected theorem MDifferentiableWithinAt.mfderivWithin (h : MDifferentiableWithinAt I I' f s x) :
    mfderivWithin I I' f s x =
      fderivWithin 𝕜 (writtenInExtChartAt I I' x f : _) ((extChartAt I x).symm ⁻¹' s ∩ range I)
        ((extChartAt I x) x) 
goal: mfderivWithin I I' f s x =
  fderivWithin 𝕜 (writtenInExtChartAt I I' x f) (↑(extChartAt I x).symm ⁻¹' s ∩ Set.range ↑I) (↑(extChartAt I x) x)

full_name: MDifferentiableAt.hasMFDerivAt
code: theorem MDifferentiableAt.hasMFDerivAt (h : MDifferentiableAt I I' f x) :
    HasMFDerivAt I I' f x (mfderiv I I' f x) 
goal: HasMFDerivAt I I' f x (mfderiv I I' f x)

full_name: MDifferentiableAt.mfderiv
code: protected theorem MDifferentiableAt.mfderiv (h : MDifferentiableAt I I' f x) :
    mfderiv I I' f x =
      fderivWithin 𝕜 (writtenInExtChartAt I I' x f : _) (range I) ((extChartAt I x) x) 
goal: mfderiv I I' f x = fderivWithin 𝕜 (writtenInExtChartAt I I' x f) (Set.range ↑I) (↑(extChartAt I x) x)

full_name: HasMFDerivAt.mfderiv
code: protected theorem HasMFDerivAt.mfderiv (h : HasMFDerivAt I I' f x f') : mfderiv I I' f x = f' 
goal: mfderiv I I' f x = f'

full_name: HasMFDerivWithinAt.mfderivWithin
code: theorem HasMFDerivWithinAt.mfderivWithin (h : HasMFDerivWithinAt I I' f s x f')
    (hxs : UniqueMDiffWithinAt I s x) : mfderivWithin I I' f s x = f' 
goal: mfderivWithin I I' f s x = f'

full_name: MDifferentiable.mfderivWithin
code: theorem MDifferentiable.mfderivWithin (h : MDifferentiableAt I I' f x)
    (hxs : UniqueMDiffWithinAt I s x) : mfderivWithin I I' f s x = mfderiv I I' f x 
goal: mfderivWithin I I' f s x = mfderiv I I' f x

full_name: mfderivWithin_subset
code: theorem mfderivWithin_subset (st : s ⊆ t) (hs : UniqueMDiffWithinAt I s x)
    (h : MDifferentiableWithinAt I I' f t x) :
    mfderivWithin I I' f s x = mfderivWithin I I' f t x 
goal: mfderivWithin I I' f s x = mfderivWithin I I' f t x

full_name: MDifferentiableWithinAt.mono
code: theorem MDifferentiableWithinAt.mono (hst : s ⊆ t) (h : MDifferentiableWithinAt I I' f t x) :
    MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f s x

full_name: mdifferentiableWithinAt_univ
code: theorem mdifferentiableWithinAt_univ :
    MDifferentiableWithinAt I I' f univ x ↔ MDifferentiableAt I I' f x 
goal: MDifferentiableWithinAt I I' f Set.univ x ↔ MDifferentiableAt I I' f x

full_name: mdifferentiableWithinAt_inter
code: theorem mdifferentiableWithinAt_inter (ht : t ∈ 𝓝 x) :
    MDifferentiableWithinAt I I' f (s ∩ t) x ↔ MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f (s ∩ t) x ↔ MDifferentiableWithinAt I I' f s x

full_name: mdifferentiableWithinAt_inter'
code: theorem mdifferentiableWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
    MDifferentiableWithinAt I I' f (s ∩ t) x ↔ MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f (s ∩ t) x ↔ MDifferentiableWithinAt I I' f s x

full_name: MDifferentiableAt.mdifferentiableWithinAt
code: theorem MDifferentiableAt.mdifferentiableWithinAt (h : MDifferentiableAt I I' f x) :
    MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f s x

full_name: MDifferentiableWithinAt.mdifferentiableAt
code: theorem MDifferentiableWithinAt.mdifferentiableAt (h : MDifferentiableWithinAt I I' f s x)
    (hs : s ∈ 𝓝 x) : MDifferentiableAt I I' f x 
goal: MDifferentiableAt I I' f x

full_name: MDifferentiableOn.mdifferentiableAt
code: theorem MDifferentiableOn.mdifferentiableAt (h : MDifferentiableOn I I' f s) (hx : s ∈ 𝓝 x) :
    MDifferentiableAt I I' f x 
goal: MDifferentiableAt I I' f x

full_name: MDifferentiableOn.mono
code: theorem MDifferentiableOn.mono (h : MDifferentiableOn I I' f t) (st : s ⊆ t) :
    MDifferentiableOn I I' f s 
goal: MDifferentiableOn I I' f s

full_name: mdifferentiableOn_univ
code: theorem mdifferentiableOn_univ : MDifferentiableOn I I' f univ ↔ MDifferentiable I I' f 
goal: MDifferentiableOn I I' f Set.univ ↔ MDifferentiable I I' f

full_name: MDifferentiable.mdifferentiableOn
code: theorem MDifferentiable.mdifferentiableOn (h : MDifferentiable I I' f) :
    MDifferentiableOn I I' f s 
goal: MDifferentiableOn I I' f s

full_name: mdifferentiableOn_of_locally_mdifferentiableOn
code: theorem mdifferentiableOn_of_locally_mdifferentiableOn
    (h : ∀ x ∈ s, ∃ u, IsOpen u ∧ x ∈ u ∧ MDifferentiableOn I I' f (s ∩ u)) :
    MDifferentiableOn I I' f s 
goal: MDifferentiableOn I I' f s

full_name: mfderivWithin_univ
code: @[simp, mfld_simps]
theorem mfderivWithin_univ : mfderivWithin I I' f univ = mfderiv I I' f 
goal: mfderivWithin I I' f Set.univ = mfderiv I I' f

full_name: mfderivWithin_inter
code: theorem mfderivWithin_inter (ht : t ∈ 𝓝 x) :
    mfderivWithin I I' f (s ∩ t) x = mfderivWithin I I' f s x 
goal: mfderivWithin I I' f (s ∩ t) x = mfderivWithin I I' f s x

full_name: mfderivWithin_of_mem_nhds
code: theorem mfderivWithin_of_mem_nhds (h : s ∈ 𝓝 x) : mfderivWithin I I' f s x = mfderiv I I' f x 
goal: mfderivWithin I I' f s x = mfderiv I I' f x

full_name: mfderivWithin_of_isOpen
code: lemma mfderivWithin_of_isOpen (hs : IsOpen s) (hx : x ∈ s) :
    mfderivWithin I I' f s x = mfderiv I I' f x 
goal: mfderivWithin I I' f s x = mfderiv I I' f x

full_name: mfderivWithin_eq_mfderiv
code: theorem mfderivWithin_eq_mfderiv (hs : UniqueMDiffWithinAt I s x) (h : MDifferentiableAt I I' f x) :
    mfderivWithin I I' f s x = mfderiv I I' f x 
goal: mfderivWithin I I' f s x = mfderiv I I' f x

full_name: mdifferentiableAt_iff_of_mem_source
code: theorem mdifferentiableAt_iff_of_mem_source {x' : M} {y : M'}
    (hx : x' ∈ (chartAt H x).source) (hy : f x' ∈ (chartAt H' y).source) :
    MDifferentiableAt I I' f x' ↔
      ContinuousAt f x' ∧
        DifferentiableWithinAt 𝕜 (extChartAt I' y ∘ f ∘ (extChartAt I x).symm) (Set.range I)
          ((extChartAt I x) x') 
goal: MDifferentiableAt I I' f x' ↔
  ContinuousAt f x' ∧
    DifferentiableWithinAt 𝕜 (↑(extChartAt I' y) ∘ f ∘ ↑(extChartAt I x).symm) (Set.range ↑I) (↑(extChartAt I x) x')

full_name: ContMDiffWithinAt.mdifferentiableWithinAt
code: theorem ContMDiffWithinAt.mdifferentiableWithinAt (hf : ContMDiffWithinAt I I' n f s x)
    (hn : 1 ≤ n) : MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f s x

full_name: ContMDiffAt.mdifferentiableAt
code: theorem ContMDiffAt.mdifferentiableAt (hf : ContMDiffAt I I' n f x) (hn : 1 ≤ n) :
    MDifferentiableAt I I' f x 
goal: MDifferentiableAt I I' f x

full_name: ContMDiffOn.mdifferentiableOn
code: theorem ContMDiffOn.mdifferentiableOn (hf : ContMDiffOn I I' n f s) (hn : 1 ≤ n) :
    MDifferentiableOn I I' f s 
goal: MDifferentiableOn I I' f s

full_name: ContMDiff.mdifferentiable
code: theorem ContMDiff.mdifferentiable (hf : ContMDiff I I' n f) (hn : 1 ≤ n) : MDifferentiable I I' f 
goal: MDifferentiable I I' f

full_name: SmoothWithinAt.mdifferentiableWithinAt
code: nonrec theorem SmoothWithinAt.mdifferentiableWithinAt (hf : SmoothWithinAt I I' f s x) :
    MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f s x

full_name: SmoothAt.mdifferentiableAt
code: nonrec theorem SmoothAt.mdifferentiableAt (hf : SmoothAt I I' f x) : MDifferentiableAt I I' f x 
goal: MDifferentiableAt I I' f x

full_name: SmoothOn.mdifferentiableOn
code: nonrec theorem SmoothOn.mdifferentiableOn (hf : SmoothOn I I' f s) : MDifferentiableOn I I' f s 
goal: MDifferentiableOn I I' f s

full_name: Smooth.mdifferentiable
code: theorem Smooth.mdifferentiable (hf : Smooth I I' f) : MDifferentiable I I' f 
goal: MDifferentiable I I' f

full_name: Smooth.mdifferentiableAt
code: theorem Smooth.mdifferentiableAt (hf : Smooth I I' f) : MDifferentiableAt I I' f x 
goal: MDifferentiableAt I I' f x

full_name: Smooth.mdifferentiableWithinAt
code: theorem Smooth.mdifferentiableWithinAt (hf : Smooth I I' f) : MDifferentiableWithinAt I I' f s x 
goal: MDifferentiableWithinAt I I' f s x

full_name: HasMFDerivWithinAt.continuousWithinAt
code: theorem HasMFDerivWithinAt.continuousWithinAt (h : HasMFDerivWithinAt I I' f s x f') :
    ContinuousWithinAt f s x 
goal: ContinuousWithinAt f s x

full_name: HasMFDerivAt.continuousAt
code: theorem HasMFDerivAt.continuousAt (h : HasMFDerivAt I I' f x f') : ContinuousAt f x 
goal: ContinuousAt f x

full_name: MDifferentiableOn.continuousOn
code: theorem MDifferentiableOn.continuousOn (h : MDifferentiableOn I I' f s) : ContinuousOn f s 
goal: ContinuousOn f s

full_name: MDifferentiable.continuous
code: theorem MDifferentiable.continuous (h : MDifferentiable I I' f) : Continuous f 
goal: Continuous f

full_name: tangentMapWithin_subset
code: theorem tangentMapWithin_subset {p : TangentBundle I M} (st : s ⊆ t)
    (hs : UniqueMDiffWithinAt I s p.1) (h : MDifferentiableWithinAt I I' f t p.1) :
    tangentMapWithin I I' f s p = tangentMapWithin I I' f t p 
goal: tangentMapWithin I I' f s p = tangentMapWithin I I' f t p

full_name: tangentMapWithin_univ
code: theorem tangentMapWithin_univ : tangentMapWithin I I' f univ = tangentMap I I' f 
goal: tangentMapWithin I I' f Set.univ = tangentMap I I' f

full_name: tangentMapWithin_eq_tangentMap
code: theorem tangentMapWithin_eq_tangentMap {p : TangentBundle I M} (hs : UniqueMDiffWithinAt I s p.1)
    (h : MDifferentiableAt I I' f p.1) : tangentMapWithin I I' f s p = tangentMap I I' f p 
goal: tangentMapWithin I I' f s p = tangentMap I I' f p

full_name: tangentMapWithin_proj
code: @[simp, mfld_simps]
theorem tangentMapWithin_proj {p : TangentBundle I M} :
    (tangentMapWithin I I' f s p).proj = f p.proj 
goal: (tangentMapWithin I I' f s p).proj = f p.proj

full_name: tangentMap_proj
code: @[simp, mfld_simps]
theorem tangentMap_proj {p : TangentBundle I M} : (tangentMap I I' f p).proj = f p.proj 
goal: (tangentMap I I' f p).proj = f p.proj

full_name: MDifferentiableWithinAt.prod_mk
code: theorem MDifferentiableWithinAt.prod_mk {f : M → M'} {g : M → M''}
    (hf : MDifferentiableWithinAt I I' f s x) (hg : MDifferentiableWithinAt I I'' g s x) :
    MDifferentiableWithinAt I (I'.prod I'') (fun x => (f x, g x)) s x 
goal: MDifferentiableWithinAt I (I'.prod I'') (fun x => (f x, g x)) s x

full_name: MDifferentiableAt.prod_mk
code: theorem MDifferentiableAt.prod_mk {f : M → M'} {g : M → M''} (hf : MDifferentiableAt I I' f x)
    (hg : MDifferentiableAt I I'' g x) :
    MDifferentiableAt I (I'.prod I'') (fun x => (f x, g x)) x 
goal: MDifferentiableAt I (I'.prod I'') (fun x => (f x, g x)) x

full_name: MDifferentiableOn.prod_mk
code: theorem MDifferentiableOn.prod_mk {f : M → M'} {g : M → M''} (hf : MDifferentiableOn I I' f s)
    (hg : MDifferentiableOn I I'' g s) :
    MDifferentiableOn I (I'.prod I'') (fun x => (f x, g x)) s 
goal: MDifferentiableOn I (I'.prod I'') (fun x => (f x, g x)) s

full_name: MDifferentiable.prod_mk
code: theorem MDifferentiable.prod_mk {f : M → M'} {g : M → M''} (hf : MDifferentiable I I' f)
    (hg : MDifferentiable I I'' g) : MDifferentiable I (I'.prod I'') fun x => (f x, g x) 
goal: MDifferentiable I (I'.prod I'') fun x => (f x, g x)

full_name: MDifferentiableWithinAt.prod_mk_space
code: theorem MDifferentiableWithinAt.prod_mk_space {f : M → E'} {g : M → E''}
    (hf : MDifferentiableWithinAt I 𝓘(𝕜, E') f s x)
    (hg : MDifferentiableWithinAt I 𝓘(𝕜, E'') g s x) :
    MDifferentiableWithinAt I 𝓘(𝕜, E' × E'') (fun x => (f x, g x)) s x 
goal: MDifferentiableWithinAt I 𝓘(𝕜, E' × E'') (fun x => (f x, g x)) s x

full_name: MDifferentiableAt.prod_mk_space
code: theorem MDifferentiableAt.prod_mk_space {f : M → E'} {g : M → E''}
    (hf : MDifferentiableAt I 𝓘(𝕜, E') f x) (hg : MDifferentiableAt I 𝓘(𝕜, E'') g x) :
    MDifferentiableAt I 𝓘(𝕜, E' × E'') (fun x => (f x, g x)) x 
goal: MDifferentiableAt I 𝓘(𝕜, E' × E'') (fun x => (f x, g x)) x

full_name: MDifferentiableOn.prod_mk_space
code: theorem MDifferentiableOn.prod_mk_space {f : M → E'} {g : M → E''}
    (hf : MDifferentiableOn I 𝓘(𝕜, E') f s) (hg : MDifferentiableOn I 𝓘(𝕜, E'') g s) :
    MDifferentiableOn I 𝓘(𝕜, E' × E'') (fun x => (f x, g x)) s 
goal: MDifferentiableOn I 𝓘(𝕜, E' × E'') (fun x => (f x, g x)) s

full_name: MDifferentiable.prod_mk_space
code: theorem MDifferentiable.prod_mk_space {f : M → E'} {g : M → E''} (hf : MDifferentiable I 𝓘(𝕜, E') f)
    (hg : MDifferentiable I 𝓘(𝕜, E'') g) : MDifferentiable I 𝓘(𝕜, E' × E'') fun x => (f x, g x) 
goal: MDifferentiable I 𝓘(𝕜, E' × E'') fun x => (f x, g x)

full_name: HasMFDerivAt.congr_mfderiv
code: theorem HasMFDerivAt.congr_mfderiv (h : HasMFDerivAt I I' f x f') (h' : f' = f₁') :
    HasMFDerivAt I I' f x f₁' 
goal: HasMFDerivAt I I' f x f₁'

full_name: HasMFDerivWithinAt.congr_mfderiv
code: theorem HasMFDerivWithinAt.congr_mfderiv (h : HasMFDerivWithinAt I I' f s x f') (h' : f' = f₁') :
    HasMFDerivWithinAt I I' f s x f₁' 
goal: HasMFDerivWithinAt I I' f s x f₁'

full_name: HasMFDerivWithinAt.congr_of_eventuallyEq
code: theorem HasMFDerivWithinAt.congr_of_eventuallyEq (h : HasMFDerivWithinAt I I' f s x f')
    (h₁ : f₁ =ᶠ[𝓝[s] x] f) (hx : f₁ x = f x) : HasMFDerivWithinAt I I' f₁ s x f' 
goal: HasMFDerivWithinAt I I' f₁ s x f'

full_name: HasMFDerivWithinAt.congr_mono
code: theorem HasMFDerivWithinAt.congr_mono (h : HasMFDerivWithinAt I I' f s x f')
    (ht : ∀ x ∈ t, f₁ x = f x) (hx : f₁ x = f x) (h₁ : t ⊆ s) : HasMFDerivWithinAt I I' f₁ t x f' 
goal: HasMFDerivWithinAt I I' f₁ t x f'

full_name: HasMFDerivAt.congr_of_eventuallyEq
code: theorem HasMFDerivAt.congr_of_eventuallyEq (h : HasMFDerivAt I I' f x f') (h₁ : f₁ =ᶠ[𝓝 x] f) :
    HasMFDerivAt I I' f₁ x f' 
goal: HasMFDerivAt I I' f₁ x f'

full_name: MDifferentiableWithinAt.congr_of_eventuallyEq
code: theorem MDifferentiableWithinAt.congr_of_eventuallyEq (h : MDifferentiableWithinAt I I' f s x)
    (h₁ : f₁ =ᶠ[𝓝[s] x] f) (hx : f₁ x = f x) : MDifferentiableWithinAt I I' f₁ s x 
goal: MDifferentiableWithinAt I I' f₁ s x

full_name: Filter.EventuallyEq.mdifferentiableWithinAt_iff
code: theorem Filter.EventuallyEq.mdifferentiableWithinAt_iff (h₁ : f₁ =ᶠ[𝓝[s] x] f) (hx : f₁ x = f x) :
    MDifferentiableWithinAt I I' f s x ↔ MDifferentiableWithinAt I I' f₁ s x 
goal: MDifferentiableWithinAt I I' f s x ↔ MDifferentiableWithinAt I I' f₁ s x

full_name: MDifferentiableWithinAt.congr_mono
code: theorem MDifferentiableWithinAt.congr_mono (h : MDifferentiableWithinAt I I' f s x)
    (ht : ∀ x ∈ t, f₁ x = f x) (hx : f₁ x = f x) (h₁ : t ⊆ s) :
    MDifferentiableWithinAt I I' f₁ t x 
goal: MDifferentiableWithinAt I I' f₁ t x

full_name: MDifferentiableWithinAt.congr
code: theorem MDifferentiableWithinAt.congr (h : MDifferentiableWithinAt I I' f s x)
    (ht : ∀ x ∈ s, f₁ x = f x) (hx : f₁ x = f x) : MDifferentiableWithinAt I I' f₁ s x 
goal: MDifferentiableWithinAt I I' f₁ s x

full_name: MDifferentiableOn.congr_mono
code: theorem MDifferentiableOn.congr_mono (h : MDifferentiableOn I I' f s) (h' : ∀ x ∈ t, f₁ x = f x)
    (h₁ : t ⊆ s) : MDifferentiableOn I I' f₁ t 
goal: MDifferentiableOn I I' f₁ t

full_name: MDifferentiableAt.congr_of_eventuallyEq
code: theorem MDifferentiableAt.congr_of_eventuallyEq (h : MDifferentiableAt I I' f x)
    (hL : f₁ =ᶠ[𝓝 x] f) : MDifferentiableAt I I' f₁ x 
goal: MDifferentiableAt I I' f₁ x

full_name: MDifferentiableWithinAt.mfderivWithin_congr_mono
code: theorem MDifferentiableWithinAt.mfderivWithin_congr_mono (h : MDifferentiableWithinAt I I' f s x)
    (hs : ∀ x ∈ t, f₁ x = f x) (hx : f₁ x = f x) (hxt : UniqueMDiffWithinAt I t x) (h₁ : t ⊆ s) :
    mfderivWithin I I' f₁ t x = (mfderivWithin I I' f s x : _) 
goal: mfderivWithin I I' f₁ t x = mfderivWithin I I' f s x

full_name: Filter.EventuallyEq.mfderivWithin_eq
code: theorem Filter.EventuallyEq.mfderivWithin_eq (hs : UniqueMDiffWithinAt I s x) (hL : f₁ =ᶠ[𝓝[s] x] f)
    (hx : f₁ x = f x) : mfderivWithin I I' f₁ s x = (mfderivWithin I I' f s x : _) 
goal: mfderivWithin I I' f₁ s x = mfderivWithin I I' f s x

full_name: mfderivWithin_congr
code: theorem mfderivWithin_congr (hs : UniqueMDiffWithinAt I s x) (hL : ∀ x ∈ s, f₁ x = f x)
    (hx : f₁ x = f x) : mfderivWithin I I' f₁ s x = (mfderivWithin I I' f s x : _) 
goal: mfderivWithin I I' f₁ s x = mfderivWithin I I' f s x

full_name: tangentMapWithin_congr
code: theorem tangentMapWithin_congr (h : ∀ x ∈ s, f x = f₁ x) (p : TangentBundle I M) (hp : p.1 ∈ s)
    (hs : UniqueMDiffWithinAt I s p.1) :
    tangentMapWithin I I' f s p = tangentMapWithin I I' f₁ s p 
goal: tangentMapWithin I I' f s p = tangentMapWithin I I' f₁ s p

full_name: Filter.EventuallyEq.mfderiv_eq
code: theorem Filter.EventuallyEq.mfderiv_eq (hL : f₁ =ᶠ[𝓝 x] f) :
    mfderiv I I' f₁ x = (mfderiv I I' f x : _) 
goal: mfderiv I I' f₁ x = mfderiv I I' f x

full_name: mfderiv_congr_point
code: /-- A congruence lemma for `mfderiv`, (ab)using the fact that `TangentSpace I' (f x)` is
definitionally equal to `E'`. -/
theorem mfderiv_congr_point {x' : M} (h : x = x') :
    @Eq (E →L[𝕜] E') (mfderiv I I' f x) (mfderiv I I' f x') 
goal: mfderiv I I' f x = mfderiv I I' f x'

full_name: mfderiv_congr
code: /-- A congruence lemma for `mfderiv`, (ab)using the fact that `TangentSpace I' (f x)` is
definitionally equal to `E'`. -/
theorem mfderiv_congr {f' : M → M'} (h : f = f') :
    @Eq (E →L[𝕜] E') (mfderiv I I' f x) (mfderiv I I' f' x) 
goal: mfderiv I I' f x = mfderiv I I' f' x

full_name: writtenInExtChartAt_comp
code: theorem writtenInExtChartAt_comp (h : ContinuousWithinAt f s x) :
    {y | writtenInExtChartAt I I'' x (g ∘ f) y =
          (writtenInExtChartAt I' I'' (f x) g ∘ writtenInExtChartAt I I' x f) y} ∈
      𝓝[(extChartAt I x).symm ⁻¹' s ∩ range I] (extChartAt I x) x 
goal: {y | writtenInExtChartAt I I'' x (g ∘ f) y = (writtenInExtChartAt I' I'' (f x) g ∘ writtenInExtChartAt I I' x f) y} ∈
  𝓝[↑(extChartAt I x).symm ⁻¹' s ∩ Set.range ↑I] ↑(extChartAt I x) x

full_name: HasMFDerivWithinAt.comp
code: theorem HasMFDerivWithinAt.comp (hg : HasMFDerivWithinAt I' I'' g u (f x) g')
    (hf : HasMFDerivWithinAt I I' f s x f') (hst : s ⊆ f ⁻¹' u) :
    HasMFDerivWithinAt I I'' (g ∘ f) s x (g'.comp f') 
goal: HasMFDerivWithinAt I I'' (g ∘ f) s x (g'.comp f')

full_name: HasMFDerivAt.comp
code: /-- The **chain rule for manifolds**. -/
theorem HasMFDerivAt.comp (hg : HasMFDerivAt I' I'' g (f x) g') (hf : HasMFDerivAt I I' f x f') :
    HasMFDerivAt I I'' (g ∘ f) x (g'.comp f') 
goal: HasMFDerivAt I I'' (g ∘ f) x (g'.comp f')

full_name: HasMFDerivAt.comp_hasMFDerivWithinAt
code: theorem HasMFDerivAt.comp_hasMFDerivWithinAt (hg : HasMFDerivAt I' I'' g (f x) g')
    (hf : HasMFDerivWithinAt I I' f s x f') :
    HasMFDerivWithinAt I I'' (g ∘ f) s x (g'.comp f') 
goal: HasMFDerivWithinAt I I'' (g ∘ f) s x (g'.comp f')

full_name: MDifferentiableWithinAt.comp
code: theorem MDifferentiableWithinAt.comp (hg : MDifferentiableWithinAt I' I'' g u (f x))
    (hf : MDifferentiableWithinAt I I' f s x) (h : s ⊆ f ⁻¹' u) :
    MDifferentiableWithinAt I I'' (g ∘ f) s x 
goal: MDifferentiableWithinAt I I'' (g ∘ f) s x

full_name: MDifferentiableAt.comp
code: theorem MDifferentiableAt.comp (hg : MDifferentiableAt I' I'' g (f x))
    (hf : MDifferentiableAt I I' f x) : MDifferentiableAt I I'' (g ∘ f) x 
goal: MDifferentiableAt I I'' (g ∘ f) x

full_name: mfderivWithin_comp
code: theorem mfderivWithin_comp (hg : MDifferentiableWithinAt I' I'' g u (f x))
    (hf : MDifferentiableWithinAt I I' f s x) (h : s ⊆ f ⁻¹' u) (hxs : UniqueMDiffWithinAt I s x) :
    mfderivWithin I I'' (g ∘ f) s x =
      (mfderivWithin I' I'' g u (f x)).comp (mfderivWithin I I' f s x) 
goal: mfderivWithin I I'' (g ∘ f) s x = (mfderivWithin I' I'' g u (f x)).comp (mfderivWithin I I' f s x)

full_name: mfderiv_comp
code: theorem mfderiv_comp (hg : MDifferentiableAt I' I'' g (f x)) (hf : MDifferentiableAt I I' f x) :
    mfderiv I I'' (g ∘ f) x = (mfderiv I' I'' g (f x)).comp (mfderiv I I' f x) 
goal: mfderiv I I'' (g ∘ f) x = (mfderiv I' I'' g (f x)).comp (mfderiv I I' f x)

full_name: mfderiv_comp_of_eq
code: theorem mfderiv_comp_of_eq {x : M} {y : M'} (hg : MDifferentiableAt I' I'' g y)
    (hf : MDifferentiableAt I I' f x) (hy : f x = y) :
    mfderiv I I'' (g ∘ f) x = (mfderiv I' I'' g (f x)).comp (mfderiv I I' f x) 
goal: mfderiv I I'' (g ∘ f) x = (mfderiv I' I'' g (f x)).comp (mfderiv I I' f x)

full_name: MDifferentiableOn.comp
code: theorem MDifferentiableOn.comp (hg : MDifferentiableOn I' I'' g u) (hf : MDifferentiableOn I I' f s)
    (st : s ⊆ f ⁻¹' u) : MDifferentiableOn I I'' (g ∘ f) s 
goal: MDifferentiableOn I I'' (g ∘ f) s

full_name: MDifferentiable.comp
code: theorem MDifferentiable.comp (hg : MDifferentiable I' I'' g) (hf : MDifferentiable I I' f) :
    MDifferentiable I I'' (g ∘ f) 
goal: MDifferentiable I I'' (g ∘ f)

full_name: tangentMapWithin_comp_at
code: theorem tangentMapWithin_comp_at (p : TangentBundle I M)
    (hg : MDifferentiableWithinAt I' I'' g u (f p.1)) (hf : MDifferentiableWithinAt I I' f s p.1)
    (h : s ⊆ f ⁻¹' u) (hps : UniqueMDiffWithinAt I s p.1) :
    tangentMapWithin I I'' (g ∘ f) s p =
      tangentMapWithin I' I'' g u (tangentMapWithin I I' f s p) 
goal: tangentMapWithin I I'' (g ∘ f) s p = tangentMapWithin I' I'' g u (tangentMapWithin I I' f s p)

full_name: tangentMap_comp_at
code: theorem tangentMap_comp_at (p : TangentBundle I M) (hg : MDifferentiableAt I' I'' g (f p.1))
    (hf : MDifferentiableAt I I' f p.1) :
    tangentMap I I'' (g ∘ f) p = tangentMap I' I'' g (tangentMap I I' f p) 
goal: tangentMap I I'' (g ∘ f) p = tangentMap I' I'' g (tangentMap I I' f p)

full_name: tangentMap_comp
code: theorem tangentMap_comp (hg : MDifferentiable I' I'' g) (hf : MDifferentiable I I' f) :
    tangentMap I I'' (g ∘ f) = tangentMap I' I'' g ∘ tangentMap I I' f 
goal: tangentMap I I'' (g ∘ f) = tangentMap I' I'' g ∘ tangentMap I I' f