@@ -44,16 +44,16 @@ variable {n : ℕ} (S : ComposableArrows C n)
44
44
two consecutive arrows are zero. -/
45
45
structure IsComplex : Prop where
46
46
/-- the composition of two consecutive arrows is zero -/
47
- zero (i : ℕ) (hi : i + 2 ≤ n := by linarith ) :
47
+ zero (i : ℕ) (hi : i + 2 ≤ n := by omega ) :
48
48
S.map' i (i + 1 ) ≫ S.map' (i + 1 ) (i + 2 ) = 0
49
49
50
50
attribute [reassoc] IsComplex.zero
51
51
52
52
variable {S}
53
53
54
54
@[reassoc]
55
- lemma IsComplex.zero' (hS : S.IsComplex) (i j k : ℕ) (hij : i + 1 = j := by linarith )
56
- (hjk : j + 1 = k := by linarith ) (hk : k ≤ n := by linarith ) :
55
+ lemma IsComplex.zero' (hS : S.IsComplex) (i j k : ℕ) (hij : i + 1 = j := by omega )
56
+ (hjk : j + 1 = k := by omega ) (hk : k ≤ n := by omega ) :
57
57
S.map' i j ≫ S.map' j k = 0 := by
58
58
subst hij hjk
59
59
exact hS.zero i hk
@@ -75,42 +75,42 @@ lemma isComplex₀ (S : ComposableArrows C 0) : S.IsComplex where
75
75
zero i hi := by simp (config := {decide := true }) at hi
76
76
77
77
lemma isComplex₁ (S : ComposableArrows C 1 ) : S.IsComplex where
78
- zero i hi := by exfalso; linarith
78
+ zero i hi := by exfalso; omega
79
79
80
80
variable (S)
81
81
82
82
/-- The short complex consisting of maps `S.map' i j` and `S.map' j k` when we know
83
83
that `S : ComposableArrows C n` satisfies `S.IsComplex`. -/
84
84
@[reducible]
85
- def sc' (hS : S.IsComplex) (i j k : ℕ) (hij : i + 1 = j := by linarith )
86
- (hjk : j + 1 = k := by linarith ) (hk : k ≤ n := by linarith ) :
85
+ def sc' (hS : S.IsComplex) (i j k : ℕ) (hij : i + 1 = j := by omega )
86
+ (hjk : j + 1 = k := by omega ) (hk : k ≤ n := by omega ) :
87
87
ShortComplex C :=
88
88
ShortComplex.mk (S.map' i j) (S.map' j k) (hS.zero' i j k)
89
89
90
90
/-- The short complex consisting of maps `S.map' i (i + 1)` and `S.map' (i + 1) (i + 2)`
91
91
when we know that `S : ComposableArrows C n` satisfies `S.IsComplex`. -/
92
- abbrev sc (hS : S.IsComplex) (i : ℕ) (hi : i + 2 ≤ n := by linarith ) :
92
+ abbrev sc (hS : S.IsComplex) (i : ℕ) (hi : i + 2 ≤ n := by omega ) :
93
93
ShortComplex C :=
94
94
S.sc' hS i (i + 1 ) (i + 2 )
95
95
96
96
/-- `F : ComposableArrows C n` is exact if it is a complex and that all short
97
97
complexes consisting of two consecutive arrows are exact. -/
98
98
structure Exact extends S.IsComplex : Prop where
99
- exact (i : ℕ) (hi : i + 2 ≤ n := by linarith ) : (S.sc toIsComplex i).Exact
99
+ exact (i : ℕ) (hi : i + 2 ≤ n := by omega ) : (S.sc toIsComplex i).Exact
100
100
101
101
variable {S}
102
102
103
- lemma Exact.exact' (hS : S.Exact) (i j k : ℕ) (hij : i + 1 = j := by linarith )
104
- (hjk : j + 1 = k := by linarith ) (hk : k ≤ n := by linarith ) :
103
+ lemma Exact.exact' (hS : S.Exact) (i j k : ℕ) (hij : i + 1 = j := by omega )
104
+ (hjk : j + 1 = k := by omega ) (hk : k ≤ n := by omega ) :
105
105
(S.sc' hS.toIsComplex i j k).Exact := by
106
106
subst hij hjk
107
107
exact hS.exact i hk
108
108
109
109
/-- Functoriality maps for `ComposableArrows.sc'`. -/
110
110
@[simps]
111
111
def sc'Map {S₁ S₂ : ComposableArrows C n} (φ : S₁ ⟶ S₂) (h₁ : S₁.IsComplex) (h₂ : S₂.IsComplex)
112
- (i j k : ℕ) (hij : i + 1 = j := by linarith )
113
- (hjk : j + 1 = k := by linarith ) (hk : k ≤ n := by linarith ) :
112
+ (i j k : ℕ) (hij : i + 1 = j := by omega )
113
+ (hjk : j + 1 = k := by omega ) (hk : k ≤ n := by omega ) :
114
114
S₁.sc' h₁ i j k ⟶ S₂.sc' h₂ i j k where
115
115
τ₁ := φ.app _
116
116
τ₂ := φ.app _
@@ -119,16 +119,16 @@ def sc'Map {S₁ S₂ : ComposableArrows C n} (φ : S₁ ⟶ S₂) (h₁ : S₁.
119
119
/-- Functoriality maps for `ComposableArrows.sc`. -/
120
120
@[simps!]
121
121
def scMap {S₁ S₂ : ComposableArrows C n} (φ : S₁ ⟶ S₂) (h₁ : S₁.IsComplex) (h₂ : S₂.IsComplex)
122
- (i : ℕ) (hi : i + 2 ≤ n := by linarith ) :
122
+ (i : ℕ) (hi : i + 2 ≤ n := by omega ) :
123
123
S₁.sc h₁ i ⟶ S₂.sc h₂ i :=
124
124
sc'Map φ h₁ h₂ i (i + 1 ) (i + 2 )
125
125
126
126
/-- The isomorphism `S₁.sc' _ i j k ≅ S₂.sc' _ i j k` induced by an isomorphism `S₁ ≅ S₂`
127
127
in `ComposableArrows C n`. -/
128
128
@[simps]
129
129
def sc'MapIso {S₁ S₂ : ComposableArrows C n} (e : S₁ ≅ S₂)
130
- (h₁ : S₁.IsComplex) (h₂ : S₂.IsComplex) (i j k : ℕ) (hij : i + 1 = j := by linarith )
131
- (hjk : j + 1 = k := by linarith ) (hk : k ≤ n := by linarith ) :
130
+ (h₁ : S₁.IsComplex) (h₂ : S₂.IsComplex) (i j k : ℕ) (hij : i + 1 = j := by omega )
131
+ (hjk : j + 1 = k := by omega ) (hk : k ≤ n := by omega ) :
132
132
S₁.sc' h₁ i j k ≅ S₂.sc' h₂ i j k where
133
133
hom := sc'Map e.hom h₁ h₂ i j k
134
134
inv := sc'Map e.inv h₂ h₁ i j k
@@ -140,7 +140,7 @@ in `ComposableArrows C n`. -/
140
140
@[simps]
141
141
def scMapIso {S₁ S₂ : ComposableArrows C n} (e : S₁ ≅ S₂)
142
142
(h₁ : S₁.IsComplex) (h₂ : S₂.IsComplex)
143
- (i : ℕ) (hi : i + 2 ≤ n := by linarith ) :
143
+ (i : ℕ) (hi : i + 2 ≤ n := by omega ) :
144
144
S₁.sc h₁ i ≅ S₂.sc h₂ i where
145
145
hom := scMap e.hom h₁ h₂ i
146
146
inv := scMap e.inv h₂ h₁ i
@@ -164,16 +164,16 @@ lemma exact₀ (S : ComposableArrows C 0) : S.Exact where
164
164
165
165
lemma exact₁ (S : ComposableArrows C 1 ) : S.Exact where
166
166
toIsComplex := S.isComplex₁
167
- exact i hi := by exfalso; linarith
167
+ exact i hi := by exfalso; omega
168
168
169
169
lemma isComplex₂_iff (S : ComposableArrows C 2 ) :
170
170
S.IsComplex ↔ S.map' 0 1 ≫ S.map' 1 2 = 0 := by
171
171
constructor
172
172
· intro h
173
- exact h.zero 0 (by linarith )
173
+ exact h.zero 0 (by omega )
174
174
· intro h
175
175
refine' IsComplex.mk (fun i hi => _)
176
- obtain rfl : i = 0 := by linarith
176
+ obtain rfl : i = 0 := by omega
177
177
exact h
178
178
179
179
lemma isComplex₂_mk (S : ComposableArrows C 2 ) (w : S.map' 0 1 ≫ S.map' 1 2 = 0 ) :
@@ -188,10 +188,10 @@ lemma exact₂_iff (S : ComposableArrows C 2) (hS : S.IsComplex) :
188
188
S.Exact ↔ (S.sc' hS 0 1 2 ).Exact := by
189
189
constructor
190
190
· intro h
191
- exact h.exact 0 (by linarith )
191
+ exact h.exact 0 (by omega )
192
192
· intro h
193
193
refine' Exact.mk hS (fun i hi => _)
194
- obtain rfl : i = 0 := by linarith
194
+ obtain rfl : i = 0 := by omega
195
195
exact h
196
196
197
197
lemma exact₂_mk (S : ComposableArrows C 2 ) (w : S.map' 0 1 ≫ S.map' 1 2 = 0 )
@@ -216,7 +216,7 @@ lemma exact_iff_δ₀ (S : ComposableArrows C (n + 2)) :
216
216
· rw [exact₂_iff]; swap
217
217
· rw [isComplex₂_iff]
218
218
exact h.toIsComplex.zero 0
219
- exact h.exact 0 (by linarith )
219
+ exact h.exact 0 (by omega )
220
220
· exact Exact.mk (IsComplex.mk (fun i hi => h.toIsComplex.zero (i + 1 )))
221
221
(fun i hi => h.exact (i + 1 ))
222
222
· rintro ⟨h, h₀⟩
@@ -247,13 +247,13 @@ lemma exact_iff_δlast {n : ℕ} (S : ComposableArrows C (n + 2)) :
247
247
· rw [exact₂_iff]; swap
248
248
· rw [isComplex₂_iff]
249
249
exact h.toIsComplex.zero n
250
- exact h.exact n (by linarith )
250
+ exact h.exact n (by omega )
251
251
· rintro ⟨h, h'⟩
252
252
refine' Exact.mk (IsComplex.mk (fun i hi => _)) (fun i hi => _)
253
- · obtain hi | rfl := LE.le.lt_or_eq (show i ≤ n by linarith )
253
+ · obtain hi | rfl := LE.le.lt_or_eq (show i ≤ n by omega )
254
254
· exact h.toIsComplex.zero i
255
255
· exact h'.toIsComplex.zero 0
256
- · obtain hi | rfl := LE.le.lt_or_eq (show i ≤ n by linarith )
256
+ · obtain hi | rfl := LE.le.lt_or_eq (show i ≤ n by omega )
257
257
· exact h.exact i
258
258
· exact h'.exact 0
259
259
0 commit comments