/-- 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
  intro f s hfs
  

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
hfs :
  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:
exact ContDiffOn.of_le hfs h