Theorem: closedUnderRestriction_iff_id_le
File: Mathlib/Geometry/Manifold/ChartedSpace.lean

tactic: constructor
state_before: H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
⊢ ClosedUnderRestriction G ↔ idRestrGroupoid ≤ G

tactic: intro _i
state_before: case mp
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
⊢ ClosedUnderRestriction G → idRestrGroupoid ≤ G

tactic: apply StructureGroupoid.le_iff.mpr
state_before: case mp
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
⊢ idRestrGroupoid ≤ G

tactic: rintro e ⟨s, hs, hes⟩
state_before: case mp
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
⊢ ∀ (e : LocalHomeomorph H H), e ∈ idRestrGroupoid → e ∈ G

tactic: refine' G.eq_on_source _ hes
state_before: case mp.intro.intro
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
e : LocalHomeomorph H H
s : Set H
hs : IsOpen s
hes : e ≈ ofSet s hs
⊢ e ∈ G

tactic: convert closedUnderRestriction' G.id_mem hs
state_before: case mp.intro.intro
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
e : LocalHomeomorph H H
s : Set H
hs : IsOpen s
hes : e ≈ ofSet s hs
⊢ ofSet s hs ∈ G

tactic: ext
state_before: case h.e'_4
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
e : LocalHomeomorph H H
s : Set H
hs : IsOpen s
hes : e ≈ ofSet s hs
⊢ ofSet s hs = LocalHomeomorph.restr (LocalHomeomorph.refl H) s

tactic: rw [LocalHomeomorph.restr_apply, LocalHomeomorph.refl_apply, id, ofSet_apply, id_eq]
state_before: case h.e'_4.h
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
e : LocalHomeomorph H H
s : Set H
hs : IsOpen s
hes : e ≈ ofSet s hs
x✝ : H
⊢ ↑(ofSet s hs) x✝ = ↑(LocalHomeomorph.restr (LocalHomeomorph.refl H) s) x✝

tactic: simp [hs]
state_before: case h.e'_4.hinv
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
e : LocalHomeomorph H H
s : Set H
hs : IsOpen s
hes : e ≈ ofSet s hs
x✝ : H
⊢ ↑(LocalHomeomorph.symm (ofSet s hs)) x✝ =
    ↑(LocalHomeomorph.symm (LocalHomeomorph.restr (LocalHomeomorph.refl H) s)) x✝

tactic: simp [hs.interior_eq]
state_before: case h.e'_4.hs.h
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
_i : ClosedUnderRestriction G
e : LocalHomeomorph H H
s : Set H
hs : IsOpen s
hes : e ≈ ofSet s hs
x✝ : H
⊢ x✝ ∈ (ofSet s hs).toLocalEquiv.source ↔ x✝ ∈ (LocalHomeomorph.restr (LocalHomeomorph.refl H) s).toLocalEquiv.source

tactic: intro h
state_before: case mpr
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
⊢ idRestrGroupoid ≤ G → ClosedUnderRestriction G

tactic: constructor
state_before: case mpr
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
h : idRestrGroupoid ≤ G
⊢ ClosedUnderRestriction G

tactic: intro e he s hs
state_before: case mpr.closedUnderRestriction
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
h : idRestrGroupoid ≤ G
⊢ ∀ {e : LocalHomeomorph H H}, e ∈ G → ∀ (s : Set H), IsOpen s → LocalHomeomorph.restr e s ∈ G

tactic: rw [← ofSet_trans (e : LocalHomeomorph H H) hs]
state_before: case mpr.closedUnderRestriction
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
h : idRestrGroupoid ≤ G
e : LocalHomeomorph H H
he : e ∈ G
s : Set H
hs : IsOpen s
⊢ LocalHomeomorph.restr e s ∈ G

tactic: refine' G.trans _ he
state_before: case mpr.closedUnderRestriction
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
h : idRestrGroupoid ≤ G
e : LocalHomeomorph H H
he : e ∈ G
s : Set H
hs : IsOpen s
⊢ ofSet s hs ≫ₕ e ∈ G

tactic: apply StructureGroupoid.le_iff.mp h
state_before: case mpr.closedUnderRestriction
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
h : idRestrGroupoid ≤ G
e : LocalHomeomorph H H
he : e ∈ G
s : Set H
hs : IsOpen s
⊢ ofSet s hs ∈ G

tactic: exact idRestrGroupoid_mem hs
state_before: case mpr.closedUnderRestriction.a
H : Type u
H' : Type ?u.37363
M : Type ?u.37366
M' : Type ?u.37369
M'' : Type ?u.37372
inst✝ : TopologicalSpace H
G : StructureGroupoid H
h : idRestrGroupoid ≤ G
e : LocalHomeomorph H H
he : e ∈ G
s : Set H
hs : IsOpen s
⊢ ofSet s hs ∈ idRestrGroupoid