/-- An identity local homeomorphism belongs to the analytic groupoid. -/
theorem ofSet_mem_analyticGroupoid {s : Set H} (hs : IsOpen s) :
    PartialHomeomorph.ofSet s hs ∈ analyticGroupoid I := by
  rw [analyticGroupoid]
  refine And.intro (ofSet_mem_contDiffGroupoid ∞ I hs) ?_
  apply mem_groupoid_of_pregroupoid.mpr
  suffices h : AnalyticOn 𝕜 (I ∘ I.symm) (I.symm ⁻¹' s ∩ interior (range I)) ∧
      (I.symm ⁻¹' s ∩ interior (range I)).image (I ∘ I.symm) ⊆ interior (range I)
  · 

Proof state:
𝕜 : 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
s : Set H
hs : IsOpen s
h :
  AnalyticOn 𝕜 (↑I ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
    ↑I ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆ interior (range ↑I)
⊢ Pregroupoid.property
      {
        property := fun f s =>
          AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
            ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
              interior (range ↑I),
        comp :=
          (_ :
            ∀ {f g : H → H} {u v : Set H},
              AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                    (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ∧
                  ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ⊆
                    interior (range ↑I) →
                AnalyticOn 𝕜 (↑I ∘ g ∘ ↑(ModelWithCorners.symm I))
                      (↑(ModelWithCorners.symm I) ⁻¹' v ∩ interior (range ↑I)) ∧
                    ↑I ∘ g ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' v ∩ interior (range ↑I)) ⊆
                      interior (range ↑I) →
                  IsOpen u →
                    IsOpen v →
                      IsOpen (u ∩ f ⁻¹' v) →
                        (fun f s =>
                            AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                              ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                                  (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                                interior (range ↑I))
                          (g ∘ f) (u ∩ f ⁻¹' v)),
        id_mem :=
          (_ :
            AnalyticOn 𝕜 (↑I ∘ id ∘ ↑(ModelWithCorners.symm I))
                (↑(ModelWithCorners.symm I) ⁻¹' univ ∩ interior (range ↑I)) ∧
              ↑I ∘ id ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' univ ∩ interior (range ↑I)) ⊆
                interior (range ↑I)),
        locality :=
          (_ :
            ∀ {f : H → H} {u : Set H},
              IsOpen u →
                (∀ x ∈ u,
                    ∃ v,
                      IsOpen v ∧
                        x ∈ v ∧
                          (fun f s =>
                              AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                  (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                                ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                                    (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                                  interior (range ↑I))
                            f (u ∩ v)) →
                  (fun f s =>
                      AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                          (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                        ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                            (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                          interior (range ↑I))
                    f u),
        congr :=
          (_ :
            ∀ {f g : H → H} {u : Set H},
              IsOpen u →
                (∀ x ∈ u, g x = f x) →
                  AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                        (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ∧
                      ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ⊆
                        interior (range ↑I) →
                    (fun f s =>
                        AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                            (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                          ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                              (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                            interior (range ↑I))
                      g u) }
      (↑(PartialHomeomorph.ofSet s hs)) (PartialHomeomorph.ofSet s hs).toPartialEquiv.source ∧
    Pregroupoid.property
      {
        property := fun f s =>
          AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I)) (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
            ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
              interior (range ↑I),
        comp :=
          (_ :
            ∀ {f g : H → H} {u v : Set H},
              AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                    (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ∧
                  ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ⊆
                    interior (range ↑I) →
                AnalyticOn 𝕜 (↑I ∘ g ∘ ↑(ModelWithCorners.symm I))
                      (↑(ModelWithCorners.symm I) ⁻¹' v ∩ interior (range ↑I)) ∧
                    ↑I ∘ g ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' v ∩ interior (range ↑I)) ⊆
                      interior (range ↑I) →
                  IsOpen u →
                    IsOpen v →
                      IsOpen (u ∩ f ⁻¹' v) →
                        (fun f s =>
                            AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                              ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                                  (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                                interior (range ↑I))
                          (g ∘ f) (u ∩ f ⁻¹' v)),
        id_mem :=
          (_ :
            AnalyticOn 𝕜 (↑I ∘ id ∘ ↑(ModelWithCorners.symm I))
                (↑(ModelWithCorners.symm I) ⁻¹' univ ∩ interior (range ↑I)) ∧
              ↑I ∘ id ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' univ ∩ interior (range ↑I)) ⊆
                interior (range ↑I)),
        locality :=
          (_ :
            ∀ {f : H → H} {u : Set H},
              IsOpen u →
                (∀ x ∈ u,
                    ∃ v,
                      IsOpen v ∧
                        x ∈ v ∧
                          (fun f s =>
                              AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                                  (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                                ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                                    (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                                  interior (range ↑I))
                            f (u ∩ v)) →
                  (fun f s =>
                      AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                          (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                        ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                            (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                          interior (range ↑I))
                    f u),
        congr :=
          (_ :
            ∀ {f g : H → H} {u : Set H},
              IsOpen u →
                (∀ x ∈ u, g x = f x) →
                  AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                        (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ∧
                      ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) '' (↑(ModelWithCorners.symm I) ⁻¹' u ∩ interior (range ↑I)) ⊆
                        interior (range ↑I) →
                    (fun f s =>
                        AnalyticOn 𝕜 (↑I ∘ f ∘ ↑(ModelWithCorners.symm I))
                            (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ∧
                          ↑I ∘ f ∘ ↑(ModelWithCorners.symm I) ''
                              (↑(ModelWithCorners.symm I) ⁻¹' s ∩ interior (range ↑I)) ⊆
                            interior (range ↑I))
                      g u) }
      (↑(PartialHomeomorph.symm (PartialHomeomorph.ofSet s hs))) (PartialHomeomorph.ofSet s hs).toPartialEquiv.target

Next tactic:
simp only [PartialHomeomorph.ofSet_apply, left_id, PartialHomeomorph.ofSet_toPartialEquiv,
      PartialEquiv.ofSet_source, h, comp_apply, mem_range, image_subset_iff, true_and,
      PartialHomeomorph.ofSet_symm, PartialEquiv.ofSet_target, and_self]