/-- The analytic groupoid on a boundaryless charted space modeled on a complete vector space
consists of the local homeomorphisms which are analytic and have analytic inverse. -/
theorem mem_analyticGroupoid_of_boundaryless [CompleteSpace E] [I.Boundaryless]
    (e : PartialHomeomorph H H) :
    e ∈ analyticGroupoid I ↔ AnalyticOn 𝕜 (I ∘ e ∘ I.symm) (I '' e.source) ∧
    AnalyticOn 𝕜 (I ∘ e.symm ∘ I.symm) (I '' e.target) := by
  apply Iff.intro
  · intro he
    have := mem_groupoid_of_pregroupoid.mp he.right
    simp only [I.image_eq, I.range_eq_univ, interior_univ, subset_univ, and_true] at this ⊢
    exact this
  · intro he
    apply And.intro
    

Proof state:
case mpr.left
𝕜 : 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
inst✝¹ : CompleteSpace E
inst✝ : ModelWithCorners.Boundaryless I
e : PartialHomeomorph H H
he :
  AnalyticOn 𝕜 (↑I ∘ ↑e ∘ ↑(ModelWithCorners.symm I)) (↑I '' e.source) ∧
    AnalyticOn 𝕜 (↑I ∘ ↑(PartialHomeomorph.symm e) ∘ ↑(ModelWithCorners.symm I)) (↑I '' e.target)
⊢ e ∈ (contDiffGroupoid ⊤ I).members
case mpr.right
𝕜 : 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
inst✝¹ : CompleteSpace E
inst✝ : ModelWithCorners.Boundaryless I
e : PartialHomeomorph H H
he :
  AnalyticOn 𝕜 (↑I ∘ ↑e ∘ ↑(ModelWithCorners.symm I)) (↑I '' e.source) ∧
    AnalyticOn 𝕜 (↑I ∘ ↑(PartialHomeomorph.symm e) ∘ ↑(ModelWithCorners.symm I)) (↑I '' e.target)
⊢ e ∈
    (Pregroupoid.groupoid
        {
          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) }).members

Next tactic:
all_goals apply mem_groupoid_of_pregroupoid.mpr; simp only [I.image_eq, I.range_eq_univ,
      interior_univ, subset_univ, and_true] at he ⊢