Theorem: Trivialization.contMDiffOn_iff
File: Mathlib/Geometry/Manifold/VectorBundle/Basic.lean

Proof steps:
state_before: 𝕜 : 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 (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
state_after: 𝕜 : 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 (IB.prod 𝓘(𝕜, 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
tactic: simp only [ContMDiffOn, ← forall_and]
state_before: 𝕜 : 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 (IB.prod 𝓘(𝕜, 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
state_after: no goals
tactic: exact forall₂_congr fun x hx ↦ e.contMDiffWithinAt_iff IB (he hx)