Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit b7952ee

Browse files
committed
refactor(category_theory/shift): remove opaque_eq_to_iso (#14262)
It seems `opaque_eq_to_iso` was only needed because we had over-eager simp lemmas. After #14260, it is easy to remove. Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
1 parent 178456f commit b7952ee

File tree

3 files changed

+29
-38
lines changed

3 files changed

+29
-38
lines changed

src/category_theory/differential_object.lean

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,12 @@ local attribute [reducible] discrete.add_monoidal shift_comm
234234
begin
235235
refine nat_iso.of_components (λ X, mk_iso (shift_add X.X _ _) _) _,
236236
{ dsimp,
237+
-- This is just `simp, simp [eq_to_hom_map]`.
237238
simp_rw [category.assoc, obj_μ_inv_app, μ_inv_hom_app_assoc, functor.map_comp, obj_μ_app,
238239
category.assoc, μ_naturality_assoc, μ_inv_hom_app_assoc, obj_μ_inv_app, category.assoc,
239240
μ_naturalityₗ_assoc, μ_inv_hom_app_assoc, μ_inv_naturalityᵣ_assoc],
240-
simp [opaque_eq_to_iso] },
241+
simp only [eq_to_hom_map, eq_to_hom_app, eq_to_iso.hom, eq_to_hom_trans_assoc,
242+
eq_to_iso.inv], },
241243
{ intros X Y f, ext, dsimp, exact nat_trans.naturality _ _ }
242244
end
243245

@@ -257,6 +259,8 @@ end
257259

258260
end
259261

262+
local attribute [simp] eq_to_hom_map
263+
260264
instance : has_shift (differential_object C) ℤ :=
261265
has_shift_mk _ _
262266
{ F := shift_functor C,

src/category_theory/shift.lean

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -193,31 +193,6 @@ by { symmetry, apply nat_iso.naturality_2 }
193193

194194
end add_monoid
195195

196-
section opaque_eq_to_iso
197-
198-
variables {ι : Type*} {i j k : ι}
199-
200-
/-- This definition is used instead of `eq_to_iso` so that the proof of `i = j` is visible
201-
to the simplifier -/
202-
def opaque_eq_to_iso (h : i = j) : @iso (discrete ι) _ ⟨i⟩ ⟨j⟩ := discrete.eq_to_iso h
203-
204-
@[simp]
205-
lemma opaque_eq_to_iso_symm (h : i = j) :
206-
(opaque_eq_to_iso h).symm = opaque_eq_to_iso h.symm := rfl
207-
208-
@[simp]
209-
lemma opaque_eq_to_iso_inv (h : i = j) :
210-
(opaque_eq_to_iso h).inv = (opaque_eq_to_iso h.symm).hom := rfl
211-
212-
local attribute [simp] eq_to_hom_map
213-
214-
@[simp, reassoc]
215-
lemma map_opaque_eq_to_iso_comp_app (F : discrete ι ⥤ C ⥤ C) (h : i = j) (h' : j = k) (X : C) :
216-
(F.map (opaque_eq_to_iso h).hom).app X ≫ (F.map (opaque_eq_to_iso h').hom).app X =
217-
(F.map (opaque_eq_to_iso $ h.trans h').hom).app X := by { delta opaque_eq_to_iso, simp }
218-
219-
end opaque_eq_to_iso
220-
221196
section add_group
222197

223198
variables (C) {A} [add_group A] [has_shift C A]
@@ -228,13 +203,13 @@ variables (X Y : C) (f : X ⟶ Y)
228203
abbreviation shift_functor_comp_shift_functor_neg (i : A) :
229204
shift_functor C i ⋙ shift_functor C (-i) ≅ 𝟭 C :=
230205
unit_of_tensor_iso_unit (shift_monoidal_functor C A) ⟨i⟩ ⟨(-i : A)⟩
231-
(opaque_eq_to_iso (add_neg_self i))
206+
(discrete.eq_to_iso (add_neg_self i))
232207

233208
/-- Shifting by `-i` and then shifting by `i` is the identity. -/
234209
abbreviation shift_functor_neg_comp_shift_functor (i : A) :
235210
shift_functor C (-i) ⋙ shift_functor C i ≅ 𝟭 C :=
236211
unit_of_tensor_iso_unit (shift_monoidal_functor C A) ⟨(-i : A)⟩ ⟨i⟩
237-
(opaque_eq_to_iso (neg_add_self i))
212+
(discrete.eq_to_iso (neg_add_self i))
238213

239214
section
240215

@@ -287,12 +262,17 @@ lemma shift_equiv_triangle (n : A) (X : C) :
287262
(add_neg_equiv (shift_monoidal_functor C A) n).functor_unit_iso_comp X
288263

289264
section
290-
local attribute [simp] eq_to_hom_map
291265
local attribute [reducible] discrete.add_monoidal
292266

293267
lemma shift_shift_neg_hom_shift (n : A) (X : C) :
294268
(shift_shift_neg X n).hom ⟦n⟧' = (shift_neg_shift (X⟦n⟧) n).hom :=
295-
by simp
269+
begin
270+
-- This is just `simp, simp [eq_to_hom_map]`.
271+
simp only [iso.app_hom, unit_of_tensor_iso_unit_hom_app, eq_to_iso.hom, functor.map_comp,
272+
obj_μ_app, eq_to_iso.inv, obj_ε_inv_app, μ_naturalityₗ_assoc, category.assoc,
273+
μ_inv_hom_app_assoc, ε_inv_app_obj, μ_naturalityᵣ_assoc],
274+
simp only [eq_to_hom_map, eq_to_hom_app, eq_to_hom_trans],
275+
end
296276

297277
end
298278

@@ -333,19 +313,27 @@ variables (X Y : C) (f : X ⟶ Y)
333313
/-- When shifts are indexed by an additive commutative monoid, then shifts commute. -/
334314
def shift_comm (i j : A) : X⟦i⟧⟦j⟧ ≅ X⟦j⟧⟦i⟧ :=
335315
(shift_add X i j).symm ≪≫ ((shift_monoidal_functor C A).to_functor.map_iso
336-
(opaque_eq_to_iso $ add_comm i j : _)).app X ≪≫ shift_add X j i
316+
(discrete.eq_to_iso $ add_comm i j : (⟨i+j⟩ : discrete A) ≅ ⟨j+i⟩)).app X ≪≫ shift_add X j i
337317

338318
@[simp] lemma shift_comm_symm (i j : A) : (shift_comm X i j).symm = shift_comm X j i :=
339319
begin
340-
ext, dsimp [shift_comm], simpa
320+
ext, dsimp [shift_comm], simpa [eq_to_hom_map],
341321
end
342322

343323
variables {X Y}
344324

345325
/-- When shifts are indexed by an additive commutative monoid, then shifts commute. -/
346326
lemma shift_comm' (i j : A) :
347327
f⟦i⟧'⟦j⟧' = (shift_comm _ _ _).hom ≫ f⟦j⟧'⟦i⟧' ≫ (shift_comm _ _ _).hom :=
348-
by simp [shift_comm]
328+
begin
329+
-- This is just `simp, simp [eq_to_hom_map]`.
330+
simp only [shift_comm, iso.trans_hom, iso.symm_hom, iso.app_inv, iso.symm_inv,
331+
monoidal_functor.μ_iso_hom, iso.app_hom, functor.map_iso_hom, eq_to_iso.hom, μ_naturality_assoc,
332+
nat_trans.naturality_assoc, nat_trans.naturality, functor.comp_map, category.assoc,
333+
μ_inv_hom_app_assoc],
334+
simp only [eq_to_hom_map, eq_to_hom_app, eq_to_hom_trans_assoc, eq_to_hom_refl, category.id_comp,
335+
μ_hom_inv_app_assoc],
336+
end
349337

350338
@[reassoc] lemma shift_comm_hom_comp (i j : A) :
351339
(shift_comm X i j).hom ≫ f⟦j⟧'⟦i⟧' = f⟦i⟧'⟦j⟧' ≫ (shift_comm Y i j).hom :=

src/category_theory/triangulated/rotate.lean

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ def inv_rotate (f : triangle_morphism T₁ T₂) :
151151
end,
152152
comm₃' := begin
153153
dsimp,
154-
simp only [discrete.functor_map_id, id_comp, opaque_eq_to_iso_inv, μ_inv_naturality,
154+
simp only [discrete.functor_map_id, id_comp, μ_inv_naturality,
155155
category.assoc, nat_trans.id_app, unit_of_tensor_iso_unit_inv_app],
156156
erw ε_naturality_assoc,
157157
rw comm₂_assoc
@@ -190,8 +190,8 @@ def to_inv_rotate_rotate (T : triangle C) : T ⟶ (inv_rotate C).obj ((rotate C)
190190
comm₃' := begin
191191
dsimp,
192192
simp only [ε_app_obj, eq_to_iso.hom, discrete.functor_map_id, id_comp, eq_to_iso.inv,
193-
opaque_eq_to_iso_inv, category.assoc, obj_μ_inv_app, functor.map_comp, nat_trans.id_app,
194-
obj_ε_app, unit_of_tensor_iso_unit_inv_app],
193+
category.assoc, obj_μ_inv_app, functor.map_comp, nat_trans.id_app, obj_ε_app,
194+
unit_of_tensor_iso_unit_inv_app],
195195
erw μ_inv_hom_app_assoc,
196196
refl
197197
end }
@@ -207,8 +207,7 @@ def rot_comp_inv_rot_hom : 𝟭 (triangle C) ⟶ rotate C ⋙ inv_rotate C :=
207207
introv, ext,
208208
{ dsimp,
209209
simp only [nat_iso.cancel_nat_iso_inv_right_assoc, discrete.functor_map_id, id_comp,
210-
opaque_eq_to_iso_inv, μ_inv_naturality, assoc, nat_trans.id_app,
211-
unit_of_tensor_iso_unit_inv_app],
210+
μ_inv_naturality, assoc, nat_trans.id_app, unit_of_tensor_iso_unit_inv_app],
212211
erw ε_naturality },
213212
{ dsimp, rw [comp_id, id_comp] },
214213
{ dsimp, rw [comp_id, id_comp] },

0 commit comments

Comments
 (0)