Skip to content

Commit ba6df48

Browse files
committed
chore: fix reducibility setting for lattice copy (#37895)
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent 6b3e5a3 commit ba6df48

File tree

4 files changed

+28
-60
lines changed

4 files changed

+28
-60
lines changed

Mathlib/CategoryTheory/Sites/Grothendieck.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ theorem isGLB_sInf (s : Set (GrothendieckTopology C)) : IsGLB s (sInf s) := by
306306
definitionally equal to the bottom and top respectively.
307307
-/
308308
instance : CompleteLattice (GrothendieckTopology C) :=
309-
CompleteLattice.copy (completeLatticeOfInf _ isGLB_sInf) _ rfl (discrete C)
309+
fast_instance% CompleteLattice.copy (completeLatticeOfInf _ isGLB_sInf) _ rfl (discrete C)
310310
(by
311311
apply le_antisymm
312312
· exact (completeLatticeOfInf _ isGLB_sInf).le_top (discrete C)

Mathlib/Order/Copy.lean

Lines changed: 15 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -24,39 +24,35 @@ universe u
2424

2525
variable {α : Type u}
2626

27-
-- adding `@[implicit_reducible]` causes downstream breakage
28-
set_option warn.classDefReducibility false in
2927
/-- A function to create a provable equal copy of a top order
3028
with possibly different definitional equalities. -/
29+
@[implicit_reducible]
3130
def OrderTop.copy {h : LE α} {h' : LE α} (c : @OrderTop α h')
3231
(top : α) (eq_top : top = (by infer_instance : Top α).top)
3332
(le_eq : ∀ x y : α, (@LE.le α h) x y ↔ x ≤ y) : @OrderTop α h :=
3433
@OrderTop.mk α h { top := top } fun _ ↦ by simp [eq_top, le_eq]
3534

36-
-- adding `@[implicit_reducible]` causes downstream breakage
37-
set_option warn.classDefReducibility false in
3835
/-- A function to create a provable equal copy of a bottom order
3936
with possibly different definitional equalities. -/
37+
@[implicit_reducible]
4038
def OrderBot.copy {h : LE α} {h' : LE α} (c : @OrderBot α h')
4139
(bot : α) (eq_bot : bot = (by infer_instance : Bot α).bot)
4240
(le_eq : ∀ x y : α, (@LE.le α h) x y ↔ x ≤ y) : @OrderBot α h :=
4341
@OrderBot.mk α h { bot := bot } fun _ ↦ by simp [eq_bot, le_eq]
4442

45-
-- adding `@[implicit_reducible]` causes downstream breakage
46-
set_option warn.classDefReducibility false in
4743
/-- A function to create a provable equal copy of a bounded order
4844
with possibly different definitional equalities. -/
45+
@[implicit_reducible]
4946
def BoundedOrder.copy {h : LE α} {h' : LE α} (c : @BoundedOrder α h')
5047
(top : α) (eq_top : top = (by infer_instance : Top α).top)
5148
(bot : α) (eq_bot : bot = (by infer_instance : Bot α).bot)
5249
(le_eq : ∀ x y : α, (@LE.le α h) x y ↔ x ≤ y) : @BoundedOrder α h :=
5350
@BoundedOrder.mk α h (@OrderTop.mk α h { top := top } (fun _ ↦ by simp [eq_top, le_eq]))
5451
(@OrderBot.mk α h { bot := bot } (fun _ ↦ by simp [eq_bot, le_eq]))
5552

56-
-- adding `@[implicit_reducible]` causes downstream breakage
57-
set_option warn.classDefReducibility false in
5853
/-- A function to create a provable equal copy of a lattice
5954
with possibly different definitional equalities. -/
55+
@[implicit_reducible]
6056
def Lattice.copy (c : Lattice α)
6157
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
6258
(sup : α → α → α) (eq_sup : sup = (by infer_instance : Max α).max)
@@ -75,23 +71,19 @@ def Lattice.copy (c : Lattice α)
7571
inf_le_right := by intros; simp [eq_le, eq_inf]
7672
le_inf := by intro _ _ _ hac hbc; simp_rw [eq_le] at hac hbc ⊢; simp [eq_inf, hac, hbc]
7773

78-
-- adding `@[implicit_reducible]` causes downstream breakage
79-
set_option warn.classDefReducibility false in
80-
set_option backward.isDefEq.respectTransparency false in
8174
/-- A function to create a provable equal copy of a distributive lattice
8275
with possibly different definitional equalities. -/
76+
@[implicit_reducible]
8377
def DistribLattice.copy (c : DistribLattice α)
8478
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
8579
(sup : α → α → α) (eq_sup : sup = (by infer_instance : Max α).max)
8680
(inf : α → α → α) (eq_inf : inf = (by infer_instance : Min α).min) : DistribLattice α where
8781
toLattice := Lattice.copy (@DistribLattice.toLattice α c) le eq_le sup eq_sup inf eq_inf
8882
le_sup_inf := by intros; simp +instances [eq_le, eq_sup, eq_inf, le_sup_inf]
8983

90-
-- adding `@[implicit_reducible]` causes downstream breakage
91-
set_option warn.classDefReducibility false in
92-
set_option backward.isDefEq.respectTransparency false in
9384
/-- A function to create a provable equal copy of a generalised heyting algebra
9485
with possibly different definitional equalities. -/
86+
@[implicit_reducible]
9587
def GeneralizedHeytingAlgebra.copy (c : GeneralizedHeytingAlgebra α)
9688
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
9789
(top : α) (eq_top : top = (by infer_instance : Top α).top)
@@ -105,11 +97,9 @@ def GeneralizedHeytingAlgebra.copy (c : GeneralizedHeytingAlgebra α)
10597
himp := himp
10698
le_himp_iff _ _ _ := by simp +instances [eq_le, eq_himp, eq_inf]
10799

108-
-- adding `@[implicit_reducible]` causes downstream breakage
109-
set_option warn.classDefReducibility false in
110-
set_option backward.isDefEq.respectTransparency false in
111100
/-- A function to create a provable equal copy of a generalised co-Heyting algebra
112101
with possibly different definitional equalities. -/
102+
@[implicit_reducible]
113103
def GeneralizedCoheytingAlgebra.copy (c : GeneralizedCoheytingAlgebra α)
114104
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
115105
(bot : α) (eq_bot : bot = (by infer_instance : Bot α).bot)
@@ -123,11 +113,9 @@ def GeneralizedCoheytingAlgebra.copy (c : GeneralizedCoheytingAlgebra α)
123113
sdiff := sdiff
124114
sdiff_le_iff := by simp +instances [eq_le, eq_sdiff, eq_sup]
125115

126-
-- adding `@[implicit_reducible]` causes downstream breakage
127-
set_option warn.classDefReducibility false in
128-
set_option backward.isDefEq.respectTransparency false in
129116
/-- A function to create a provable equal copy of a heyting algebra
130117
with possibly different definitional equalities. -/
118+
@[implicit_reducible]
131119
def HeytingAlgebra.copy (c : HeytingAlgebra α)
132120
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
133121
(top : α) (eq_top : top = (by infer_instance : Top α).top)
@@ -145,11 +133,9 @@ def HeytingAlgebra.copy (c : HeytingAlgebra α)
145133
compl := compl
146134
himp_bot := by simp +instances [eq_le, eq_himp, eq_bot, eq_compl]
147135

148-
-- adding `@[implicit_reducible]` causes downstream breakage
149-
set_option warn.classDefReducibility false in
150-
set_option backward.isDefEq.respectTransparency false in
151136
/-- A function to create a provable equal copy of a co-Heyting algebra
152137
with possibly different definitional equalities. -/
138+
@[implicit_reducible]
153139
def CoheytingAlgebra.copy (c : CoheytingAlgebra α)
154140
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
155141
(top : α) (eq_top : top = (by infer_instance : Top α).top)
@@ -167,10 +153,9 @@ def CoheytingAlgebra.copy (c : CoheytingAlgebra α)
167153
hnot := hnot
168154
top_sdiff := by simp +instances [eq_le, eq_sdiff, eq_top, eq_hnot]
169155

170-
-- adding `@[implicit_reducible]` causes downstream breakage
171-
set_option warn.classDefReducibility false in
172156
/-- A function to create a provable equal copy of a bi-Heyting algebra
173157
with possibly different definitional equalities. -/
158+
@[implicit_reducible]
174159
def BiheytingAlgebra.copy (c : BiheytingAlgebra α)
175160
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
176161
(top : α) (eq_top : top = (by infer_instance : Top α).top)
@@ -187,11 +172,9 @@ def BiheytingAlgebra.copy (c : BiheytingAlgebra α)
187172
__ := CoheytingAlgebra.copy (@BiheytingAlgebra.toCoheytingAlgebra α c) le eq_le top eq_top bot
188173
eq_bot sup eq_sup inf eq_inf sdiff eq_sdiff hnot eq_hnot
189174

190-
-- adding `@[implicit_reducible]` causes downstream breakage
191-
set_option warn.classDefReducibility false in
192-
set_option backward.isDefEq.respectTransparency false in
193175
/-- A function to create a provable equal copy of a complete lattice
194176
with possibly different definitional equalities. -/
177+
@[implicit_reducible]
195178
def CompleteLattice.copy (c : CompleteLattice α)
196179
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
197180
(top : α) (eq_top : top = (by infer_instance : Top α).top)
@@ -211,10 +194,9 @@ def CompleteLattice.copy (c : CompleteLattice α)
211194
le_top := by intros; simp +instances [eq_le, eq_top]
212195
bot_le := by intros; simp +instances [eq_le, eq_bot]
213196

214-
-- adding `@[implicit_reducible]` causes downstream breakage
215-
set_option warn.classDefReducibility false in
216197
/-- A function to create a provable equal copy of a frame with possibly different definitional
217198
equalities. -/
199+
@[implicit_reducible]
218200
def Frame.copy (c : Frame α) (le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
219201
(top : α) (eq_top : top = (by infer_instance : Top α).top)
220202
(bot : α) (eq_bot : bot = (by infer_instance : Bot α).bot)
@@ -229,10 +211,9 @@ def Frame.copy (c : Frame α) (le : α → α → Prop) (eq_le : le = (by infer_
229211
__ := HeytingAlgebra.copy (@Frame.toHeytingAlgebra α c)
230212
le eq_le top eq_top bot eq_bot sup eq_sup inf eq_inf himp eq_himp compl eq_compl
231213

232-
-- adding `@[implicit_reducible]` causes downstream breakage
233-
set_option warn.classDefReducibility false in
234214
/-- A function to create a provable equal copy of a coframe with possibly different definitional
235215
equalities. -/
216+
@[implicit_reducible]
236217
def Coframe.copy (c : Coframe α) (le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
237218
(top : α) (eq_top : top = (by infer_instance : Top α).top)
238219
(bot : α) (eq_bot : bot = (by infer_instance : Bot α).bot)
@@ -247,10 +228,9 @@ def Coframe.copy (c : Coframe α) (le : α → α → Prop) (eq_le : le = (by in
247228
__ := CoheytingAlgebra.copy (@Coframe.toCoheytingAlgebra α c)
248229
le eq_le top eq_top bot eq_bot sup eq_sup inf eq_inf sdiff eq_sdiff hnot eq_hnot
249230

250-
-- adding `@[implicit_reducible]` causes downstream breakage
251-
set_option warn.classDefReducibility false in
252231
/-- A function to create a provable equal copy of a complete distributive lattice
253232
with possibly different definitional equalities. -/
233+
@[implicit_reducible]
254234
def CompleteDistribLattice.copy (c : CompleteDistribLattice α)
255235
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
256236
(top : α) (eq_top : top = (by infer_instance : Top α).top)
@@ -269,10 +249,9 @@ def CompleteDistribLattice.copy (c : CompleteDistribLattice α)
269249
__ := Coframe.copy (@CompleteDistribLattice.toCoframe α c) le eq_le top eq_top bot eq_bot sup
270250
eq_sup inf eq_inf sdiff eq_sdiff hnot eq_hnot sSup eq_sSup sInf eq_sInf
271251

272-
-- adding `@[implicit_reducible]` causes downstream breakage
273-
set_option warn.classDefReducibility false in
274252
/-- A function to create a provable equal copy of a conditionally complete lattice
275253
with possibly different definitional equalities. -/
254+
@[implicit_reducible]
276255
def ConditionallyCompleteLattice.copy (c : ConditionallyCompleteLattice α)
277256
(le : α → α → Prop) (eq_le : le = (by infer_instance : LE α).le)
278257
(sup : α → α → α) (eq_sup : sup = (by infer_instance : Max α).max)

Mathlib/Topology/Sets/Closeds.lean

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ instance : SetLike (Closeds α) α where
4545
coe := Closeds.carrier
4646
coe_injective' s t h := by cases s; cases t; congr
4747

48-
instance : PartialOrder (Closeds α) := .ofSetLike (Closeds α) α
48+
instance : PartialOrder (Closeds α) := fast_instance% .ofSetLike (Closeds α) α
4949

5050
instance : CanLift (Set α) (Closeds α) (↑) IsClosed where
5151
prf s hs := ⟨⟨s, hs⟩, rfl⟩
@@ -96,7 +96,7 @@ def gi : GaloisInsertion (@Closeds.closure α _) (↑) where
9696
choice_eq _s hs := SetLike.coe_injective <| subset_closure.antisymm hs
9797

9898
instance instCompleteLattice : CompleteLattice (Closeds α) :=
99-
CompleteLattice.copy
99+
fast_instance% CompleteLattice.copy
100100
(GaloisInsertion.liftCompleteLattice gi)
101101
-- le
102102
_ rfl
@@ -188,7 +188,7 @@ def coframeMinimalAxioms : Coframe.MinimalAxioms (Closeds α) where
188188
iInf_sup_le_sup_sInf a s :=
189189
(SetLike.coe_injective <| by simp only [coe_sup, coe_iInf, coe_sInf, Set.union_iInter₂]).le
190190

191-
instance instCoframe : Coframe (Closeds α) := .ofMinimalAxioms coframeMinimalAxioms
191+
instance instCoframe : Coframe (Closeds α) := fast_instance% .ofMinimalAxioms coframeMinimalAxioms
192192

193193
@[simps]
194194
instance [T1Space α] : Singleton α (Closeds α) where
@@ -282,26 +282,22 @@ def Opens.complOrderIso : Opens α ≃o (Closeds α)ᵒᵈ where
282282

283283
variable {α}
284284

285-
set_option backward.isDefEq.respectTransparency false in
286285
lemma Closeds.coe_eq_singleton_of_isAtom [T0Space α] {s : Closeds α} (hs : IsAtom s) :
287286
∃ a, (s : Set α) = {a} := by
288287
refine minimal_nonempty_closed_eq_singleton s.2 (coe_nonempty.2 hs.1) fun t hts ht ht' ↦ ?_
289288
lift t to Closeds α using ht'
290289
exact SetLike.coe_injective.eq_iff.2 <| (hs.le_iff_eq <| coe_nonempty.1 ht).1 hts
291290

292-
set_option backward.isDefEq.respectTransparency false in
293291
@[simp, norm_cast] lemma Closeds.isAtom_coe [T1Space α] {s : Closeds α} :
294292
IsAtom (s : Set α) ↔ IsAtom s :=
295293
Closeds.gi.isAtom_iff' rfl
296294
(fun t ht ↦ by obtain ⟨x, rfl⟩ := Set.isAtom_iff.1 ht; exact closure_singleton) s
297295

298-
set_option backward.isDefEq.respectTransparency false in
299296
/-- in a `T1Space`, atoms of `TopologicalSpace.Closeds α` are precisely the singletons. -/
300297
theorem Closeds.isAtom_iff [T1Space α] {s : Closeds α} :
301298
IsAtom s ↔ ∃ x, s = {x} := by
302299
simp [← Closeds.isAtom_coe, Set.isAtom_iff, SetLike.ext_iff, Set.ext_iff]
303300

304-
set_option backward.isDefEq.respectTransparency false in
305301
/-- in a `T1Space`, coatoms of `TopologicalSpace.Opens α` are precisely complements of singletons:
306302
`({x} : Closeds α).compl`. -/
307303
theorem Opens.isCoatom_iff [T1Space α] {s : Opens α} :
@@ -326,7 +322,7 @@ instance : SetLike (Clopens α) α where
326322
coe s := s.carrier
327323
coe_injective' s t h := by cases s; cases t; congr
328324

329-
instance : PartialOrder (Clopens α) := .ofSetLike (Clopens α) α
325+
instance : PartialOrder (Clopens α) := fast_instance% .ofSetLike (Clopens α) α
330326

331327
theorem isClopen (s : Clopens α) : IsClopen (s : Set α) :=
332328
s.isClopen'
@@ -372,7 +368,7 @@ instance : Compl (Clopens α) := ⟨fun s => ⟨sᶜ, s.isClopen.compl⟩⟩
372368
@[simp, norm_cast] lemma coe_himp (s t : Clopens α) : ↑(s ⇨ t) = (s ⇨ t : Set α) := rfl
373369
@[simp, norm_cast] lemma coe_compl (s : Clopens α) : (↑sᶜ : Set α) = (↑s)ᶜ := rfl
374370

375-
instance : BooleanAlgebra (Clopens α) :=
371+
instance : BooleanAlgebra (Clopens α) := fast_instance%
376372
SetLike.coe_injective.booleanAlgebra _ .rfl .rfl coe_sup coe_inf coe_top coe_bot coe_compl
377373
coe_sdiff coe_himp
378374

@@ -414,7 +410,7 @@ instance : SetLike (IrreducibleCloseds α) α where
414410
coe := IrreducibleCloseds.carrier
415411
coe_injective' s t h := by cases s; cases t; congr
416412

417-
instance : PartialOrder (IrreducibleCloseds α) := .ofSetLike (IrreducibleCloseds α) α
413+
instance : PartialOrder (IrreducibleCloseds α) := fast_instance% .ofSetLike (IrreducibleCloseds α) α
418414

419415
instance : CanLift (Set α) (IrreducibleCloseds α) (↑) (fun s ↦ IsIrreducible s ∧ IsClosed s) where
420416
prf s hs := ⟨⟨s, hs.1, hs.2⟩, rfl⟩

Mathlib/Topology/Sets/Opens.lean

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ instance : SetLike (Opens α) α where
7272
coe := Opens.carrier
7373
coe_injective' := fun ⟨_, _⟩ ⟨_, _⟩ _ => by congr
7474

75-
instance : PartialOrder (Opens α) := .ofSetLike (Opens α) α
75+
instance : PartialOrder (Opens α) := fast_instance% .ofSetLike (Opens α) α
7676

7777
instance : CanLift (Set α) (Opens α) (↑) IsOpen :=
7878
fun s h => ⟨⟨s, h⟩, rfl⟩⟩
@@ -139,7 +139,7 @@ def gi : GaloisCoinsertion (↑) (@Opens.interior α _) where
139139
choice_eq _s hs := le_antisymm hs interior_subset
140140

141141
instance : CompleteLattice (Opens α) :=
142-
CompleteLattice.copy (GaloisCoinsertion.liftCompleteLattice gi)
142+
fast_instance% CompleteLattice.copy (GaloisCoinsertion.liftCompleteLattice gi)
143143
-- le
144144
(fun U V => (U : Set α) ⊆ V) rfl
145145
-- top
@@ -215,7 +215,6 @@ theorem coe_finset_sup (f : ι → Opens α) (s : Finset ι) : (↑(s.sup f) : S
215215
theorem coe_finset_inf (f : ι → Opens α) (s : Finset ι) : (↑(s.inf f) : Set α) = s.inf ((↑) ∘ f) :=
216216
map_finset_inf (⟨⟨(↑), coe_inf⟩, coe_top⟩ : InfTopHom (Opens α) (Set α)) _ _
217217

218-
set_option backward.isDefEq.respectTransparency false in
219218
@[simp, norm_cast]
220219
lemma coe_disjoint {s t : Opens α} : Disjoint (s : Set α) t ↔ Disjoint s t := by
221220
simp [disjoint_iff, ← SetLike.coe_set_eq]
@@ -249,14 +248,13 @@ theorem mem_iSup {ι} {x : α} {s : ι → Opens α} : x ∈ iSup s ↔ ∃ i, x
249248
theorem mem_sSup {Us : Set (Opens α)} {x : α} : x ∈ sSup Us ↔ ∃ u ∈ Us, x ∈ u := by
250249
simp_rw [sSup_eq_iSup, mem_iSup, exists_prop]
251250

252-
-- adding `@[implicit_reducible]` causes downstream breakage
253-
set_option warn.classDefReducibility false in
254251
/-- Open sets in a topological space form a frame. -/
252+
@[implicit_reducible]
255253
def frameMinimalAxioms : Frame.MinimalAxioms (Opens α) where
256254
inf_sSup_le_iSup_inf a s :=
257255
(ext <| by simp only [coe_inf, coe_iSup, coe_sSup, Set.inter_iUnion₂]).le
258256

259-
instance instFrame : Frame (Opens α) := .ofMinimalAxioms frameMinimalAxioms
257+
instance instFrame : Frame (Opens α) := fast_instance% .ofMinimalAxioms frameMinimalAxioms
260258

261259
/-- The coercion from open sets to sets as a `FrameHom`. -/
262260
@[simps] protected def frameHom : FrameHom (Opens α) (Set α) where
@@ -275,21 +273,17 @@ theorem isOpenEmbedding_of_le {U V : Opens α} (i : U ≤ V) :
275273
rw [Set.range_inclusion i]
276274
exact U.isOpen.preimage continuous_subtype_val
277275

278-
set_option backward.isDefEq.respectTransparency false in
279276
theorem not_nonempty_iff_eq_bot (U : Opens α) : ¬Set.Nonempty (U : Set α) ↔ U = ⊥ := by
280277
rw [← coe_inj, coe_bot, ← Set.not_nonempty_iff_eq_empty]
281278

282279
theorem ne_bot_iff_nonempty (U : Opens α) : U ≠ ⊥ ↔ Set.Nonempty (U : Set α) := by
283280
rw [Ne, ← not_nonempty_iff_eq_bot, not_not]
284281

285-
set_option backward.isDefEq.respectTransparency false in
286-
/-- An open set in the indiscrete topology is either empty or the whole space. -/
287282
theorem eq_bot_or_top [IndiscreteTopology α] (U : Opens α) :
288283
U = ⊥ ∨ U = ⊤ := by
289284
rw [← coe_eq_empty, ← coe_eq_univ, ← IndiscreteTopology.isOpen_iff]
290285
exact U.2
291286

292-
set_option backward.isDefEq.respectTransparency false in
293287
instance [Nonempty α] [IndiscreteTopology α] : IsSimpleOrder (Opens α) where
294288
eq_bot_or_eq_top := eq_bot_or_top
295289

@@ -367,7 +361,6 @@ lemma IsBasis.of_isInducing {B : Set (Opens β)} (H : IsBasis B) {f : α → β}
367361
convert H.isInducing h
368362
ext; simp
369363

370-
set_option backward.isDefEq.respectTransparency false in
371364
@[simp]
372365
theorem isCompactElement_iff (s : Opens α) :
373366
IsCompactElement s ↔ IsCompact (s : Set α) := by
@@ -457,7 +450,7 @@ instance : SetLike (OpenNhdsOf x) α where
457450
coe U := U.1
458451
coe_injective' := SetLike.coe_injective.comp toOpens_injective
459452

460-
instance : PartialOrder (OpenNhdsOf x) := .ofSetLike (OpenNhdsOf x) α
453+
instance : PartialOrder (OpenNhdsOf x) := fast_instance% .ofSetLike (OpenNhdsOf x) α
461454

462455
instance canLiftSet : CanLift (Set α) (OpenNhdsOf x) (↑) fun s => IsOpen s ∧ x ∈ s :=
463456
fun s hs => ⟨⟨⟨s, hs.1⟩, hs.2⟩, rfl⟩⟩
@@ -479,7 +472,7 @@ instance : Max (OpenNhdsOf x) := ⟨fun U V => ⟨U.1 ⊔ V.1, Or.inl U.2⟩⟩
479472
instance [Subsingleton α] : Unique (OpenNhdsOf x) where
480473
uniq U := SetLike.ext' <| Subsingleton.eq_univ_of_nonempty ⟨x, U.mem⟩
481474

482-
instance : DistribLattice (OpenNhdsOf x) :=
475+
instance : DistribLattice (OpenNhdsOf x) := fast_instance%
483476
toOpens_injective.distribLattice _ .rfl .rfl (fun _ _ ↦ rfl) fun _ _ ↦ rfl
484477

485478
theorem basis_nhds : (𝓝 x).HasBasis (fun _ : OpenNhdsOf x => True) (↑) :=

0 commit comments

Comments
 (0)