/-- For `B` a manifold and `F` a normed space, the groupoid on `B × F` consisting of local
homeomorphisms which are bi-smooth and fiberwise linear, and induce the identity on `B`.
When a (topological) vector bundle is smooth, then the composition of charts associated
to the vector bundle belong to this groupoid. -/
def smoothFiberwiseLinear : StructureGroupoid (B × F) where
  members :=
    ⋃ (φ : B → F ≃L[𝕜] F) (U : Set B) (hU : IsOpen U)
      (hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => φ x : B → F →L[𝕜] F) U)
      (h2φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => (φ x).symm : B → F →L[𝕜] F) U),
        {e | e.EqOnSource (FiberwiseLinear.localHomeomorph φ hU hφ.continuousOn h2φ.continuousOn)}
  trans' := by
    simp only [mem_aux]
    rintro e e' ⟨φ, U, hU, hφ, h2φ, heφ⟩ ⟨φ', U', hU', hφ', h2φ', heφ'⟩
    refine' ⟨fun b => (φ b).trans (φ' b), _, hU.inter hU', _, _,
      Setoid.trans (PartialHomeomorph.EqOnSource.trans' heφ heφ') ⟨_, _⟩⟩
    · show
        SmoothOn IB 𝓘(𝕜, F →L[𝕜] F)
          (fun x : B => (φ' x).toContinuousLinearMap ∘L (φ x).toContinuousLinearMap) (U ∩ U')
      exact (hφ'.mono <| inter_subset_right _ _).clm_comp (hφ.mono <| inter_subset_left _ _)
    · show
        SmoothOn IB 𝓘(𝕜, F →L[𝕜] F)
          (fun x : B => (φ x).symm.toContinuousLinearMap ∘L (φ' x).symm.toContinuousLinearMap)
          (U ∩ U')
      exact (h2φ.mono <| inter_subset_left _ _).clm_comp (h2φ'.mono <| inter_subset_right _ _)
    · apply FiberwiseLinear.source_trans_localHomeomorph
    · rintro ⟨b, v⟩ -; 

Proof state:
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' : PartialHomeomorph (B × F) (B × F)
φ : B → F ≃L[𝕜] F
U : Set B
hU : IsOpen U
hφ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(φ x)) U
h2φ : SmoothOn IB 𝓘(𝕜, F →L[𝕜] F) (fun x => ↑(ContinuousLinearEquiv.symm (φ x))) U
heφ :
  PartialHomeomorph.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φ' :
  PartialHomeomorph.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)

Next tactic:
apply FiberwiseLinear.trans_localHomeomorph_apply