-- Mathlib/Geometry/Manifold/VectorBundle/Tangent.lean
theorem tangentBundle_model_space_chartAt (p : TangentBundle I H) :
    (chartAt (ModelProd H E) p).toPartialEquiv = (TotalSpace.toProd H E).toPartialEquiv

Proof state:
case hsymm.snd
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
x : ModelProd H E
⊢ HEq (↑(chartAt (ModelProd H E) p).symm x).snd (↑(TotalSpace.toProd H E).toPartialEquiv.symm x).snd

Tactic:
apply heq_of_eq

Result:
case hsymm.snd.h
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
x : ModelProd H E
⊢ (↑(chartAt (ModelProd H E) p).symm x).snd = (↑(TotalSpace.toProd H E).toPartialEquiv.symm x).snd

Proof state:
case hs
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
⊢ ({
          toFun := fun p_1 =>
            (p_1.proj,
              (tangentBundleCore I H).toFiberBundleCore.coordChange
                ((tangentBundleCore I H).toFiberBundleCore.indexAt p_1.proj) (achart H p.proj) p_1.proj p_1.snd),
          invFun := fun p_1 =>
            { proj := p_1.1,
              snd :=
                (tangentBundleCore I H).toFiberBundleCore.coordChange (achart H p.proj)
                  ((tangentBundleCore I H).toFiberBundleCore.indexAt p_1.1) p_1.1 p_1.2 },
          source := (tangentBundleCore I H).toFiberBundleCore.proj ⁻¹' (↑(achart H p.proj)).source,
          target := (↑(achart H p.proj)).source ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯,
          right_inv' := ⋯, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ } ≫ₕ
        (chartAt H p.proj).prod (PartialHomeomorph.refl E)).source =
    (TotalSpace.toProd H E).toPartialEquiv.source

Tactic:
simp only [mfld_simps]

Result:
no goals

Proof state:
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
⊢ (chartAt (ModelProd H E) p).toPartialEquiv = (TotalSpace.toProd H E).toPartialEquiv

Tactic:
ext x : 1

Result:
case h
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p x : TangentBundle I H
⊢ ↑(chartAt (ModelProd H E) p).toPartialEquiv x = ↑(TotalSpace.toProd H E).toPartialEquiv x

case hsymm
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
x : ModelProd H E
⊢ ↑(chartAt (ModelProd H E) p).symm x = ↑(TotalSpace.toProd H E).toPartialEquiv.symm x

case hs
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
⊢ (chartAt (ModelProd H E) p).source = (TotalSpace.toProd H E).toPartialEquiv.source

Proof state:
case h.h₂
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p x : TangentBundle I H
⊢ (↑(chartAt (ModelProd H E) p).toPartialEquiv x).2 = (↑(TotalSpace.toProd H E).toPartialEquiv x).2

Tactic:
exact (tangentBundleCore I H).coordChange_self (achart _ x.1) x.1 (mem_achart_source H x.1) x.2

Result:
no goals

Proof state:
case hsymm.proj
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
x : ModelProd H E
⊢ (↑(chartAt (ModelProd H E) p).symm x).proj = (↑(TotalSpace.toProd H E).toPartialEquiv.symm x).proj

Tactic:
rfl

Result:
no goals

Proof state:
case h
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p x : TangentBundle I H
⊢ ↑(chartAt (ModelProd H E) p).toPartialEquiv x = ↑(TotalSpace.toProd H E).toPartialEquiv x

Tactic:
ext

Result:
case h.h₁
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p x : TangentBundle I H
⊢ (↑(chartAt (ModelProd H E) p).toPartialEquiv x).1 = (↑(TotalSpace.toProd H E).toPartialEquiv x).1

case h.h₂
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p x : TangentBundle I H
⊢ (↑(chartAt (ModelProd H E) p).toPartialEquiv x).2 = (↑(TotalSpace.toProd H E).toPartialEquiv x).2

Proof state:
case hs
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
⊢ (chartAt (ModelProd H E) p).source = (TotalSpace.toProd H E).toPartialEquiv.source

Tactic:
simp_rw [TangentBundle.chartAt, FiberBundleCore.localTriv,
  FiberBundleCore.localTrivAsPartialEquiv, VectorBundleCore.toFiberBundleCore_baseSet,
  tangentBundleCore_baseSet]

Result:
case hs
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p : TangentBundle I H
⊢ ({
          toFun := fun p_1 =>
            (p_1.proj,
              (tangentBundleCore I H).toFiberBundleCore.coordChange
                ((tangentBundleCore I H).toFiberBundleCore.indexAt p_1.proj) (achart H p.proj) p_1.proj p_1.snd),
          invFun := fun p_1 =>
            { proj := p_1.1,
              snd :=
                (tangentBundleCore I H).toFiberBundleCore.coordChange (achart H p.proj)
                  ((tangentBundleCore I H).toFiberBundleCore.indexAt p_1.1) p_1.1 p_1.2 },
          source := (tangentBundleCore I H).toFiberBundleCore.proj ⁻¹' (↑(achart H p.proj)).source,
          target := (↑(achart H p.proj)).source ×ˢ univ, map_source' := ⋯, map_target' := ⋯, left_inv' := ⋯,
          right_inv' := ⋯, open_source := ⋯, open_target := ⋯, continuousOn_toFun := ⋯, continuousOn_invFun := ⋯ } ≫ₕ
        (chartAt H p.proj).prod (PartialHomeomorph.refl E)).source =
    (TotalSpace.toProd H E).toPartialEquiv.source

Proof state:
case h.h₁
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_4
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
p x : TangentBundle I H
⊢ (↑(chartAt (ModelProd H E) p).toPartialEquiv x).1 = (↑(TotalSpace.toProd H E).toPartialEquiv x).1

Tactic:
rfl

Result:
no goals