/-- Let `M` be a smooth manifold with corners modelled on a finite dimensional real vector space.
Suppose also that `M` is a Hausdorff `σ`-compact topological space. Let `s` be a closed set
in `M` and `U : M → Set M` be a collection of sets such that `U x ∈ 𝓝 x` for every `x ∈ s`.
Then there exists a smooth bump covering of `s` that is subordinate to `U`. -/
theorem exists_isSubordinate [T2Space M] [SigmaCompactSpace M] (hs : IsClosed s)
    (hU : ∀ x ∈ s, U x ∈ 𝓝 x) :
    ∃ (ι : Type uM) (f : SmoothBumpCovering ι I M s), f.IsSubordinate U := by
  -- First we deduce some missing instances
  haveI : LocallyCompactSpace H := I.locallyCompactSpace
  haveI : LocallyCompactSpace M := ChartedSpace.locallyCompactSpace H M
  -- Next we choose a covering by supports of smooth bump functions
  have hB := fun x hx => SmoothBumpFunction.nhds_basis_support I (hU x hx)
  rcases refinement_of_locallyCompact_sigmaCompact_of_nhds_basis_set hs hB with
    ⟨ι, c, f, hf, hsub', hfin⟩
  choose hcs hfU using hf
  -- Then we use the shrinking lemma to get a covering by smaller open
  rcases exists_subset_iUnion_closed_subset hs (fun i => (f i).isOpen_support)
    (fun x _ => hfin.point_finite x) hsub' with ⟨V, hsV, hVc, hVf⟩
  choose r hrR hr using fun i => (f i).exists_r_pos_lt_subset_ball (hVc i) (hVf i)
  refine' ⟨ι, ⟨c, fun i => (f i).updateRIn (r i) (hrR i), hcs, _, fun x hx => _⟩, fun i => _⟩
  · simpa only [SmoothBumpFunction.support_updateRIn]
  · refine' (mem_iUnion.1 <| hsV hx).imp fun i hi => _
    exact ((f i).updateRIn _ _).eventuallyEq_one_of_dist_lt
      ((f i).support_subset_source <| hVf _ hi) (hr i hi).2
  · 

Proof state:
case intro.intro.intro.intro.intro.intro.intro.intro.refine'_3
ι✝ : Type uι
E : Type uE
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : FiniteDimensional ℝ E
F : Type uF
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
H : Type uH
inst✝⁵ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝⁴ : TopologicalSpace M
inst✝³ : ChartedSpace H M
inst✝² : SmoothManifoldWithCorners I M
s : Set M
U : M → Set M
fs : SmoothBumpCovering ι✝ I M s
inst✝¹ : T2Space M
inst✝ : SigmaCompactSpace M
hs : IsClosed s
hU : ∀ x ∈ s, U x ∈ 𝓝 x
this✝ : LocallyCompactSpace H
this : LocallyCompactSpace M
hB : ∀ x ∈ s, HasBasis (𝓝 x) (fun f => tsupport ↑f ⊆ U x) fun f => support ↑f
ι : Type uM
c : ι → M
f : (a : ι) → SmoothBumpFunction I (c a)
hsub' : s ⊆ ⋃ a, support ↑(f a)
hfin : LocallyFinite fun a => support ↑(f a)
hcs : ∀ (a : ι), c a ∈ s
hfU : ∀ (a : ι), tsupport ↑(f a) ⊆ U (c a)
V : ι → Set M
hsV : s ⊆ iUnion V
hVc : ∀ (i : ι), IsClosed (V i)
hVf : ∀ (i : ι), V i ⊆ support ↑(f i)
r : ι → ℝ
hrR : ∀ (i : ι), r i ∈ Ioo 0 (f i).rOut
hr :
  ∀ (i : ι),
    V i ⊆
      (chartAt H (c i)).toPartialEquiv.source ∩
        ↑(extChartAt I (c i)) ⁻¹' Metric.ball (↑(extChartAt I (c i)) (c i)) (r i)
i : ι
⊢ tsupport
      ↑(toFun s
          (mk s c (fun i => SmoothBumpFunction.updateRIn (f i) (r i) (_ : r i ∈ Ioo 0 (f i).rOut)) hcs
            (_ :
              LocallyFinite fun i =>
                support ↑((fun i => SmoothBumpFunction.updateRIn (f i) (r i) (_ : r i ∈ Ioo 0 (f i).rOut)) i))
            (_ :
              ∀ x ∈ s,
                ∃ a, ↑((fun i => SmoothBumpFunction.updateRIn (f i) (r i) (_ : r i ∈ Ioo 0 (f i).rOut)) a) =ᶠ[𝓝 x] 1))
          i) ⊆
    U
      (SmoothBumpCovering.c s
        (mk s c (fun i => SmoothBumpFunction.updateRIn (f i) (r i) (_ : r i ∈ Ioo 0 (f i).rOut)) hcs
          (_ :
            LocallyFinite fun i =>
              support ↑((fun i => SmoothBumpFunction.updateRIn (f i) (r i) (_ : r i ∈ Ioo 0 (f i).rOut)) i))
          (_ :
            ∀ x ∈ s,
              ∃ a, ↑((fun i => SmoothBumpFunction.updateRIn (f i) (r i) (_ : r i ∈ Ioo 0 (f i).rOut)) a) =ᶠ[𝓝 x] 1))
        i)

Next tactic:
simpa only [SmoothBumpFunction.support_updateRIn, tsupport] using hfU i