l3lab/ntp-mathlib huggingface dataset:
/-- A smooth vector bundle `E` is naturally a smooth manifold. -/
instance Bundle.TotalSpace.smoothManifoldWithCorners :
    SmoothManifoldWithCorners (IB.prod 𝓘(𝕜, F)) (TotalSpace F E) := by
  refine' { StructureGroupoid.HasGroupoid.comp (smoothFiberwiseLinear B F IB) _ with }
  intro e he
  rw [mem_smoothFiberwiseLinear_iff] at he
  obtain ⟨φ, U, hU, hφ, h2φ, heφ⟩ := he
  rw [isLocalStructomorphOn_contDiffGroupoid_iff]
  refine' ⟨ContMDiffOn.congr _ (EqOnSource.eqOn heφ),
      ContMDiffOn.congr _ (EqOnSource.eqOn (EqOnSource.symm' heφ))⟩
  · rw [EqOnSource.source_eq heφ]
    apply smoothOn_fst.prod_mk
    

Proof state:
case intro.intro.intro.intro.intro.refine'_1
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²⁰ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝¹⁹ : NormedAddCommGroup EB
inst✝¹⁸ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁷ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁶ : TopologicalSpace B
inst✝¹⁵ : ChartedSpace HB B
inst✝¹⁴ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹³ : NormedAddCommGroup EM
inst✝¹² : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹¹ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹⁰ : TopologicalSpace M
inst✝⁹ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module 𝕜 (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : TopologicalSpace (TotalSpace F E)
inst✝³ : (x : B) → TopologicalSpace (E x)
inst✝² : FiberBundle F E
inst✝¹ : VectorBundle 𝕜 F E
inst✝ : SmoothVectorBundle F E IB
e : PartialHomeomorph (B × F) (B × F)
φ : B → F ≃L[𝕜] F
U : Set B
hU : IsOpen U
hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) U
h2φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
heφ :
  EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) 𝓘(𝕜, F) (fun x => (φ x.1) x.2)
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U)).toPartialEquiv.source

Next tactic:
exact (hφ.comp contMDiffOn_fst <| prod_subset_preimage_fst _ _).clm_apply contMDiffOn_snd
/-- A smooth vector bundle `E` is naturally a smooth manifold. -/
instance Bundle.TotalSpace.smoothManifoldWithCorners :
    SmoothManifoldWithCorners (IB.prod 𝓘(𝕜, F)) (TotalSpace F E) := by
  refine' { StructureGroupoid.HasGroupoid.comp (smoothFiberwiseLinear B F IB) _ with }
  intro e he
  rw [mem_smoothFiberwiseLinear_iff] at he
  obtain ⟨φ, U, hU, hφ, h2φ, heφ⟩ := he
  rw [isLocalStructomorphOn_contDiffGroupoid_iff]
  refine' ⟨ContMDiffOn.congr _ (EqOnSource.eqOn heφ),
      ContMDiffOn.congr _ (EqOnSource.eqOn (EqOnSource.symm' heφ))⟩
  · rw [EqOnSource.source_eq heφ]
    apply smoothOn_fst.prod_mk
    exact (hφ.comp contMDiffOn_fst <| prod_subset_preimage_fst _ _).clm_apply contMDiffOn_snd
  · 

Proof state:
case intro.intro.intro.intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²⁰ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝¹⁹ : NormedAddCommGroup EB
inst✝¹⁸ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁷ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁶ : TopologicalSpace B
inst✝¹⁵ : ChartedSpace HB B
inst✝¹⁴ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹³ : NormedAddCommGroup EM
inst✝¹² : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹¹ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹⁰ : TopologicalSpace M
inst✝⁹ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module 𝕜 (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : TopologicalSpace (TotalSpace F E)
inst✝³ : (x : B) → TopologicalSpace (E x)
inst✝² : FiberBundle F E
inst✝¹ : VectorBundle 𝕜 F E
inst✝ : SmoothVectorBundle F E IB
e : PartialHomeomorph (B × F) (B × F)
φ : B → F ≃L[𝕜] F
U : Set B
hU : IsOpen U
hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) U
h2φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
heφ :
  EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
⊢ ContMDiffOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F)) ⊤
    (fun y =>
      ↑(PartialHomeomorph.symm
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U)))
        y)
    e.target

Next tactic:
rw [EqOnSource.target_eq heφ]
/-- A smooth vector bundle `E` is naturally a smooth manifold. -/
instance Bundle.TotalSpace.smoothManifoldWithCorners :
    SmoothManifoldWithCorners (IB.prod 𝓘(𝕜, F)) (TotalSpace F E) := by
  refine' { StructureGroupoid.HasGroupoid.comp (smoothFiberwiseLinear B F IB) _ with }
  intro e he
  rw [mem_smoothFiberwiseLinear_iff] at he
  obtain ⟨φ, U, hU, hφ, h2φ, heφ⟩ := he
  rw [isLocalStructomorphOn_contDiffGroupoid_iff]
  refine' ⟨ContMDiffOn.congr _ (EqOnSource.eqOn heφ),
      ContMDiffOn.congr _ (EqOnSource.eqOn (EqOnSource.symm' heφ))⟩
  · rw [EqOnSource.source_eq heφ]
    apply smoothOn_fst.prod_mk
    exact (hφ.comp contMDiffOn_fst <| prod_subset_preimage_fst _ _).clm_apply contMDiffOn_snd
  · rw [EqOnSource.target_eq heφ]
    

Proof state:
case intro.intro.intro.intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²⁰ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝¹⁹ : NormedAddCommGroup EB
inst✝¹⁸ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁷ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁶ : TopologicalSpace B
inst✝¹⁵ : ChartedSpace HB B
inst✝¹⁴ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹³ : NormedAddCommGroup EM
inst✝¹² : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹¹ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹⁰ : TopologicalSpace M
inst✝⁹ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module 𝕜 (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : TopologicalSpace (TotalSpace F E)
inst✝³ : (x : B) → TopologicalSpace (E x)
inst✝² : FiberBundle F E
inst✝¹ : VectorBundle 𝕜 F E
inst✝ : SmoothVectorBundle F E IB
e : PartialHomeomorph (B × F) (B × F)
φ : B → F ≃L[𝕜] F
U : Set B
hU : IsOpen U
hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) U
h2φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
heφ :
  EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
⊢ ContMDiffOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F)) ⊤
    (fun y =>
      ↑(PartialHomeomorph.symm
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U)))
        y)
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U)).toPartialEquiv.target

Next tactic:
apply smoothOn_fst.prod_mk
/-- A smooth vector bundle `E` is naturally a smooth manifold. -/
instance Bundle.TotalSpace.smoothManifoldWithCorners :
    SmoothManifoldWithCorners (IB.prod 𝓘(𝕜, F)) (TotalSpace F E) := by
  refine' { StructureGroupoid.HasGroupoid.comp (smoothFiberwiseLinear B F IB) _ with }
  intro e he
  rw [mem_smoothFiberwiseLinear_iff] at he
  obtain ⟨φ, U, hU, hφ, h2φ, heφ⟩ := he
  rw [isLocalStructomorphOn_contDiffGroupoid_iff]
  refine' ⟨ContMDiffOn.congr _ (EqOnSource.eqOn heφ),
      ContMDiffOn.congr _ (EqOnSource.eqOn (EqOnSource.symm' heφ))⟩
  · rw [EqOnSource.source_eq heφ]
    apply smoothOn_fst.prod_mk
    exact (hφ.comp contMDiffOn_fst <| prod_subset_preimage_fst _ _).clm_apply contMDiffOn_snd
  · rw [EqOnSource.target_eq heφ]
    apply smoothOn_fst.prod_mk
    

Proof state:
case intro.intro.intro.intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²⁰ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝¹⁹ : NormedAddCommGroup EB
inst✝¹⁸ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁷ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁶ : TopologicalSpace B
inst✝¹⁵ : ChartedSpace HB B
inst✝¹⁴ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹³ : NormedAddCommGroup EM
inst✝¹² : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹¹ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹⁰ : TopologicalSpace M
inst✝⁹ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝⁸ : (x : B) → AddCommMonoid (E x)
inst✝⁷ : (x : B) → Module 𝕜 (E x)
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : TopologicalSpace (TotalSpace F E)
inst✝³ : (x : B) → TopologicalSpace (E x)
inst✝² : FiberBundle F E
inst✝¹ : VectorBundle 𝕜 F E
inst✝ : SmoothVectorBundle F E IB
e : PartialHomeomorph (B × F) (B × F)
φ : B → F ≃L[𝕜] F
U : Set B
hU : IsOpen U
hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) U
h2φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
heφ :
  EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) 𝓘(𝕜, F) (fun x => (ContinuousLinearEquiv.symm (φ x.1)) x.2)
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U)).toPartialEquiv.target

Next tactic:
exact (h2φ.comp contMDiffOn_fst <| prod_subset_preimage_fst _ _).clm_apply contMDiffOn_snd
theorem Trivialization.contMDiffOn_iff {f : M → TotalSpace F E} {s : Set M}
    (he : MapsTo f s e.source) :
    ContMDiffOn IM (IB.prod 𝓘(𝕜, F)) n f s ↔
      ContMDiffOn IM IB n (fun x => (f x).proj) s ∧
      ContMDiffOn IM 𝓘(𝕜, F) n (fun x ↦ (e (f x)).2) s := by
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²² : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²¹ : NormedAddCommGroup EB
inst✝²⁰ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁹ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁸ : TopologicalSpace B
inst✝¹⁷ : ChartedSpace HB B
inst✝¹⁶ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁵ : NormedAddCommGroup EM
inst✝¹⁴ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹³ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹² : TopologicalSpace M
inst✝¹¹ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹⁰ : (x : B) → AddCommMonoid (E x)
inst✝⁹ : (x : B) → Module 𝕜 (E x)
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
inst✝⁶ : TopologicalSpace (TotalSpace F E)
inst✝⁵ : (x : B) → TopologicalSpace (E x)
inst✝⁴ : FiberBundle F E
inst✝³ : VectorBundle 𝕜 F E
inst✝² : SmoothVectorBundle F E IB
e e' : Trivialization F TotalSpace.proj
inst✝¹ : MemTrivializationAtlas e
inst✝ : MemTrivializationAtlas e'
f : M → TotalSpace F E
s : Set M
he : MapsTo f s e.source
⊢ ContMDiffOn IM (ModelWithCorners.prod IB 𝓘(𝕜, F)) n f s ↔
    ContMDiffOn IM IB n (fun x => (f x).proj) s ∧ ContMDiffOn IM 𝓘(𝕜, F) n (fun x => (↑e (f x)).2) s

Next tactic:
simp only [ContMDiffOn, ← forall_and]
theorem Trivialization.contMDiffOn_iff {f : M → TotalSpace F E} {s : Set M}
    (he : MapsTo f s e.source) :
    ContMDiffOn IM (IB.prod 𝓘(𝕜, F)) n f s ↔
      ContMDiffOn IM IB n (fun x => (f x).proj) s ∧
      ContMDiffOn IM 𝓘(𝕜, F) n (fun x ↦ (e (f x)).2) s := by
  simp only [ContMDiffOn, ← forall_and]
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²² : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²¹ : NormedAddCommGroup EB
inst✝²⁰ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁹ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁸ : TopologicalSpace B
inst✝¹⁷ : ChartedSpace HB B
inst✝¹⁶ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁵ : NormedAddCommGroup EM
inst✝¹⁴ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹³ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹² : TopologicalSpace M
inst✝¹¹ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹⁰ : (x : B) → AddCommMonoid (E x)
inst✝⁹ : (x : B) → Module 𝕜 (E x)
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedSpace 𝕜 F
inst✝⁶ : TopologicalSpace (TotalSpace F E)
inst✝⁵ : (x : B) → TopologicalSpace (E x)
inst✝⁴ : FiberBundle F E
inst✝³ : VectorBundle 𝕜 F E
inst✝² : SmoothVectorBundle F E IB
e e' : Trivialization F TotalSpace.proj
inst✝¹ : MemTrivializationAtlas e
inst✝ : MemTrivializationAtlas e'
f : M → TotalSpace F E
s : Set M
he : MapsTo f s e.source
⊢ (∀ x ∈ s, ContMDiffWithinAt IM (ModelWithCorners.prod IB 𝓘(𝕜, F)) n f s x) ↔
    ∀ x ∈ s,
      ContMDiffWithinAt IM IB n (fun x => (f x).proj) s x ∧ ContMDiffWithinAt IM 𝓘(𝕜, F) n (fun x => (↑e (f x)).2) s x

Next tactic:
exact forall₂_congr fun x hx ↦ e.contMDiffWithinAt_iff IB (he hx)
theorem Trivialization.smoothOn (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
    SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) e e.source := by
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²³ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²² : NormedAddCommGroup EB
inst✝²¹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝²⁰ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁹ : TopologicalSpace B
inst✝¹⁸ : ChartedSpace HB B
inst✝¹⁷ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁶ : NormedAddCommGroup EM
inst✝¹⁵ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹⁴ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹³ : TopologicalSpace M
inst✝¹² : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹¹ : (x : B) → AddCommMonoid (E x)
inst✝¹⁰ : (x : B) → Module 𝕜 (E x)
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : TopologicalSpace (TotalSpace F E)
inst✝⁶ : (x : B) → TopologicalSpace (E x)
inst✝⁵ : FiberBundle F E
inst✝⁴ : VectorBundle 𝕜 F E
inst✝³ : SmoothVectorBundle F E IB
e✝ e' : Trivialization F TotalSpace.proj
inst✝² : MemTrivializationAtlas e✝
inst✝¹ : MemTrivializationAtlas e'
e : Trivialization F TotalSpace.proj
inst✝ : MemTrivializationAtlas e
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F)) (↑e) e.source

Next tactic:
have : SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) id e.source := smoothOn_id
theorem Trivialization.smoothOn (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
    SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) e e.source := by
  have : SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) id e.source := smoothOn_id
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²³ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²² : NormedAddCommGroup EB
inst✝²¹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝²⁰ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁹ : TopologicalSpace B
inst✝¹⁸ : ChartedSpace HB B
inst✝¹⁷ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁶ : NormedAddCommGroup EM
inst✝¹⁵ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹⁴ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹³ : TopologicalSpace M
inst✝¹² : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹¹ : (x : B) → AddCommMonoid (E x)
inst✝¹⁰ : (x : B) → Module 𝕜 (E x)
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : TopologicalSpace (TotalSpace F E)
inst✝⁶ : (x : B) → TopologicalSpace (E x)
inst✝⁵ : FiberBundle F E
inst✝⁴ : VectorBundle 𝕜 F E
inst✝³ : SmoothVectorBundle F E IB
e✝ e' : Trivialization F TotalSpace.proj
inst✝² : MemTrivializationAtlas e✝
inst✝¹ : MemTrivializationAtlas e'
e : Trivialization F TotalSpace.proj
inst✝ : MemTrivializationAtlas e
this : SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F)) id e.source
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F)) (↑e) e.source

Next tactic:
rw [e.smoothOn_iff IB (mapsTo_id _)] at this
theorem Trivialization.smoothOn (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
    SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) e e.source := by
  have : SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) id e.source := smoothOn_id
  rw [e.smoothOn_iff IB (mapsTo_id _)] at this
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²³ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²² : NormedAddCommGroup EB
inst✝²¹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝²⁰ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁹ : TopologicalSpace B
inst✝¹⁸ : ChartedSpace HB B
inst✝¹⁷ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁶ : NormedAddCommGroup EM
inst✝¹⁵ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹⁴ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹³ : TopologicalSpace M
inst✝¹² : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹¹ : (x : B) → AddCommMonoid (E x)
inst✝¹⁰ : (x : B) → Module 𝕜 (E x)
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : TopologicalSpace (TotalSpace F E)
inst✝⁶ : (x : B) → TopologicalSpace (E x)
inst✝⁵ : FiberBundle F E
inst✝⁴ : VectorBundle 𝕜 F E
inst✝³ : SmoothVectorBundle F E IB
e✝ e' : Trivialization F TotalSpace.proj
inst✝² : MemTrivializationAtlas e✝
inst✝¹ : MemTrivializationAtlas e'
e : Trivialization F TotalSpace.proj
inst✝ : MemTrivializationAtlas e
this :
  SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) IB (fun x => (id x).proj) e.source ∧
    SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) 𝓘(𝕜, F) (fun x => (↑e (id x)).2) e.source
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F)) (↑e) e.source

Next tactic:
exact (this.1.prod_mk this.2).congr fun x hx ↦ (e.mk_proj_snd hx).symm
theorem Trivialization.smoothOn_symm (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
    SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) e.toPartialHomeomorph.symm e.target := by
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²³ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²² : NormedAddCommGroup EB
inst✝²¹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝²⁰ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁹ : TopologicalSpace B
inst✝¹⁸ : ChartedSpace HB B
inst✝¹⁷ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁶ : NormedAddCommGroup EM
inst✝¹⁵ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹⁴ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹³ : TopologicalSpace M
inst✝¹² : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹¹ : (x : B) → AddCommMonoid (E x)
inst✝¹⁰ : (x : B) → Module 𝕜 (E x)
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : TopologicalSpace (TotalSpace F E)
inst✝⁶ : (x : B) → TopologicalSpace (E x)
inst✝⁵ : FiberBundle F E
inst✝⁴ : VectorBundle 𝕜 F E
inst✝³ : SmoothVectorBundle F E IB
e✝ e' : Trivialization F TotalSpace.proj
inst✝² : MemTrivializationAtlas e✝
inst✝¹ : MemTrivializationAtlas e'
e : Trivialization F TotalSpace.proj
inst✝ : MemTrivializationAtlas e
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) (ModelWithCorners.prod IB 𝓘(𝕜, F))
    (↑(PartialHomeomorph.symm e.toPartialHomeomorph)) e.target

Next tactic:
rw [e.smoothOn_iff IB e.toPartialHomeomorph.symm_mapsTo]
theorem Trivialization.smoothOn_symm (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
    SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) e.toPartialHomeomorph.symm e.target := by
  rw [e.smoothOn_iff IB e.toPartialHomeomorph.symm_mapsTo]
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²³ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²² : NormedAddCommGroup EB
inst✝²¹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝²⁰ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁹ : TopologicalSpace B
inst✝¹⁸ : ChartedSpace HB B
inst✝¹⁷ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁶ : NormedAddCommGroup EM
inst✝¹⁵ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹⁴ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹³ : TopologicalSpace M
inst✝¹² : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹¹ : (x : B) → AddCommMonoid (E x)
inst✝¹⁰ : (x : B) → Module 𝕜 (E x)
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : TopologicalSpace (TotalSpace F E)
inst✝⁶ : (x : B) → TopologicalSpace (E x)
inst✝⁵ : FiberBundle F E
inst✝⁴ : VectorBundle 𝕜 F E
inst✝³ : SmoothVectorBundle F E IB
e✝ e' : Trivialization F TotalSpace.proj
inst✝² : MemTrivializationAtlas e✝
inst✝¹ : MemTrivializationAtlas e'
e : Trivialization F TotalSpace.proj
inst✝ : MemTrivializationAtlas e
⊢ SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) IB (fun x => (↑(PartialHomeomorph.symm e.toPartialHomeomorph) x).proj)
      e.target ∧
    SmoothOn (ModelWithCorners.prod IB 𝓘(𝕜, F)) 𝓘(𝕜, F)
      (fun x => (↑e (↑(PartialHomeomorph.symm e.toPartialHomeomorph) x)).2) e.target

Next tactic:
refine ⟨smoothOn_fst.congr fun x hx ↦ e.proj_symm_apply hx, smoothOn_snd.congr fun x hx ↦ ?_⟩
theorem Trivialization.smoothOn_symm (e : Trivialization F (π F E)) [MemTrivializationAtlas e] :
    SmoothOn (IB.prod 𝓘(𝕜, F)) (IB.prod 𝓘(𝕜, F)) e.toPartialHomeomorph.symm e.target := by
  rw [e.smoothOn_iff IB e.toPartialHomeomorph.symm_mapsTo]
  refine ⟨smoothOn_fst.congr fun x hx ↦ e.proj_symm_apply hx, smoothOn_snd.congr fun x hx ↦ ?_⟩
  

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²³ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²² : NormedAddCommGroup EB
inst✝²¹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝²⁰ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁹ : TopologicalSpace B
inst✝¹⁸ : ChartedSpace HB B
inst✝¹⁷ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁶ : NormedAddCommGroup EM
inst✝¹⁵ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹⁴ : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹³ : TopologicalSpace M
inst✝¹² : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝¹¹ : (x : B) → AddCommMonoid (E x)
inst✝¹⁰ : (x : B) → Module 𝕜 (E x)
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
inst✝⁷ : TopologicalSpace (TotalSpace F E)
inst✝⁶ : (x : B) → TopologicalSpace (E x)
inst✝⁵ : FiberBundle F E
inst✝⁴ : VectorBundle 𝕜 F E
inst✝³ : SmoothVectorBundle F E IB
e✝ e' : Trivialization F TotalSpace.proj
inst✝² : MemTrivializationAtlas e✝
inst✝¹ : MemTrivializationAtlas e'
e : Trivialization F TotalSpace.proj
inst✝ : MemTrivializationAtlas e
x : B × F
hx : x ∈ e.target
⊢ (↑e (↑(PartialHomeomorph.symm e.toPartialHomeomorph) x)).2 = x.2

Next tactic:
rw [e.apply_symm_apply hx]
/-- If a `VectorBundleCore` has the `IsSmooth` mixin, then the vector bundle constructed from it
is a smooth vector bundle. -/
instance smoothVectorBundle : SmoothVectorBundle F Z.Fiber IB where
  smoothOn_coordChangeL := by
    

Proof state:
𝕜 : Type u_1
B : Type u_2
B' : Type u_3
F : Type u_4
M : Type u_5
E : B → Type u_6
inst✝²¹ : NontriviallyNormedField 𝕜
EB : Type u_7
inst✝²⁰ : NormedAddCommGroup EB
inst✝¹⁹ : NormedSpace 𝕜 EB
HB : Type u_8
inst✝¹⁸ : TopologicalSpace HB
IB : ModelWithCorners 𝕜 EB HB
inst✝¹⁷ : TopologicalSpace B
inst✝¹⁶ : ChartedSpace HB B
inst✝¹⁵ : SmoothManifoldWithCorners IB B
EM : Type u_9
inst✝¹⁴ : NormedAddCommGroup EM
inst✝¹³ : NormedSpace 𝕜 EM
HM : Type u_10
inst✝¹² : TopologicalSpace HM
IM : ModelWithCorners 𝕜 EM HM
inst✝¹¹ : TopologicalSpace M
inst✝¹⁰ : ChartedSpace HM M
Is : SmoothManifoldWithCorners IM M
n : ℕ∞
inst✝⁹ : (x : B) → AddCommMonoid (E x)
inst✝⁸ : (x : B) → Module 𝕜 (E x)
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
inst✝⁵ : TopologicalSpace (TotalSpace F E)
inst✝⁴ : (x : B) → TopologicalSpace (E x)
inst✝³ : FiberBundle F E
inst✝² : VectorBundle 𝕜 F E
inst✝¹ : SmoothVectorBundle F E IB
ι : Type u_11
Z : VectorBundleCore 𝕜 B F ι
inst✝ : IsSmooth Z IB
⊢ ∀ (e e' : Trivialization F TotalSpace.proj) [inst : MemTrivializationAtlas e] [inst_1 : MemTrivializationAtlas e'],
    SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun b => ↑(Trivialization.coordChangeL 𝕜 e e' b)) (e.baseSet ∩ e'.baseSet)

Next tactic:
rintro - - ⟨i, rfl⟩ ⟨i', rfl⟩