/-- 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
    

Proof state:
case mp
𝕜 : 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 : e ∈ analyticGroupoid I
this :
  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) }
      (↑e) e.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 e)) e.target
⊢ AnalyticOn 𝕜 (↑I ∘ ↑e ∘ ↑(ModelWithCorners.symm I)) (↑I '' e.source) ∧
    AnalyticOn 𝕜 (↑I ∘ ↑(PartialHomeomorph.symm e) ∘ ↑(ModelWithCorners.symm I)) (↑I '' e.target)

Next tactic:
simp only [I.image_eq, I.range_eq_univ, interior_univ, subset_univ, and_true] at this ⊢