@@ -57,7 +57,7 @@ and the kernel of the presentation `Rˢ → M` is also finitely generated.
57
57
-/
58
58
class Module.FinitePresentation : Prop where
59
59
out : ∃ (s : Finset M), Submodule.span R (s : Set M) = ⊤ ∧
60
- (LinearMap.ker (Finsupp.total s M R Subtype.val )).FG
60
+ (LinearMap.ker (Finsupp.total R ((↑) : s → M) )).FG
61
61
62
62
instance (priority := 100 ) [h : Module.FinitePresentation R M] : Module.Finite R M := by
63
63
obtain ⟨s, hs₁, _⟩ := h
@@ -78,7 +78,7 @@ theorem Module.FinitePresentation.equiv_quotient [fp : Module.FinitePresentation
78
78
Module.Free R L ∧ Module.Finite R L ∧ K.FG := by
79
79
obtain ⟨ι, ⟨hι₁, hι₂⟩⟩ := fp
80
80
use ι →₀ R, inferInstance, inferInstance
81
- use LinearMap.ker (Finsupp.total { x // x ∈ ι } M R Subtype.val)
81
+ use LinearMap.ker (Finsupp.total R Subtype.val)
82
82
refine ⟨(LinearMap.quotKerEquivOfSurjective _ ?_).symm, inferInstance, inferInstance, hι₂⟩
83
83
apply LinearMap.range_eq_top.mp
84
84
simpa only [Finsupp.range_total, Subtype.range_coe_subtype, Finset.setOf_mem]
@@ -145,12 +145,12 @@ lemma Module.finitePresentation_of_surjective [h : Module.FinitePresentation R M
145
145
classical
146
146
obtain ⟨s, hs, hs'⟩ := h
147
147
obtain ⟨t, ht⟩ := hl'
148
- have H : Function.Surjective (Finsupp.total s M R Subtype.val ) :=
148
+ have H : Function.Surjective (Finsupp.total R ((↑) : s → M) ) :=
149
149
LinearMap.range_eq_top.mp (by rw [Finsupp.range_total, Subtype.range_val, ← hs]; rfl)
150
- apply Module.finitePresentation_of_free_of_surjective (l ∘ₗ Finsupp.total s M R Subtype.val)
150
+ apply Module.finitePresentation_of_free_of_surjective (l ∘ₗ Finsupp.total R Subtype.val)
151
151
(hl.comp H)
152
152
choose σ hσ using (show _ from H)
153
- have : Finsupp.total s M R Subtype.val '' (σ '' t) = t := by
153
+ have : Finsupp.total R Subtype.val '' (σ '' t) = t := by
154
154
simp only [Set.image_image, hσ, Set.image_id']
155
155
rw [LinearMap.ker_comp, ← ht, ← this, ← Submodule.map_span, Submodule.comap_map_eq,
156
156
← Finset.coe_image]
@@ -161,11 +161,11 @@ lemma Module.FinitePresentation.fg_ker [Module.Finite R M]
161
161
(LinearMap.ker l).FG := by
162
162
classical
163
163
obtain ⟨s, hs, hs'⟩ := h
164
- have H : Function.Surjective (Finsupp.total s N R Subtype.val ) :=
164
+ have H : Function.Surjective (Finsupp.total R ((↑) : s → N) ) :=
165
165
LinearMap.range_eq_top.mp (by rw [Finsupp.range_total, Subtype.range_val, ← hs]; rfl)
166
- obtain ⟨f, hf⟩ : ∃ f : (s →₀ R) →ₗ[R] M, l ∘ₗ f = (Finsupp.total s N R Subtype.val) := by
166
+ obtain ⟨f, hf⟩ : ∃ f : (s →₀ R) →ₗ[R] M, l ∘ₗ f = (Finsupp.total R Subtype.val) := by
167
167
choose f hf using show _ from hl
168
- exact ⟨Finsupp.total s M R (fun i ↦ f i), by ext; simp [hf]⟩
168
+ exact ⟨Finsupp.total R (fun i ↦ f i), by ext; simp [hf]⟩
169
169
have : (LinearMap.ker l).map (LinearMap.range f).mkQ = ⊤ := by
170
170
rw [← top_le_iff]
171
171
rintro x -
@@ -192,7 +192,7 @@ lemma Module.finitePresentation_of_ker [Module.FinitePresentation R N]
192
192
· rw [Submodule.map_top, LinearMap.range_eq_top.mpr hl]; exact Module.Finite.out
193
193
· rw [top_inf_eq, ← Submodule.fg_top]; exact Module.Finite.out
194
194
refine ⟨s, hs, ?_⟩
195
- let π := Finsupp.total s M R Subtype.val
195
+ let π := Finsupp.total R ((↑) : s → M)
196
196
have H : Function.Surjective π :=
197
197
LinearMap.range_eq_top.mp (by rw [Finsupp.range_total, Subtype.range_val, ← hs]; rfl)
198
198
have inst : Module.Finite R (LinearMap.ker (l ∘ₗ π)) := by
@@ -227,23 +227,23 @@ lemma Module.FinitePresentation.exists_lift_of_isLocalizedModule
227
227
[h : Module.FinitePresentation R M] (g : M →ₗ[R] N') :
228
228
∃ (h : M →ₗ[R] N) (s : S), f ∘ₗ h = s • g := by
229
229
obtain ⟨σ, hσ, τ, hτ⟩ := h
230
- let π := Finsupp.total σ M R Subtype.val
230
+ let π := Finsupp.total R ((↑) : σ → M)
231
231
have hπ : Function.Surjective π :=
232
232
LinearMap.range_eq_top.mp (by rw [Finsupp.range_total, Subtype.range_val, ← hσ]; rfl)
233
233
classical
234
234
choose s hs using IsLocalizedModule.surj S f
235
235
let i : σ → N :=
236
236
fun x ↦ (∏ j ∈ σ.erase x.1 , (s (g j)).2 ) • (s (g x)).1
237
237
let s₀ := ∏ j ∈ σ, (s (g j)).2
238
- have hi : f ∘ₗ Finsupp.total σ N R i = (s₀ • g) ∘ₗ π := by
238
+ have hi : f ∘ₗ Finsupp.total R i = (s₀ • g) ∘ₗ π := by
239
239
ext j
240
240
simp only [LinearMap.coe_comp, Function.comp_apply, Finsupp.lsingle_apply, Finsupp.total_single,
241
241
one_smul, LinearMap.map_smul_of_tower, ← hs, LinearMap.smul_apply, i, s₀, π]
242
242
rw [← mul_smul, Finset.prod_erase_mul]
243
243
exact j.prop
244
- have : ∀ x : τ, ∃ s : S, s • (Finsupp.total σ N R i x) = 0 := by
244
+ have : ∀ x : τ, ∃ s : S, s • (Finsupp.total R i x) = 0 := by
245
245
intros x
246
- convert_to ∃ s : S, s • (Finsupp.total σ N R i x) = s • 0
246
+ convert_to ∃ s : S, s • (Finsupp.total R i x) = s • 0
247
247
· simp only [smul_zero]
248
248
apply IsLocalizedModule.exists_of_eq (S := S) (f := f)
249
249
rw [← LinearMap.comp_apply, map_zero, hi, LinearMap.comp_apply]
@@ -252,7 +252,7 @@ lemma Module.FinitePresentation.exists_lift_of_isLocalizedModule
252
252
exact Submodule.subset_span x.prop
253
253
choose s' hs' using this
254
254
let s₁ := ∏ i : τ, s' i
255
- have : LinearMap.ker π ≤ LinearMap.ker (s₁ • Finsupp.total σ N R i) := by
255
+ have : LinearMap.ker π ≤ LinearMap.ker (s₁ • Finsupp.total R i) := by
256
256
rw [← hτ, Submodule.span_le]
257
257
intro x hxσ
258
258
simp only [s₁]
0 commit comments