[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'
⊢ (localHomeomorph φ hU hφ h2φ ≫ₕ localHomeomorph φ' hU' hφ' h2φ').toLocalEquiv.source = (U ∩ U') ×ˢ univ
[PROOFSTEP]
dsimp only [FiberwiseLinear.localHomeomorph]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'
⊢ ({
            toLocalEquiv :=
              { toFun := fun x => (x.fst, ↑(φ x.fst) x.snd),
                invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd), source := U ×ˢ univ,
                target := U ×ˢ univ,
                map_source' := (_ : ∀ (_x : B × F), _x ∈ U ×ˢ univ → (_x.fst, ↑(φ _x.fst) _x.snd) ∈ U ×ˢ univ),
                map_target' :=
                  (_ :
                    ∀ (_x : B × F),
                      _x ∈ U ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ _x.fst)) _x.snd) ∈ U ×ˢ univ),
                left_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U ×ˢ univ →
                        (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                            ((fun x => (x.fst, ↑(φ x.fst) x.snd)) x) =
                          x),
                right_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U ×ˢ univ →
                        (fun x => (x.fst, ↑(φ x.fst) x.snd))
                            ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd)) x) =
                          x) },
            open_source := (_ : IsOpen (U ×ˢ univ)), open_target := (_ : IsOpen (U ×ˢ univ)),
            continuous_toFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(φ x.fst) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd), source := U ×ˢ univ,
                      target := U ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U ×ˢ univ → (_x.fst, ↑(φ _x.fst) _x.snd) ∈ U ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ _x.fst)) _x.snd) ∈ U ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(φ x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd)) x) =
                                x) }.source),
            continuous_invFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd), source := U ×ˢ univ,
                      target := U ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U ×ˢ univ → (_x.fst, ↑(φ _x.fst) _x.snd) ∈ U ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ _x.fst)) _x.snd) ∈ U ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(φ x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd)) x) =
                                x) }.target) } ≫ₕ
          {
            toLocalEquiv :=
              { toFun := fun x => (x.fst, ↑(φ' x.fst) x.snd),
                invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd), source := U' ×ˢ univ,
                target := U' ×ˢ univ,
                map_source' := (_ : ∀ (_x : B × F), _x ∈ U' ×ˢ univ → (_x.fst, ↑(φ' _x.fst) _x.snd) ∈ U' ×ˢ univ),
                map_target' :=
                  (_ :
                    ∀ (_x : B × F),
                      _x ∈ U' ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ' _x.fst)) _x.snd) ∈ U' ×ˢ univ),
                left_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U' ×ˢ univ →
                        (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                            ((fun x => (x.fst, ↑(φ' x.fst) x.snd)) x) =
                          x),
                right_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U' ×ˢ univ →
                        (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                            ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd)) x) =
                          x) },
            open_source := (_ : IsOpen (U' ×ˢ univ)), open_target := (_ : IsOpen (U' ×ˢ univ)),
            continuous_toFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ' x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd), source := U' ×ˢ univ,
                      target := U' ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U' ×ˢ univ → (_x.fst, ↑(φ' _x.fst) _x.snd) ∈ U' ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U' ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ' _x.fst)) _x.snd) ∈ U' ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ' x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd)) x) =
                                x) }.source),
            continuous_invFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ' x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd), source := U' ×ˢ univ,
                      target := U' ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U' ×ˢ univ → (_x.fst, ↑(φ' _x.fst) _x.snd) ∈ U' ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U' ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ' _x.fst)) _x.snd) ∈ U' ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ' x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd)) x) =
                                x) }.target) }).toLocalEquiv.source =
    (U ∩ U') ×ˢ univ
[PROOFSTEP]
mfld_set_tac
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'
⊢ (localHomeomorph φ hU hφ h2φ ≫ₕ localHomeomorph φ' hU' hφ' h2φ').toLocalEquiv.target = (U ∩ U') ×ˢ univ
[PROOFSTEP]
dsimp only [FiberwiseLinear.localHomeomorph]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝³ : TopologicalSpace B
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
φ φ' : B → F ≃L[𝕜] F
U U' : Set B
hU : IsOpen U
hφ : ContinuousOn (fun x => ↑(φ x)) U
h2φ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
hU' : IsOpen U'
hφ' : ContinuousOn (fun x => ↑(φ' x)) U'
h2φ' : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'
⊢ ({
            toLocalEquiv :=
              { toFun := fun x => (x.fst, ↑(φ x.fst) x.snd),
                invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd), source := U ×ˢ univ,
                target := U ×ˢ univ,
                map_source' := (_ : ∀ (_x : B × F), _x ∈ U ×ˢ univ → (_x.fst, ↑(φ _x.fst) _x.snd) ∈ U ×ˢ univ),
                map_target' :=
                  (_ :
                    ∀ (_x : B × F),
                      _x ∈ U ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ _x.fst)) _x.snd) ∈ U ×ˢ univ),
                left_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U ×ˢ univ →
                        (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                            ((fun x => (x.fst, ↑(φ x.fst) x.snd)) x) =
                          x),
                right_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U ×ˢ univ →
                        (fun x => (x.fst, ↑(φ x.fst) x.snd))
                            ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd)) x) =
                          x) },
            open_source := (_ : IsOpen (U ×ˢ univ)), open_target := (_ : IsOpen (U ×ˢ univ)),
            continuous_toFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(φ x.fst) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd), source := U ×ˢ univ,
                      target := U ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U ×ˢ univ → (_x.fst, ↑(φ _x.fst) _x.snd) ∈ U ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ _x.fst)) _x.snd) ∈ U ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(φ x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd)) x) =
                                x) }.source),
            continuous_invFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd), source := U ×ˢ univ,
                      target := U ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U ×ˢ univ → (_x.fst, ↑(φ _x.fst) _x.snd) ∈ U ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ _x.fst)) _x.snd) ∈ U ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U ×ˢ univ →
                              (fun x => (x.fst, ↑(φ x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ x.fst)) x.snd)) x) =
                                x) }.target) } ≫ₕ
          {
            toLocalEquiv :=
              { toFun := fun x => (x.fst, ↑(φ' x.fst) x.snd),
                invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd), source := U' ×ˢ univ,
                target := U' ×ˢ univ,
                map_source' := (_ : ∀ (_x : B × F), _x ∈ U' ×ˢ univ → (_x.fst, ↑(φ' _x.fst) _x.snd) ∈ U' ×ˢ univ),
                map_target' :=
                  (_ :
                    ∀ (_x : B × F),
                      _x ∈ U' ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ' _x.fst)) _x.snd) ∈ U' ×ˢ univ),
                left_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U' ×ˢ univ →
                        (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                            ((fun x => (x.fst, ↑(φ' x.fst) x.snd)) x) =
                          x),
                right_inv' :=
                  (_ :
                    ∀ (x : B × F),
                      x ∈ U' ×ˢ univ →
                        (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                            ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd)) x) =
                          x) },
            open_source := (_ : IsOpen (U' ×ˢ univ)), open_target := (_ : IsOpen (U' ×ˢ univ)),
            continuous_toFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ' x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd), source := U' ×ˢ univ,
                      target := U' ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U' ×ˢ univ → (_x.fst, ↑(φ' _x.fst) _x.snd) ∈ U' ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U' ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ' _x.fst)) _x.snd) ∈ U' ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ' x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd)) x) =
                                x) }.source),
            continuous_invFun :=
              (_ :
                ContinuousOn (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                  { toFun := fun x => (x.fst, ↑(φ' x.fst) x.snd),
                      invFun := fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd), source := U' ×ˢ univ,
                      target := U' ×ˢ univ,
                      map_source' := (_ : ∀ (_x : B × F), _x ∈ U' ×ˢ univ → (_x.fst, ↑(φ' _x.fst) _x.snd) ∈ U' ×ˢ univ),
                      map_target' :=
                        (_ :
                          ∀ (_x : B × F),
                            _x ∈ U' ×ˢ univ → (_x.fst, ↑(ContinuousLinearEquiv.symm (φ' _x.fst)) _x.snd) ∈ U' ×ˢ univ),
                      left_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd))
                                  ((fun x => (x.fst, ↑(φ' x.fst) x.snd)) x) =
                                x),
                      right_inv' :=
                        (_ :
                          ∀ (x : B × F),
                            x ∈ U' ×ˢ univ →
                              (fun x => (x.fst, ↑(φ' x.fst) x.snd))
                                  ((fun x => (x.fst, ↑(ContinuousLinearEquiv.symm (φ' x.fst)) x.snd)) x) =
                                x) }.target) }).toLocalEquiv.target =
    (U ∩ U') ×ˢ univ
[PROOFSTEP]
mfld_set_tac
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
h :
  ∀ (p : B × F),
    p ∈ e.source →
      ∃ s,
        IsOpen s ∧
          p ∈ s ∧
            ∃ φ u hu hφ h2φ,
              LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e s)
                (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                  (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
rw [SetCoe.forall'] at h 
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
h :
  ∀ (x : ↑e.source),
    ∃ s,
      IsOpen s ∧
        ↑x ∈ s ∧
          ∃ φ u hu hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e s)
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
choose s hs hsp φ u hu hφ h2φ heφ using h
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
have hesu : ∀ p : e.source, e.source ∩ s p = u p ×ˢ univ :=
  by
  intro p
  rw [← e.restr_source' (s _) (hs _)]
  exact (heφ p).1
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
⊢ ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
[PROOFSTEP]
intro p
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
p : ↑e.source
⊢ e.source ∩ s p = u p ×ˢ univ
[PROOFSTEP]
rw [← e.restr_source' (s _) (hs _)]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
p : ↑e.source
⊢ (LocalHomeomorph.restr e (s p)).toLocalEquiv.source = u p ×ˢ univ
[PROOFSTEP]
exact (heφ p).1
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
have hu' : ∀ p : e.source, (p : B × F).fst ∈ u p := by
  intro p
  have : (p : B × F) ∈ e.source ∩ s p := ⟨p.prop, hsp p⟩
  simpa only [hesu, mem_prod, mem_univ, and_true_iff] using this
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
⊢ ∀ (p : ↑e.source), (↑p).fst ∈ u p
[PROOFSTEP]
intro p
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
p : ↑e.source
⊢ (↑p).fst ∈ u p
[PROOFSTEP]
have : (p : B × F) ∈ e.source ∩ s p := ⟨p.prop, hsp p⟩
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
p : ↑e.source
this : ↑p ∈ e.source ∩ s p
⊢ (↑p).fst ∈ u p
[PROOFSTEP]
simpa only [hesu, mem_prod, mem_univ, and_true_iff] using this
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
have heu : ∀ p : e.source, ∀ q : B × F, q.fst ∈ u p → q ∈ e.source :=
  by
  intro p q hq
  have : q ∈ u p ×ˢ (univ : Set F) := ⟨hq, trivial⟩
  rw [← hesu p] at this 
  exact this.1
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
⊢ ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
[PROOFSTEP]
intro p q hq
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
p : ↑e.source
q : B × F
hq : q.fst ∈ u p
⊢ q ∈ e.source
[PROOFSTEP]
have : q ∈ u p ×ˢ (univ : Set F) := ⟨hq, trivial⟩
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
p : ↑e.source
q : B × F
hq : q.fst ∈ u p
this : q ∈ u p ×ˢ univ
⊢ q ∈ e.source
[PROOFSTEP]
rw [← hesu p] at this 
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
p : ↑e.source
q : B × F
hq : q.fst ∈ u p
this : q ∈ e.source ∩ s p
⊢ q ∈ e.source
[PROOFSTEP]
exact this.1
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
have he : e.source = (Prod.fst '' e.source) ×ˢ (univ : Set F) :=
  by
  apply HasSubset.Subset.antisymm
  · intro p hp
    exact ⟨⟨p, hp, rfl⟩, trivial⟩
  · rintro ⟨x, v⟩ ⟨⟨p, hp, rfl : p.fst = x⟩, -⟩
    exact heu ⟨p, hp⟩ (p.fst, v) (hu' ⟨p, hp⟩)
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
⊢ e.source = (Prod.fst '' e.source) ×ˢ univ
[PROOFSTEP]
apply HasSubset.Subset.antisymm
[GOAL]
case a
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
⊢ e.source ⊆ (Prod.fst '' e.source) ×ˢ univ
[PROOFSTEP]
intro p hp
[GOAL]
case a
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
p : B × F
hp : p ∈ e.source
⊢ p ∈ (Prod.fst '' e.source) ×ˢ univ
[PROOFSTEP]
exact ⟨⟨p, hp, rfl⟩, trivial⟩
[GOAL]
case a
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
⊢ (Prod.fst '' e.source) ×ˢ univ ⊆ e.source
[PROOFSTEP]
rintro ⟨x, v⟩ ⟨⟨p, hp, rfl : p.fst = x⟩, -⟩
[GOAL]
case a.mk.intro.intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
v : F
p : B × F
hp : p ∈ e.source
⊢ (p.fst, v) ∈ e.source
[PROOFSTEP]
exact heu ⟨p, hp⟩ (p.fst, v) (hu' ⟨p, hp⟩)
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
⊢ ∃ U,
    e.source = U ×ˢ univ ∧
      ∀ (x : B),
        x ∈ U →
          ∃ φ u hu _huU _hux hφ h2φ,
            LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
              (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
refine' ⟨Prod.fst '' e.source, he, _⟩
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
⊢ ∀ (x : B),
    x ∈ Prod.fst '' e.source →
      ∃ φ u hu _huU _hux hφ h2φ,
        LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
          (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
rintro x ⟨p, hp, rfl⟩
[GOAL]
case intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
p : B × F
hp : p ∈ e.source
⊢ ∃ φ u hu _huU _hux hφ h2φ,
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
      (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
[PROOFSTEP]
refine' ⟨φ ⟨p, hp⟩, u ⟨p, hp⟩, hu ⟨p, hp⟩, _, hu' _, hφ ⟨p, hp⟩, h2φ ⟨p, hp⟩, _⟩
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
p : B × F
hp : p ∈ e.source
⊢ u { val := p, property := hp } ⊆ Prod.fst '' e.source
[PROOFSTEP]
intro y hy
[GOAL]
case intro.intro.refine'_1
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
p : B × F
hp : p ∈ e.source
y : B
hy : y ∈ u { val := p, property := hp }
⊢ y ∈ Prod.fst '' e.source
[PROOFSTEP]
refine' ⟨(y, 0), heu ⟨p, hp⟩ ⟨_, _⟩ hy, rfl⟩
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
p : B × F
hp : p ∈ e.source
⊢ LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u { val := p, property := hp } ×ˢ univ))
    (FiberwiseLinear.localHomeomorph (φ { val := p, property := hp }) (_ : IsOpen (u { val := p, property := hp }))
      (_ : ContinuousOn (fun x => ↑(φ { val := p, property := hp } x)) (u { val := p, property := hp }))
      (_ :
        ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ { val := p, property := hp } x)))
          (u { val := p, property := hp })))
[PROOFSTEP]
rw [← hesu, e.restr_source_inter]
[GOAL]
case intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
s : ↑e.source → Set (B × F)
hs : ∀ (x : ↑e.source), IsOpen (s x)
hsp : ∀ (x : ↑e.source), ↑x ∈ s x
φ : ↑e.source → B → F ≃L[𝕜] F
u : ↑e.source → Set B
hu : ∀ (x : ↑e.source), IsOpen (u x)
hφ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑e.source), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑e.source),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s x))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
hesu : ∀ (p : ↑e.source), e.source ∩ s p = u p ×ˢ univ
hu' : ∀ (p : ↑e.source), (↑p).fst ∈ u p
heu : ∀ (p : ↑e.source) (q : B × F), q.fst ∈ u p → q ∈ e.source
he : e.source = (Prod.fst '' e.source) ×ˢ univ
p : B × F
hp : p ∈ e.source
⊢ LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (s { val := p, property := hp }))
    (FiberwiseLinear.localHomeomorph (φ { val := p, property := hp }) (_ : IsOpen (u { val := p, property := hp }))
      (_ : ContinuousOn (fun x => ↑(φ { val := p, property := hp } x)) (u { val := p, property := hp }))
      (_ :
        ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ { val := p, property := hp } x)))
          (u { val := p, property := hp })))
[PROOFSTEP]
exact heφ ⟨p, hp⟩
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
h :
  ∀ (x : B),
    x ∈ U →
      ∃ φ u hu _hUu _hux hφ h2φ,
        LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
          (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
classical
rw [SetCoe.forall'] at h 
choose! φ u hu hUu hux hφ h2φ heφ using h
have heuφ : ∀ x : U, EqOn e (fun q => (q.1, φ x q.1 q.2)) (u x ×ˢ univ) := fun x p hp ↦
  by
  refine' (heφ x).2 _
  rw [(heφ x).1]
  exact hp
have huφ : ∀ (x x' : U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y := fun p p' y hyp hyp' ↦
  by
  ext v
  have h1 : e (y, v) = (y, φ p y v) := heuφ _ ⟨(id hyp : (y, v).fst ∈ u p), trivial⟩
  have h2 : e (y, v) = (y, φ p' y v) := heuφ _ ⟨(id hyp' : (y, v).fst ∈ u p'), trivial⟩
  exact congr_arg Prod.snd (h1.symm.trans h2)
have hUu' : U = ⋃ i, u i := by
  ext x
  rw [mem_iUnion]
  refine' ⟨fun h => ⟨⟨x, h⟩, hux _⟩, _⟩
  rintro ⟨x, hx⟩
  exact hUu x hx
have hU' : IsOpen U := by
  rw [hUu']
  apply isOpen_iUnion hu
let Φ₀ : U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ (↑)) huφ U hUu'.le
let Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ ⟨y, hy⟩ else ContinuousLinearEquiv.refl 𝕜 F
have hΦ : ∀ (y) (hy : y ∈ U), Φ y = Φ₀ ⟨y, hy⟩ := fun y hy => dif_pos hy
have hΦφ : ∀ x : U, ∀ y ∈ u x, Φ y = φ x y := by
  intro x y hyu
  refine' (hΦ y (hUu x hyu)).trans _
  exact iUnionLift_mk ⟨y, hyu⟩ _
have hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => (Φ y : F →L[𝕜] F)) U :=
  by
  apply contMDiffOn_of_locally_contMDiffOn
  intro x hx
  refine' ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, _⟩
  refine' (ContMDiffOn.congr (hφ ⟨x, hx⟩) _).mono (inter_subset_right _ _)
  intro y hy
  rw [hΦφ ⟨x, hx⟩ y hy]
have h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ((Φ y).symm : F →L[𝕜] F)) U :=
  by
  apply contMDiffOn_of_locally_contMDiffOn
  intro x hx
  refine' ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, _⟩
  refine' (ContMDiffOn.congr (h2φ ⟨x, hx⟩) _).mono (inter_subset_right _ _)
  intro y hy
  rw [hΦφ ⟨x, hx⟩ y hy]
refine' ⟨Φ, U, hU', hΦ, h2Φ, hU, fun p hp => _⟩
rw [hU] at hp 
rw [heuφ ⟨p.fst, hp.1⟩ ⟨hux _, hp.2⟩]
  -- porting note: replaced `congrm` with manual `congr_arg`
refine congr_arg (Prod.mk _) ?_
rw [hΦφ]
apply hux
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
h :
  ∀ (x : B),
    x ∈ U →
      ∃ φ u hu _hUu _hux hφ h2φ,
        LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
          (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
rw [SetCoe.forall'] at h 
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
h :
  ∀ (x : ↑U),
    ∃ φ u hu _hUu _hux hφ h2φ,
      LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
        (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
choose! φ u hu hUu hux hφ h2φ heφ using h
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have heuφ : ∀ x : U, EqOn e (fun q => (q.1, φ x q.1 q.2)) (u x ×ˢ univ) := fun x p hp ↦
  by
  refine' (heφ x).2 _
  rw [(heφ x).1]
  exact hp
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
x : ↑U
p : B × F
hp : p ∈ u x ×ˢ univ
⊢ ↑e p = (fun q => (q.fst, ↑(φ x q.fst) q.snd)) p
[PROOFSTEP]
refine' (heφ x).2 _
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
x : ↑U
p : B × F
hp : p ∈ u x ×ˢ univ
⊢ p ∈ (LocalHomeomorph.restr e (u x ×ˢ univ)).toLocalEquiv.source
[PROOFSTEP]
rw [(heφ x).1]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
x : ↑U
p : B × F
hp : p ∈ u x ×ˢ univ
⊢ p ∈
    (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
          (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x))).toLocalEquiv.source
[PROOFSTEP]
exact hp
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have huφ : ∀ (x x' : U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y := fun p p' y hyp hyp' ↦
  by
  ext v
  have h1 : e (y, v) = (y, φ p y v) := heuφ _ ⟨(id hyp : (y, v).fst ∈ u p), trivial⟩
  have h2 : e (y, v) = (y, φ p' y v) := heuφ _ ⟨(id hyp' : (y, v).fst ∈ u p'), trivial⟩
  exact congr_arg Prod.snd (h1.symm.trans h2)
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
p p' : ↑U
y : B
hyp : y ∈ u p
hyp' : y ∈ u p'
⊢ φ p y = φ p' y
[PROOFSTEP]
ext v
[GOAL]
case h.h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
p p' : ↑U
y : B
hyp : y ∈ u p
hyp' : y ∈ u p'
v : F
⊢ ↑(φ p y) v = ↑(φ p' y) v
[PROOFSTEP]
have h1 : e (y, v) = (y, φ p y v) := heuφ _ ⟨(id hyp : (y, v).fst ∈ u p), trivial⟩
[GOAL]
case h.h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
p p' : ↑U
y : B
hyp : y ∈ u p
hyp' : y ∈ u p'
v : F
h1 : ↑e (y, v) = (y, ↑(φ p y) v)
⊢ ↑(φ p y) v = ↑(φ p' y) v
[PROOFSTEP]
have h2 : e (y, v) = (y, φ p' y v) := heuφ _ ⟨(id hyp' : (y, v).fst ∈ u p'), trivial⟩
[GOAL]
case h.h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
p p' : ↑U
y : B
hyp : y ∈ u p
hyp' : y ∈ u p'
v : F
h1 : ↑e (y, v) = (y, ↑(φ p y) v)
h2 : ↑e (y, v) = (y, ↑(φ p' y) v)
⊢ ↑(φ p y) v = ↑(φ p' y) v
[PROOFSTEP]
exact congr_arg Prod.snd (h1.symm.trans h2)
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have hUu' : U = ⋃ i, u i := by
  ext x
  rw [mem_iUnion]
  refine' ⟨fun h => ⟨⟨x, h⟩, hux _⟩, _⟩
  rintro ⟨x, hx⟩
  exact hUu x hx
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
⊢ U = ⋃ (i : ↑U), u i
[PROOFSTEP]
ext x
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
x : B
⊢ x ∈ U ↔ x ∈ ⋃ (i : ↑U), u i
[PROOFSTEP]
rw [mem_iUnion]
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
x : B
⊢ x ∈ U ↔ ∃ i, x ∈ u i
[PROOFSTEP]
refine' ⟨fun h => ⟨⟨x, h⟩, hux _⟩, _⟩
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
x : B
⊢ (∃ i, x ∈ u i) → x ∈ U
[PROOFSTEP]
rintro ⟨x, hx⟩
[GOAL]
case h.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
x✝ : B
x : ↑U
hx : x✝ ∈ u x
⊢ x✝ ∈ U
[PROOFSTEP]
exact hUu x hx
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have hU' : IsOpen U := by
  rw [hUu']
  apply isOpen_iUnion hu
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
⊢ IsOpen U
[PROOFSTEP]
rw [hUu']
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
⊢ IsOpen (⋃ (i : ↑U), u i)
[PROOFSTEP]
apply isOpen_iUnion hu
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
let Φ₀ : U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ (↑)) huφ U hUu'.le
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
let Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ ⟨y, hy⟩ else ContinuousLinearEquiv.refl 𝕜 F
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have hΦ : ∀ (y) (hy : y ∈ U), Φ y = Φ₀ ⟨y, hy⟩ := fun y hy => dif_pos hy
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have hΦφ : ∀ x : U, ∀ y ∈ u x, Φ y = φ x y := by
  intro x y hyu
  refine' (hΦ y (hUu x hyu)).trans _
  exact iUnionLift_mk ⟨y, hyu⟩ _
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
⊢ ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
[PROOFSTEP]
intro x y hyu
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
x : ↑U
y : B
hyu : y ∈ u x
⊢ Φ y = φ x y
[PROOFSTEP]
refine' (hΦ y (hUu x hyu)).trans _
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
x : ↑U
y : B
hyu : y ∈ u x
⊢ Φ₀ { val := y, property := (_ : y ∈ U) } = φ x y
[PROOFSTEP]
exact iUnionLift_mk ⟨y, hyu⟩ _
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => (Φ y : F →L[𝕜] F)) U :=
  by
  apply contMDiffOn_of_locally_contMDiffOn
  intro x hx
  refine' ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, _⟩
  refine' (ContMDiffOn.congr (hφ ⟨x, hx⟩) _).mono (inter_subset_right _ _)
  intro y hy
  rw [hΦφ ⟨x, hx⟩ y hy]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
[PROOFSTEP]
apply contMDiffOn_of_locally_contMDiffOn
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
⊢ ∀ (x : B), x ∈ U → ∃ u, IsOpen u ∧ x ∈ u ∧ ContMDiffOn IB 𝓘(𝕜, F →L[𝕜] F) ⊤ (fun y => ↑(Φ y)) (U ∩ u)
[PROOFSTEP]
intro x hx
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
x : B
hx : x ∈ U
⊢ ∃ u, IsOpen u ∧ x ∈ u ∧ ContMDiffOn IB 𝓘(𝕜, F →L[𝕜] F) ⊤ (fun y => ↑(Φ y)) (U ∩ u)
[PROOFSTEP]
refine' ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, _⟩
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
x : B
hx : x ∈ U
⊢ ContMDiffOn IB 𝓘(𝕜, F →L[𝕜] F) ⊤ (fun y => ↑(Φ y)) (U ∩ u { val := x, property := hx })
[PROOFSTEP]
refine' (ContMDiffOn.congr (hφ ⟨x, hx⟩) _).mono (inter_subset_right _ _)
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
x : B
hx : x ∈ U
⊢ ∀ (y : B), y ∈ u { val := x, property := hx } → ↑(Φ y) = ↑(φ { val := x, property := hx } y)
[PROOFSTEP]
intro y hy
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
x : B
hx : x ∈ U
y : B
hy : y ∈ u { val := x, property := hx }
⊢ ↑(Φ y) = ↑(φ { val := x, property := hx } y)
[PROOFSTEP]
rw [hΦφ ⟨x, hx⟩ y hy]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
have h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ((Φ y).symm : F →L[𝕜] F)) U :=
  by
  apply contMDiffOn_of_locally_contMDiffOn
  intro x hx
  refine' ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, _⟩
  refine' (ContMDiffOn.congr (h2φ ⟨x, hx⟩) _).mono (inter_subset_right _ _)
  intro y hy
  rw [hΦφ ⟨x, hx⟩ y hy]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
[PROOFSTEP]
apply contMDiffOn_of_locally_contMDiffOn
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
⊢ ∀ (x : B),
    x ∈ U →
      ∃ u, IsOpen u ∧ x ∈ u ∧ ContMDiffOn IB 𝓘(𝕜, F →L[𝕜] F) ⊤ (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) (U ∩ u)
[PROOFSTEP]
intro x hx
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
x : B
hx : x ∈ U
⊢ ∃ u, IsOpen u ∧ x ∈ u ∧ ContMDiffOn IB 𝓘(𝕜, F →L[𝕜] F) ⊤ (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) (U ∩ u)
[PROOFSTEP]
refine' ⟨u ⟨x, hx⟩, hu ⟨x, hx⟩, hux _, _⟩
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
x : B
hx : x ∈ U
⊢ ContMDiffOn IB 𝓘(𝕜, F →L[𝕜] F) ⊤ (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) (U ∩ u { val := x, property := hx })
[PROOFSTEP]
refine' (ContMDiffOn.congr (h2φ ⟨x, hx⟩) _).mono (inter_subset_right _ _)
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
x : B
hx : x ∈ U
⊢ ∀ (y : B),
    y ∈ u { val := x, property := hx } →
      ↑(ContinuousLinearEquiv.symm (Φ y)) = ↑(ContinuousLinearEquiv.symm (φ { val := x, property := hx } y))
[PROOFSTEP]
intro y hy
[GOAL]
case h
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
x : B
hx : x ∈ U
y : B
hy : y ∈ u { val := x, property := hx }
⊢ ↑(ContinuousLinearEquiv.symm (Φ y)) = ↑(ContinuousLinearEquiv.symm (φ { val := x, property := hx } y))
[PROOFSTEP]
rw [hΦφ ⟨x, hx⟩ y hy]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
⊢ ∃ Φ U hU₀ hΦ h2Φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph Φ hU₀ (_ : ContinuousOn (fun x => ↑(Φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
[PROOFSTEP]
refine' ⟨Φ, U, hU', hΦ, h2Φ, hU, fun p hp => _⟩
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
p : B × F
hp : p ∈ e.source
⊢ ↑e p =
    ↑(FiberwiseLinear.localHomeomorph Φ hU' (_ : ContinuousOn (fun x => ↑(Φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
      p
[PROOFSTEP]
rw [hU] at hp 
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
p : B × F
hp : p ∈ U ×ˢ univ
⊢ ↑e p =
    ↑(FiberwiseLinear.localHomeomorph Φ hU' (_ : ContinuousOn (fun x => ↑(Φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
      p
[PROOFSTEP]
rw [heuφ ⟨p.fst, hp.1⟩ ⟨hux _, hp.2⟩]
  -- porting note: replaced `congrm` with manual `congr_arg`
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
p : B × F
hp : p ∈ U ×ˢ univ
⊢ (fun q => (q.fst, ↑(φ { val := p.fst, property := (_ : p.fst ∈ U) } q.fst) q.snd)) p =
    ↑(FiberwiseLinear.localHomeomorph Φ hU' (_ : ContinuousOn (fun x => ↑(Φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (Φ x))) U))
      p
[PROOFSTEP]
refine congr_arg (Prod.mk _) ?_
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
p : B × F
hp : p ∈ U ×ˢ univ
⊢ ↑(φ { val := p.fst, property := (_ : p.fst ∈ U) } p.fst) p.snd = ↑(Φ p.fst) p.snd
[PROOFSTEP]
rw [hΦφ]
[GOAL]
case a
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
U : Set B
hU : e.source = U ×ˢ univ
φ : ↑U → B → F ≃L[𝕜] F
u : ↑U → Set B
hu : ∀ (x : ↑U), IsOpen (u x)
hUu : ∀ (x : ↑U), u x ⊆ U
hux : ∀ (x : ↑U), ↑x ∈ u x
hφ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(φ x x_1)) (u x)
h2φ : ∀ (x : ↑U), SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)
heφ :
  ∀ (x : ↑U),
    LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u x ×ˢ univ))
      (FiberwiseLinear.localHomeomorph (φ x) (_ : IsOpen (u x)) (_ : ContinuousOn (fun x_1 => ↑(φ x x_1)) (u x))
        (_ : ContinuousOn (fun x_1 => ↑(ContinuousLinearEquiv.symm (φ x x_1))) (u x)))
heuφ : ∀ (x : ↑U), EqOn (↑e) (fun q => (q.fst, ↑(φ x q.fst) q.snd)) (u x ×ˢ univ)
huφ : ∀ (x x' : ↑U) (y : B), y ∈ u x → y ∈ u x' → φ x y = φ x' y
hUu' : U = ⋃ (i : ↑U), u i
hU' : IsOpen U
Φ₀ : ↑U → F ≃L[𝕜] F := iUnionLift u (fun x => φ x ∘ Subtype.val) huφ U (_ : U ≤ ⋃ (i : ↑U), u i)
Φ : B → F ≃L[𝕜] F := fun y => if hy : y ∈ U then Φ₀ { val := y, property := hy } else ContinuousLinearEquiv.refl 𝕜 F
hΦ✝ : ∀ (y : B) (hy : y ∈ U), Φ y = Φ₀ { val := y, property := hy }
hΦφ : ∀ (x : ↑U) (y : B), y ∈ u x → Φ y = φ x y
hΦ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(Φ y)) U
h2Φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun y => ↑(ContinuousLinearEquiv.symm (Φ y))) U
p : B × F
hp : p ∈ U ×ˢ univ
⊢ p.fst ∈ u { val := p.fst, property := (_ : p.fst ∈ U) }
[PROOFSTEP]
apply hux
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
⊢ e ∈
      ⋃ (φ : 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),
        {e |
          LocalHomeomorph.EqOnSource e
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))} ↔
    ∃ φ U hU hφ h2φ,
      LocalHomeomorph.EqOnSource e
        (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
simp only [mem_iUnion, mem_setOf_eq]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ ∀ (e e' : LocalHomeomorph (B × F) (B × F)),
    e ∈
        ⋃ (φ : 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),
          {e |
            LocalHomeomorph.EqOnSource e
              (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))} →
      e' ∈
          ⋃ (φ : 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),
            {e |
              LocalHomeomorph.EqOnSource e
                (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                  (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))} →
        e ≫ₕ e' ∈
          ⋃ (φ : 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),
            {e |
              LocalHomeomorph.EqOnSource e
                (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                  (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
[PROOFSTEP]
simp only [mem_aux]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ ∀ (e e' : LocalHomeomorph (B × F) (B × F)),
    (∃ φ U hU hφ h2φ,
        LocalHomeomorph.EqOnSource e
          (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))) →
      (∃ φ U hU hφ h2φ,
          LocalHomeomorph.EqOnSource e'
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))) →
        ∃ φ U hU hφ h2φ,
          LocalHomeomorph.EqOnSource (e ≫ₕ e')
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
rintro e e' ⟨φ, U, hU, hφ, h2φ, heφ⟩ ⟨φ', U', hU', hφ', h2φ', heφ'⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ ∃ φ U hU hφ h2φ,
    LocalHomeomorph.EqOnSource (e ≫ₕ e')
      (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
refine'
  ⟨fun b => (φ b).trans (φ' b), _, hU.inter hU', _, _, Setoid.trans (LocalHomeomorph.EqOnSource.trans' heφ heφ') ⟨_, _⟩⟩
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)) (U ∩ U')
[PROOFSTEP]
show SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x : B => (φ' x).toContinuousLinearMap ∘L (φ x).toContinuousLinearMap) (U ∩ U')
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_1
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ContinuousLinearMap.comp ↑(φ' x) ↑(φ x)) (U ∩ U')
[PROOFSTEP]
exact (hφ'.mono <| inter_subset_right _ _).clm_comp (hφ.mono <| inter_subset_left _ _)
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F)
    (fun x => ↑(ContinuousLinearEquiv.symm ((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x))) (U ∩ U')
[PROOFSTEP]
show
  SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x : B => (φ x).symm.toContinuousLinearMap ∘L (φ' x).symm.toContinuousLinearMap)
    (U ∩ U')
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_2
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F)
    (fun x => ContinuousLinearMap.comp ↑(ContinuousLinearEquiv.symm (φ x)) ↑(ContinuousLinearEquiv.symm (φ' x)))
    (U ∩ U')
[PROOFSTEP]
exact (h2φ.mono <| inter_subset_left _ _).clm_comp (h2φ'.mono <| inter_subset_right _ _)
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U) ≫ₕ
          FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U')).toLocalEquiv.source =
    (FiberwiseLinear.localHomeomorph (fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) (_ : IsOpen (U ∩ U'))
          (_ : ContinuousOn (fun x => ↑((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)) (U ∩ U'))
          (_ :
            ContinuousOn
              (fun x => ↑(ContinuousLinearEquiv.symm ((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)))
              (U ∩ U'))).toLocalEquiv.source
[PROOFSTEP]
apply FiberwiseLinear.source_trans_localHomeomorph
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_4
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
⊢ EqOn
    (↑(FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U) ≫ₕ
        FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U')))
    (↑(FiberwiseLinear.localHomeomorph (fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) (_ : IsOpen (U ∩ U'))
        (_ : ContinuousOn (fun x => ↑((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)) (U ∩ U'))
        (_ :
          ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm ((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)))
            (U ∩ U'))))
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U) ≫ₕ
          FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U')).toLocalEquiv.source
[PROOFSTEP]
rintro ⟨b, v⟩ -
[GOAL]
case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refine'_4.mk
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
φ' : 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φ' :
  LocalHomeomorph.EqOnSource e'
    (FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
b : B
v : F
⊢ ↑(FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U) ≫ₕ
          FiberwiseLinear.localHomeomorph φ' hU' (_ : ContinuousOn (fun x => ↑(φ' x)) U')
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ' x))) U'))
      (b, v) =
    ↑(FiberwiseLinear.localHomeomorph (fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) (_ : IsOpen (U ∩ U'))
          (_ : ContinuousOn (fun x => ↑((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)) (U ∩ U'))
          (_ :
            ContinuousOn
              (fun x => ↑(ContinuousLinearEquiv.symm ((fun b => ContinuousLinearEquiv.trans (φ b) (φ' b)) x)))
              (U ∩ U')))
      (b, v)
[PROOFSTEP]
apply FiberwiseLinear.trans_localHomeomorph_apply
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
⊢ e ∈
      ⋃ (φ : 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),
        {e |
          LocalHomeomorph.EqOnSource e
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))} →
    LocalHomeomorph.symm e ∈
      ⋃ (φ : 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),
        {e |
          LocalHomeomorph.EqOnSource e
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
[PROOFSTEP]
simp only [mem_iUnion]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
⊢ (∃ i i_1 h h_1 i_2,
      e ∈
        {e |
          LocalHomeomorph.EqOnSource e
            (FiberwiseLinear.localHomeomorph i (_ : IsOpen i_1) (_ : ContinuousOn (fun x => ↑(i x)) i_1)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (i x))) i_1))}) →
    ∃ i i_1 h h_1 i_2,
      LocalHomeomorph.symm e ∈
        {e |
          LocalHomeomorph.EqOnSource e
            (FiberwiseLinear.localHomeomorph i (_ : IsOpen i_1) (_ : ContinuousOn (fun x => ↑(i x)) i_1)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (i x))) i_1))}
[PROOFSTEP]
rintro ⟨φ, U, hU, hφ, h2φ, heφ⟩
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (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φ :
  e ∈
    {e |
      LocalHomeomorph.EqOnSource e
        (FiberwiseLinear.localHomeomorph φ (_ : IsOpen U) (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
⊢ ∃ i i_1 h h_1 i_2,
    LocalHomeomorph.symm e ∈
      {e |
        LocalHomeomorph.EqOnSource e
          (FiberwiseLinear.localHomeomorph i (_ : IsOpen i_1) (_ : ContinuousOn (fun x => ↑(i x)) i_1)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (i x))) i_1))}
[PROOFSTEP]
refine' ⟨fun b => (φ b).symm, U, hU, h2φ, _, LocalHomeomorph.EqOnSource.symm' heφ⟩
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (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φ :
  e ∈
    {e |
      LocalHomeomorph.EqOnSource e
        (FiberwiseLinear.localHomeomorph φ (_ : IsOpen U) (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm ((fun b => ContinuousLinearEquiv.symm (φ b)) x))) U
[PROOFSTEP]
simp_rw [ContinuousLinearEquiv.symm_symm]
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (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φ :
  e ∈
    {e |
      LocalHomeomorph.EqOnSource e
        (FiberwiseLinear.localHomeomorph φ (_ : IsOpen U) (_ : ContinuousOn (fun x => ↑(φ x)) U)
          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
⊢ SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) U
[PROOFSTEP]
exact hφ
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ LocalHomeomorph.refl (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),
      {e |
        LocalHomeomorph.EqOnSource e
          (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
[PROOFSTEP]
refine mem_iUnion.2 ⟨fun _ ↦ .refl 𝕜 F, mem_iUnion.2 ⟨univ, mem_iUnion.2 ⟨isOpen_univ, ?_⟩⟩⟩
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ LocalHomeomorph.refl (B × F) ∈
    ⋃ (hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)) univ) (h2φ :
      SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm ((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)))
        univ),
      {e |
        LocalHomeomorph.EqOnSource e
          (FiberwiseLinear.localHomeomorph (fun x => ContinuousLinearEquiv.refl 𝕜 F) (_ : IsOpen univ)
            (_ : ContinuousOn (fun x => ↑((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)) univ)
            (_ :
              ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm ((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)))
                univ))}
[PROOFSTEP]
refine mem_iUnion.2 ⟨contMDiffOn_const, mem_iUnion.2 ⟨contMDiffOn_const, ?_, ?_⟩⟩
[GOAL]
case refine_1
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ (LocalHomeomorph.refl (B × F)).toLocalEquiv.source =
    (FiberwiseLinear.localHomeomorph (fun x => ContinuousLinearEquiv.refl 𝕜 F) (_ : IsOpen univ)
          (_ : ContinuousOn (fun x => ↑((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)) univ)
          (_ :
            ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm ((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)))
              univ)).toLocalEquiv.source
[PROOFSTEP]
simp only [FiberwiseLinear.localHomeomorph, LocalHomeomorph.refl_localEquiv, LocalEquiv.refl_source, univ_prod_univ]
[GOAL]
case refine_2
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ EqOn (↑(LocalHomeomorph.refl (B × F)))
    (↑(FiberwiseLinear.localHomeomorph (fun x => ContinuousLinearEquiv.refl 𝕜 F) (_ : IsOpen univ)
        (_ : ContinuousOn (fun x => ↑((fun x => ContinuousLinearEquiv.refl 𝕜 F) x)) univ)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm ((fun x => ContinuousLinearEquiv.refl 𝕜 F) x))) univ)))
    (LocalHomeomorph.refl (B × F)).toLocalEquiv.source
[PROOFSTEP]
exact eqOn_refl id _
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ ∀ (e : LocalHomeomorph (B × F) (B × F)),
    (∀ (x : B × F),
        x ∈ e.source →
          ∃ s,
            IsOpen s ∧
              x ∈ s ∧
                LocalHomeomorph.restr e s ∈
                  ⋃ (φ : 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),
                    {e |
                      LocalHomeomorph.EqOnSource e
                        (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                          (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}) →
      e ∈
        ⋃ (φ : 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),
          {e |
            LocalHomeomorph.EqOnSource e
              (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
[PROOFSTEP]
simp only [mem_aux]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ ∀ (e : LocalHomeomorph (B × F) (B × F)),
    (∀ (x : B × F),
        x ∈ e.source →
          ∃ s,
            IsOpen s ∧
              x ∈ s ∧
                ∃ φ U hU hφ h2φ,
                  LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e s)
                    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))) →
      ∃ φ U hU hφ h2φ,
        LocalHomeomorph.EqOnSource e
          (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
intro e he
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
he :
  ∀ (x : B × F),
    x ∈ e.source →
      ∃ s,
        IsOpen s ∧
          x ∈ s ∧
            ∃ φ U hU hφ h2φ,
              LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e s)
                (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                  (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
⊢ ∃ φ U hU hφ h2φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
obtain ⟨U, hU, h⟩ := SmoothFiberwiseLinear.locality_aux₁ e he
[GOAL]
case intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e : LocalHomeomorph (B × F) (B × F)
he :
  ∀ (x : B × F),
    x ∈ e.source →
      ∃ s,
        IsOpen s ∧
          x ∈ s ∧
            ∃ φ U hU hφ h2φ,
              LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e s)
                (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                  (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
U : Set B
hU : e.source = U ×ˢ univ
h :
  ∀ (x : B),
    x ∈ U →
      ∃ φ u hu _huU _hux hφ h2φ,
        LocalHomeomorph.EqOnSource (LocalHomeomorph.restr e (u ×ˢ univ))
          (FiberwiseLinear.localHomeomorph φ hu (_ : ContinuousOn (fun x => ↑(φ x)) u)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) u))
⊢ ∃ φ U hU hφ h2φ,
    LocalHomeomorph.EqOnSource e
      (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
exact SmoothFiberwiseLinear.locality_aux₂ e U hU h
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ ∀ (e e' : LocalHomeomorph (B × F) (B × F)),
    e ∈
        ⋃ (φ : 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),
          {e |
            LocalHomeomorph.EqOnSource e
              (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))} →
      e' ≈ e →
        e' ∈
          ⋃ (φ : 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),
            {e |
              LocalHomeomorph.EqOnSource e
                (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
                  (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))}
[PROOFSTEP]
simp only [mem_aux]
[GOAL]
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
⊢ ∀ (e e' : LocalHomeomorph (B × F) (B × F)),
    (∃ φ U hU hφ h2φ,
        LocalHomeomorph.EqOnSource e
          (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
            (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))) →
      e' ≈ e →
        ∃ φ U hU hφ h2φ,
          LocalHomeomorph.EqOnSource e'
            (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
              (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
rintro e e' ⟨φ, U, hU, hφ, h2φ, heφ⟩ hee'
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
B : Type u_2
F : Type u_3
inst✝⁷ : TopologicalSpace B
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
EB : Type u_4
inst✝³ : NormedAddCommGroup EB
inst✝² : NormedSpace 𝕜 EB
HB : Type u_5
inst✝¹ : TopologicalSpace HB
inst✝ : ChartedSpace HB B
IB : ModelWithCorners 𝕜 EB HB
e e' : LocalHomeomorph (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φ :
  LocalHomeomorph.EqOnSource e
    (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
      (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
hee' : e' ≈ e
⊢ ∃ φ U hU hφ h2φ,
    LocalHomeomorph.EqOnSource e'
      (FiberwiseLinear.localHomeomorph φ hU (_ : ContinuousOn (fun x => ↑(φ x)) U)
        (_ : ContinuousOn (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U))
[PROOFSTEP]
exact ⟨φ, U, hU, hφ, h2φ, Setoid.trans hee' heφ⟩
