/-- Inclusion of the groupoid of `C^n` local diffeos in the groupoid of `C^m` local diffeos when
`m ≤ n` -/
theorem contDiffGroupoid_le (h : m ≤ n) : contDiffGroupoid n I ≤ contDiffGroupoid m I := by
  rw [contDiffGroupoid, contDiffGroupoid]
  apply groupoid_of_pregroupoid_le
  

Proof state:
case h
m n : ℕ∞
𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
H : Type u_3
inst✝¹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝ : TopologicalSpace M
h : m ≤ n
⊢ ∀ (f : H → H) (s : Set H),
    Pregroupoid.property
        {
          property := fun f s =>
            ContDiffOn 𝕜 n (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' s ∩ range ↑I),
          comp :=
            (_ :
              ∀ {f g : H → H} {u v : Set H},
                ContDiffOn 𝕜 n (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I) →
                  ContDiffOn 𝕜 n (↑I ∘ g ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' v ∩ range ↑I) →
                    IsOpen u →
                      IsOpen v →
                        IsOpen (u ∩ f ⁻¹' v) →
                          (fun f s =>
                              ContDiffOn 𝕜 n (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                (↑(ModelWithCorners.symm I) ⁻¹' s ∩ range ↑I))
                            (g ∘ f) (u ∩ f ⁻¹' v)),
          id_mem :=
            (_ :
              ContDiffOn 𝕜 n (↑I ∘ id ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' univ ∩ range ↑I)),
          locality :=
            (_ :
              ∀ {f : H → H} {u : Set H},
                IsOpen u →
                  (∀ x ∈ u,
                      ∃ v,
                        IsOpen v ∧
                          x ∈ v ∧
                            (fun f s =>
                                ContDiffOn 𝕜 n (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                  (↑(ModelWithCorners.symm I) ⁻¹' s ∩ range ↑I))
                              f (u ∩ v)) →
                    ContDiffOn 𝕜 n (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I)),
          congr :=
            (_ :
              ∀ {f g : H → H} {u : Set H},
                IsOpen u →
                  (∀ x ∈ u, g x = f x) →
                    ContDiffOn 𝕜 n (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I) →
                      ContDiffOn 𝕜 n (↑I ∘ g ∘ ↑(ModelWithCorners.symm I))
                        (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I)) }
        f s →
      Pregroupoid.property
        {
          property := fun f s =>
            ContDiffOn 𝕜 m (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' s ∩ range ↑I),
          comp :=
            (_ :
              ∀ {f g : H → H} {u v : Set H},
                ContDiffOn 𝕜 m (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I) →
                  ContDiffOn 𝕜 m (↑I ∘ g ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' v ∩ range ↑I) →
                    IsOpen u →
                      IsOpen v →
                        IsOpen (u ∩ f ⁻¹' v) →
                          (fun f s =>
                              ContDiffOn 𝕜 m (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                (↑(ModelWithCorners.symm I) ⁻¹' s ∩ range ↑I))
                            (g ∘ f) (u ∩ f ⁻¹' v)),
          id_mem :=
            (_ :
              ContDiffOn 𝕜 m (↑I ∘ id ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' univ ∩ range ↑I)),
          locality :=
            (_ :
              ∀ {f : H → H} {u : Set H},
                IsOpen u →
                  (∀ x ∈ u,
                      ∃ v,
                        IsOpen v ∧
                          x ∈ v ∧
                            (fun f s =>
                                ContDiffOn 𝕜 m (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                  (↑(ModelWithCorners.symm I) ⁻¹' s ∩ range ↑I))
                              f (u ∩ v)) →
                    ContDiffOn 𝕜 m (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I)),
          congr :=
            (_ :
              ∀ {f g : H → H} {u : Set H},
                IsOpen u →
                  (∀ x ∈ u, g x = f x) →
                    ContDiffOn 𝕜 m (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I) →
                      ContDiffOn 𝕜 m (↑I ∘ g ∘ ↑(ModelWithCorners.symm I))
                        (↑(ModelWithCorners.symm I) ⁻¹' u ∩ range ↑I)) }
        f s

Next tactic:
intro f s hfs