@@ -631,32 +631,34 @@ section Of
631631
632632variable {V} {α : Type *} [AddRightCancelSemigroup α] [One α] [DecidableEq α]
633633
634+ /-- Auxiliary definition for differentials for `ChainComplex.of`. -/
635+ def of.d (X : α → V) (d : ∀ n, X (n + 1 ) ⟶ X n) (i : α) (j : α) : X i ⟶ X j :=
636+ if h : i = j + 1 then eqToHom (by rw [h]) ≫ d j else 0
637+
634638/-- Construct an `α`-indexed chain complex from a dependently-typed differential.
635639-/
636- def of (X : α → V) (d : ∀ n, X (n + 1 ) ⟶ X n) (sq : ∀ n, d (n + 1 ) ≫ d n = 0 ) : ChainComplex V α :=
640+ abbrev of (X : α → V) (d : ∀ n, X (n + 1 ) ⟶ X n) (sq : ∀ n, d (n + 1 ) ≫ d n = 0 ) :
641+ ChainComplex V α :=
637642 { X := X
638- d := fun i j => if h : i = j + 1 then eqToHom (by rw [h]) ≫ d j else 0
639- shape := fun i j w => by
640- rw [dif_neg (Ne.symm w)]
643+ d := of.d X d
644+ shape := fun i j w => by simp [of.d, (Ne.symm w)]
641645 d_comp_d' := fun i j k hij hjk => by
642- dsimp at hij hjk
646+ dsimp [of.d] at hij hjk ⊢
643647 substs hij hjk
644648 simp only [eqToHom_refl, id_comp, dite_eq_ite, ite_true, sq] }
645649
646650variable (X : α → V) (d : ∀ n, X (n + 1 ) ⟶ X n) (sq : ∀ n, d (n + 1 ) ≫ d n = 0 )
647651
648- @[simp]
649652theorem of_X : (of X d sq).X = X :=
650653 rfl
651654
652655@[simp]
653- theorem of_d (j : α) : (of X d sq). d (j + 1 ) j = d j := by
654- dsimp [of]
656+ theorem of_d (j : α) : of.d X d (j + 1 ) j = d j := by
657+ dsimp [of.d ]
655658 rw [if_pos rfl, Category.id_comp]
656659
657- theorem of_d_ne {i j : α} (h : i ≠ j + 1 ) : (of X d sq).d i j = 0 := by
658- rw [of]
659- simp [dif_neg h]
660+ theorem of_d_ne {i j : α} (h : i ≠ j + 1 ) : of.d X d i j = 0 := by
661+ simp [of.d, dif_neg h]
660662
661663end Of
662664
@@ -674,7 +676,7 @@ def ofHom (f : ∀ i : α, X i ⟶ Y i) (comm : ∀ i : α, f (i + 1) ≫ d_Y i
674676 of X d_X sq_X ⟶ of Y d_Y sq_Y :=
675677 { f
676678 comm' := fun n m => by
677- simp only [ComplexShape.down_Rel]
679+ simp only [of.d, ComplexShape.down_Rel]
678680 rintro rfl
679681 simpa using comm m }
680682
@@ -739,7 +741,7 @@ lemma mkAux_eq_shortComplex_mk_d_comp_d (n : ℕ) :
739741 mkAux X₀ X₁ X₂ d₀ d₁ s succ n =
740742 ShortComplex.mk _ _ ((mk X₀ X₁ X₂ d₀ d₁ s succ).d_comp_d (n + 2 ) (n + 1 ) n) := by
741743 rw [show n + 2 = n + 1 + 1 from rfl]
742- simp only [mk, of_X, of_d , mkAux]
744+ simp [mk, mkAux]
743745
744746/-- The isomorphism from `(mk X₀ X₁ X₂ d₀ d₁ s succ).X (n + 3)` that is given by
745747the inductive construction. -/
@@ -760,7 +762,7 @@ lemma mk_d (n : ℕ) :
760762 set_option backward.isDefEq.respectTransparency false in
761763 rw [eqToHom_refl, comp_id] at eq
762764 refine Eq.trans ?_ eq
763- dsimp only [mk, of]
765+ dsimp only [mk, of, of.d ]
764766 rw [dif_pos (by rfl), eqToHom_refl, id_comp]
765767 rfl
766768
@@ -797,7 +799,7 @@ def mk'XIso (n : ℕ) :
797799 (mk' X₀ X₁ d₀ succ').X (n + 2 ) ≅ (succ' ((mk' X₀ X₁ d₀ succ').d (n + 1 ) n)).1 := by
798800 obtain _ | n := n
799801 · apply eqToIso
800- dsimp [mk', mk, of, mkAux]
802+ dsimp [mk', mk, of, mkAux, of.d ]
801803 rw [id_comp]
802804 · exact mkXIso _ _ _ _ _ (succ' d₀).2 .2 (fun S => succ' S.f) n
803805
@@ -886,36 +888,36 @@ section Of
886888
887889variable {V} {α : Type *} [AddRightCancelSemigroup α] [One α] [DecidableEq α]
888890
891+ /-- Auxiliary definition for differentials for `CochainComplex.of`. -/
892+ def of.d (X : α → V) (d : ∀ n, X n ⟶ X (n + 1 )) (i : α) (j : α) : X i ⟶ X j :=
893+ if h : i + 1 = j then d _ ≫ eqToHom (by rw [h]) else 0
894+
889895/-- Construct an `α`-indexed cochain complex from a dependently-typed differential.
890896-/
891- def of (X : α → V) (d : ∀ n, X n ⟶ X (n + 1 )) (sq : ∀ n, d n ≫ d (n + 1 ) = 0 ) :
897+ abbrev of (X : α → V) (d : ∀ n, X n ⟶ X (n + 1 )) (sq : ∀ n, d n ≫ d (n + 1 ) = 0 ) :
892898 CochainComplex V α :=
893899 { X := X
894- d := fun i j => if h : i + 1 = j then d _ ≫ eqToHom (by rw [h]) else 0
895- shape := fun i j w => by
896- rw [dif_neg]
897- exact w
900+ d := of.d X d
901+ shape := fun i j w => dif_neg (c := i + 1 = j) w
898902 d_comp_d' := fun i j k => by
899- dsimp
903+ dsimp [of.d]
900904 split_ifs with h h' h'
901905 · substs h h'
902906 simp [sq]
903907 all_goals simp }
904908
905909variable (X : α → V) (d : ∀ n, X n ⟶ X (n + 1 )) (sq : ∀ n, d n ≫ d (n + 1 ) = 0 )
906910
907- @[simp]
908911theorem of_X : (of X d sq).X = X :=
909912 rfl
910913
911914@[simp]
912- theorem of_d (j : α) : (of X d sq). d j (j + 1 ) = d j := by
913- dsimp [of]
915+ theorem of_d (j : α) : of.d X d j (j + 1 ) = d j := by
916+ dsimp [of.d ]
914917 rw [if_pos rfl, Category.comp_id]
915918
916- theorem of_d_ne {i j : α} (h : i + 1 ≠ j) : (of X d sq).d i j = 0 := by
917- rw [of]
918- simp [dif_neg h]
919+ theorem of_d_ne {i j : α} (h : i + 1 ≠ j) : of.d X d i j = 0 := by
920+ simp [of.d, dif_neg h]
919921
920922end Of
921923
@@ -934,7 +936,7 @@ def ofHom (f : ∀ i : α, X i ⟶ Y i) (comm : ∀ i : α, f i ≫ d_Y i = d_X
934936 of X d_X sq_X ⟶ of Y d_Y sq_Y :=
935937 { f
936938 comm' := fun n m => by
937- simp only [ComplexShape.up_Rel]
939+ simp only [of.d, ComplexShape.up_Rel]
938940 rintro rfl
939941 simpa using comm n }
940942
0 commit comments