File: Mathlib/Geometry/Manifold/LocalDiffeomorph.lean

full_name: PartialDiffeomorph
code: /-- A partial diffeomorphism on `s` is a function `f : M → N` such that `f` restricts to a
diffeomorphism `s → t` between open subsets of `M` and `N`, respectively.
This is an auxiliary definition and should not be used outside of this file. -/
structure PartialDiffeomorph extends PartialEquiv M N where
  open_source : IsOpen source
  open_target : IsOpen target
  contMDiffOn_toFun : ContMDiffOn I J n toFun source
  contMDiffOn_invFun : ContMDiffOn J I n invFun target
goal: Type (max u_6 u_7)

full_name: PartialDiffeomorph.contMDiffOn_invFun
code: /-- A partial diffeomorphism on `s` is a function `f : M → N` such that `f` restricts to a
diffeomorphism `s → t` between open subsets of `M` and `N`, respectively.
This is an auxiliary definition and should not be used outside of this file. -/
structure PartialDiffeomorph extends PartialEquiv M N where
  open_source : IsOpen source
  open_target : IsOpen target
  contMDiffOn_toFun : ContMDiffOn I J n toFun source
  contMDiffOn_invFun : ContMDiffOn J I n invFun target
goal: ContMDiffOn J I n self.invFun self.target

full_name: PartialDiffeomorph.open_target
code: /-- A partial diffeomorphism on `s` is a function `f : M → N` such that `f` restricts to a
diffeomorphism `s → t` between open subsets of `M` and `N`, respectively.
This is an auxiliary definition and should not be used outside of this file. -/
structure PartialDiffeomorph extends PartialEquiv M N where
  open_source : IsOpen source
  open_target : IsOpen target
  contMDiffOn_toFun : ContMDiffOn I J n toFun source
  contMDiffOn_invFun : ContMDiffOn J I n invFun target
goal: IsOpen self.target

full_name: PartialDiffeomorph.contMDiffOn_toFun
code: /-- A partial diffeomorphism on `s` is a function `f : M → N` such that `f` restricts to a
diffeomorphism `s → t` between open subsets of `M` and `N`, respectively.
This is an auxiliary definition and should not be used outside of this file. -/
structure PartialDiffeomorph extends PartialEquiv M N where
  open_source : IsOpen source
  open_target : IsOpen target
  contMDiffOn_toFun : ContMDiffOn I J n toFun source
  contMDiffOn_invFun : ContMDiffOn J I n invFun target
goal: ContMDiffOn I J n (↑self.toPartialEquiv) self.source

full_name: PartialDiffeomorph.open_source
code: /-- A partial diffeomorphism on `s` is a function `f : M → N` such that `f` restricts to a
diffeomorphism `s → t` between open subsets of `M` and `N`, respectively.
This is an auxiliary definition and should not be used outside of this file. -/
structure PartialDiffeomorph extends PartialEquiv M N where
  open_source : IsOpen source
  open_target : IsOpen target
  contMDiffOn_toFun : ContMDiffOn I J n toFun source
  contMDiffOn_invFun : ContMDiffOn J I n invFun target
goal: IsOpen self.source

full_name: instCoeFunPartialDiffeomorphForall
code: /-- Coercion of a `PartialDiffeomorph` to function.
Note that a `PartialDiffeomorph` is not `DFunLike` (like `PartialHomeomorph`),
as `toFun` doesn't determine `invFun` outside of `target`. -/
instance : CoeFun (PartialDiffeomorph I J M N n) fun _ => M → N 
goal: CoeFun (PartialDiffeomorph I J M N n) fun x => M → N

full_name: Diffeomorph.toPartialDiffeomorph
code: /-- A diffeomorphism is a partial diffeomorphism. -/
def Diffeomorph.toPartialDiffeomorph (h : Diffeomorph I J M N n) :
    PartialDiffeomorph I J M N n 
goal: PartialDiffeomorph I J M N n

full_name: PartialDiffeomorph.toPartialHomeomorph
code: /-- A partial diffeomorphism is also a local homeomorphism. -/
def toPartialHomeomorph : PartialHomeomorph M N 
goal: PartialHomeomorph M N

full_name: PartialDiffeomorph.symm
code: /-- The inverse of a local diffeomorphism. -/
protected def symm : PartialDiffeomorph J I N M n 
goal: PartialDiffeomorph J I N M n

full_name: PartialDiffeomorph.contMDiffOn
code: protected theorem contMDiffOn : ContMDiffOn I J n Φ Φ.source 
goal: ContMDiffOn I J n (↑Φ.toPartialEquiv) Φ.source

full_name: PartialDiffeomorph.mdifferentiableOn
code: protected theorem mdifferentiableOn : MDifferentiableOn I J Φ Φ.source 
goal: MDifferentiableOn I J (↑Φ.toPartialEquiv) Φ.source

full_name: PartialDiffeomorph.mdifferentiableAt
code: protected theorem mdifferentiableAt {x : M} (hx : x ∈ Φ.source) : MDifferentiableAt I J Φ x 
goal: MDifferentiableAt I J (↑Φ.toPartialEquiv) x

full_name: IsLocalDiffeomorphAt
code: /-- `f : M → N` is called a **`C^n` local diffeomorphism at *x*** iff there exist
  open sets `U ∋ x` and `V ∋ f x` and a diffeomorphism `Φ : U → V` such that `f = Φ` on `U`. -/
def IsLocalDiffeomorphAt (f : M → N) (x : M) : Prop 
goal: Prop

full_name: IsLocalDiffeomorphOn
code: /-- `f : M → N` is called a **`C^n` local diffeomorphism on *s*** iff it is a local diffeomorphism
  at each `x : s`. -/
def IsLocalDiffeomorphOn (f : M → N) (s : Set M) : Prop 
goal: Prop

full_name: IsLocalDiffeomorph
code: /-- `f : M → N` is a **`C^n` local diffeomorphism** iff it is a local diffeomorphism
at each `x ∈ M`. -/
def IsLocalDiffeomorph (f : M → N) : Prop 
goal: Prop

full_name: isLocalDiffeomorphOn_iff
code: lemma isLocalDiffeomorphOn_iff {f : M → N} (s : Set M) :
    IsLocalDiffeomorphOn I J n f s ↔ ∀ x : s, IsLocalDiffeomorphAt I J n f x 
goal: IsLocalDiffeomorphOn I J n f s ↔ ∀ (x : ↑s), IsLocalDiffeomorphAt I J n f ↑x

full_name: isLocalDiffeomorph_iff
code: lemma isLocalDiffeomorph_iff {f : M → N} :
    IsLocalDiffeomorph I J n f ↔ ∀ x : M, IsLocalDiffeomorphAt I J n f x 
goal: IsLocalDiffeomorph I J n f ↔ ∀ (x : M), IsLocalDiffeomorphAt I J n f x

full_name: isLocalDiffeomorph_iff_isLocalDiffeomorphOn_univ
code: theorem isLocalDiffeomorph_iff_isLocalDiffeomorphOn_univ {f : M → N} :
    IsLocalDiffeomorph I J n f ↔ IsLocalDiffeomorphOn I J n f Set.univ 
goal: IsLocalDiffeomorph I J n f ↔ IsLocalDiffeomorphOn I J n f Set.univ

full_name: IsLocalDiffeomorph.isLocalDiffeomorphOn
code: lemma IsLocalDiffeomorph.isLocalDiffeomorphOn
    {f : M → N} (hf : IsLocalDiffeomorph I J n f) (s : Set M) : IsLocalDiffeomorphOn I J n f s 
goal: IsLocalDiffeomorphOn I J n f s

full_name: IsLocalDiffeomorphAt.contMDiffAt
code: /-- A `C^n` local diffeomorphism at `x` is `C^n` differentiable at `x`. -/
lemma IsLocalDiffeomorphAt.contMDiffAt (hf : IsLocalDiffeomorphAt I J n f x) :
    ContMDiffAt I J n f x 
goal: ContMDiffAt I J n f x

full_name: IsLocalDiffeomorphAt.mdifferentiableAt
code: /-- A local diffeomorphism at `x` is differentiable at `x`. -/
lemma IsLocalDiffeomorphAt.mdifferentiableAt (hf : IsLocalDiffeomorphAt I J n f x) (hn : 1 ≤ n) :
    MDifferentiableAt I J f x 
goal: MDifferentiableAt I J f x

full_name: IsLocalDiffeomorphOn.contMDiffOn
code: /-- A `C^n` local diffeomorphism on `s` is `C^n` on `s`. -/
lemma IsLocalDiffeomorphOn.contMDiffOn (hf : IsLocalDiffeomorphOn I J n f s) :
    ContMDiffOn I J n f s 
goal: ContMDiffOn I J n f s

full_name: IsLocalDiffeomorphOn.mdifferentiableOn
code: /-- A local diffeomorphism on `s` is differentiable on `s`. -/
lemma IsLocalDiffeomorphOn.mdifferentiableOn (hf : IsLocalDiffeomorphOn I J n f s) (hn : 1 ≤ n) :
    MDifferentiableOn I J f s 
goal: MDifferentiableOn I J f s

full_name: IsLocalDiffeomorph.contMDiff
code: /-- A `C^n` local diffeomorphism is `C^n`. -/
lemma IsLocalDiffeomorph.contMDiff (hf : IsLocalDiffeomorph I J n f) : ContMDiff I J n f 
goal: ContMDiff I J n f

full_name: IsLocalDiffeomorph.mdifferentiable
code: /-- A `C^n` local diffeomorphism is differentiable. -/
lemma IsLocalDiffeomorph.mdifferentiable (hf : IsLocalDiffeomorph I J n f) (hn : 1 ≤ n) :
    MDifferentiable I J f 
goal: MDifferentiable I J f

full_name: Diffeomorph.isLocalDiffeomorph
code: /-- A `C^n` diffeomorphism is a local diffeomorphism. -/
lemma Diffeomorph.isLocalDiffeomorph (Φ : M ≃ₘ^n⟮I, J⟯ N) : IsLocalDiffeomorph I J n Φ 
goal: IsLocalDiffeomorph I J n ⇑Φ

full_name: IsLocalDiffeomorphOn.isLocalHomeomorphOn
code: /-- A local diffeomorphism on `s` is a local homeomorphism on `s`. -/
theorem IsLocalDiffeomorphOn.isLocalHomeomorphOn {s : Set M} (hf : IsLocalDiffeomorphOn I J n f s) :
    IsLocalHomeomorphOn f s 
goal: IsLocalHomeomorphOn f s

full_name: IsLocalDiffeomorph.isLocalHomeomorph
code: /-- A local diffeomorphism is a local homeomorphism. -/
theorem IsLocalDiffeomorph.isLocalHomeomorph (hf : IsLocalDiffeomorph I J n f) :
    IsLocalHomeomorph f 
goal: IsLocalHomeomorph f

full_name: IsLocalDiffeomorph.isOpenMap
code: /-- A local diffeomorphism is an open map. -/
lemma IsLocalDiffeomorph.isOpenMap (hf : IsLocalDiffeomorph I J n f) : IsOpenMap f 
goal: IsOpenMap f

full_name: IsLocalDiffeomorph.isOpen_range
code: /-- A local diffeomorphism has open range. -/
lemma IsLocalDiffeomorph.isOpen_range (hf : IsLocalDiffeomorph I J n f) : IsOpen (range f) 
goal: IsOpen (Set.range f)

full_name: IsLocalDiffeomorph.image
code: /-- The image of a local diffeomorphism is open. -/
def IsLocalDiffeomorph.image (hf : IsLocalDiffeomorph I J n f) : Opens N 
goal: TopologicalSpace.Opens N

full_name: IsLocalDiffeomorph.image_coe
code: lemma IsLocalDiffeomorph.image_coe (hf : IsLocalDiffeomorph I J n f) : hf.image.1 = range f 
goal: hf.image.carrier = Set.range f

full_name: IslocalDiffeomorph.diffeomorph_of_bijective
code: /-- A bijective local diffeomorphism is a diffeomorphism. -/
noncomputable def IslocalDiffeomorph.diffeomorph_of_bijective
    (hf : IsLocalDiffeomorph I J n f) (hf' : Function.Bijective f) : Diffeomorph I J M N n 
goal: M ≃ₘ^n⟮I, J⟯ N