-- Mathlib/Geometry/Manifold/ContMDiff/Constructions.lean
lemma ContMDiff.inl : ContMDiff I I n (@Sum.inl M M')

Proof state:
case h
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
this : ↑I.symm ⁻¹' C.target ∩ range ↑I ∈ 𝓝[range ↑I] ↑(extChartAt I x) x
y : E
hy : y ∈ ↑I.symm ⁻¹' C.target ∩ range ↑I
⊢ (↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm) y = id y

Tactic:
simp [extChartAt, sum_chartAt_inl, ← hC, Sum.inl_injective.extend_apply C, C.right_inv hy.1,
  I.right_inv hy.2]

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
⊢ ↑I.symm ⁻¹' C.target ∩ range ↑I ∈ 𝓝[range ↑I] ↑(extChartAt I x) x

Tactic:
rw [← I.image_eq (chartAt H x).target]

Result:
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
⊢ ↑I '' (chartAt H x).target ∈ 𝓝[range ↑I] ↑(extChartAt I x) x

Proof state:
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
⊢ ContMDiff I I n Sum.inl

Tactic:
intro x

Result:
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
⊢ ContMDiffAt I I n Sum.inl x

Proof state:
case hx.e_a
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
⊢ extend Sum.inl (↑(chartAt H x)) (fun x_1 => Classical.arbitrary H) (Sum.inl x) = ↑(chartAt H x) x

Tactic:
apply Sum.inl_injective.extend_apply (chartAt _ x)

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
⊢ ContinuousAt Sum.inl x ∧
    ContDiffWithinAt 𝕜 n (↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm) (range ↑I)
      (↑(extChartAt I x) x)

Tactic:
refine ⟨continuous_inl.continuousAt, ?_⟩

Result:
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
⊢ ContDiffWithinAt 𝕜 n (↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm) (range ↑I) (↑(extChartAt I x) x)

Proof state:
case h₁
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
this : ↑I.symm ⁻¹' C.target ∩ range ↑I ∈ 𝓝[range ↑I] ↑(extChartAt I x) x
⊢ ↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm =ᶠ[𝓝[range ↑I] ↑(extChartAt I x) x] id

Tactic:
filter_upwards [this] with y hy

Result:
case h
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
this : ↑I.symm ⁻¹' C.target ∩ range ↑I ∈ 𝓝[range ↑I] ↑(extChartAt I x) x
y : E
hy : y ∈ ↑I.symm ⁻¹' C.target ∩ range ↑I
⊢ (↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm) y = id y

Proof state:
case h₁
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
⊢ ↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm =ᶠ[𝓝[range ↑I] ↑(extChartAt I x) x] id

Tactic:
have : I.symm ⁻¹' C.target ∩ range I ∈ 𝓝[range I] (extChartAt I x) x := by
  rw [← I.image_eq (chartAt H x).target]
  exact (chartAt H x).extend_image_target_mem_nhds (mem_chart_source _ x)

Result:
case h₁
𝕜 : Type u_1
inst✝⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³ : TopologicalSpace M
inst✝² : ChartedSpace H M
M' : Type u_16
inst✝¹ : TopologicalSpace M'
inst✝ : ChartedSpace H M'
n : WithTop ℕ∞
x : M
C : PartialHomeomorph M H := chartAt H x
hC : C = chartAt H x
this : ↑I.symm ⁻¹' C.target ∩ range ↑I ∈ 𝓝[range ↑I] ↑(extChartAt I x) x
⊢ ↑(extChartAt I (Sum.inl x)) ∘ Sum.inl ∘ ↑(extChartAt I x).symm =ᶠ[𝓝[range ↑I] ↑(extChartAt I x) x] id