Skip to content

Commit b667bbb

Browse files
move pushout_isOpen_iff
1 parent 845f8f5 commit b667bbb

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed

Mathlib/Topology/Category/TopCat/Limits/Basic.lean

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -287,28 +287,6 @@ instance forget_preservesColimitsOfSize :
287287

288288
instance forget_preservesColimits : PreservesColimits (forget : TopCat.{u} ⥤ Type u) where
289289

290-
lemma pushout_isOpen_iff {A X Y : TopCat.{u}} {f : A ⟶ X} {g : A ⟶ Y} (s : Set ↑(pushout f g)) :
291-
IsOpen s ↔ IsOpen (pushout.inl f g ⁻¹' s) ∧ IsOpen (pushout.inr f g ⁻¹' s) := by
292-
have «forall» {p : WalkingSpan → Prop} : (∀ x, p x) ↔ p .left ∧ p .zero ∧ p .right :=
293-
fun h ↦ ⟨h _, h _, h _⟩, by rintro ⟨_, _, _⟩ (_ | _ | _) <;> assumption⟩
294-
have {h : IsOpen (pushout.inr f g ⁻¹' s)} : IsOpen (colimit.ι (span f g) .zero ⁻¹' s) := by
295-
rw [← colimit.w (span f g) WalkingSpan.Hom.snd, ConcreteCategory.preimage_hom_comp]
296-
exact h.preimage g.continuous
297-
rw [TopCat.colimit_isOpen_iff, «forall»]
298-
conv_lhs =>
299-
enter [2]; rw [and_iff_right_of_imp]
300-
· rfl
301-
· exact @this
302-
rfl
303-
304-
lemma isOpen_iff_of_isPushout {A X Y Z : TopCat.{u}} {f : A ⟶ X} {g : A ⟶ Y} {inl : X ⟶ Z}
305-
{inr : Y ⟶ Z} (h : IsPushout f g inl inr) (s : Set Z) :
306-
IsOpen s ↔ IsOpen (inl ⁻¹' s) ∧ IsOpen (inr ⁻¹' s) := by
307-
simp_rw [← (homeoOfIso <| h.isoPushout).symm.isOpen_preimage, pushout_isOpen_iff,
308-
preimage_preimage]
309-
simp [← ConcreteCategory.comp_apply]
310-
-- rw [← h.isOpen_iff]; exact ⟨h.1, h.2⟩
311-
312290
end Colimits
313291

314292
/-- The terminal object of `Top` is `PUnit`. -/

Mathlib/Topology/Category/TopCat/Limits/Pullbacks.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,21 @@ theorem coequalizer_isOpen_iff (U : Set ((coequalizer f g :) : Type u)) :
400400
IsOpen U ↔ IsOpen (coequalizer.π f g ⁻¹' U) :=
401401
isOpen_iff_of_isColimit_cofork _ (coequalizerIsCoequalizer f g) _
402402

403+
lemma pushout_isOpen_iff {A X Y : TopCat.{u}} {f : A ⟶ X} {g : A ⟶ Y} (s : Set ↥(pushout f g)) :
404+
IsOpen s ↔ IsOpen (pushout.inl f g ⁻¹' s) ∧ IsOpen (pushout.inr f g ⁻¹' s) := by
405+
have «forall» {p : WalkingSpan → Prop} : (∀ x, p x) ↔ p .left ∧ p .zero ∧ p .right :=
406+
fun h ↦ ⟨h _, h _, h _⟩, by rintro ⟨_, _, _⟩ (_ | _ | _) <;> assumption⟩
407+
have {h : IsOpen (pushout.inr f g ⁻¹' s)} : IsOpen (colimit.ι (span f g) .zero ⁻¹' s) := by
408+
rw [← colimit.w (span f g) WalkingSpan.Hom.snd, CategoryTheory.hom_comp, Set.preimage_comp,
409+
span_map_snd]
410+
exact h.preimage g.hom.continuous
411+
rw [TopCat.colimit_isOpen_iff, «forall»]
412+
conv_lhs =>
413+
enter [2]; rw [and_iff_right_of_imp]
414+
· rfl
415+
· exact @this
416+
rfl
417+
403418
end
404419

405420
end TopCat

0 commit comments

Comments
 (0)