@@ -38,7 +38,7 @@ generators and relations.
3838
3939 -/
4040
41- @[expose] public section
41+ @[expose] public noncomputable section
4242
4343assert_not_exists Cardinal
4444
@@ -68,16 +68,10 @@ variable {A} (relations : Relations.{w₀, w₁} A)
6868This is the quotient of the free `A`-module on `relations.G` by the submodule generated by
6969the given relations. -/
7070def Quotient := (relations.G →₀ A) ⧸ Submodule.span A (Set.range relations.relation)
71-
72- noncomputable instance : AddCommGroup relations.Quotient := by
73- dsimp only [Quotient]; infer_instance
74-
75- set_option backward.isDefEq.respectTransparency false in
76- noncomputable instance : Module A relations.Quotient := by
77- dsimp only [Quotient]; infer_instance
71+ deriving AddCommGroup, Module A
7872
7973/-- The canonical (surjective) linear map `(relations.G →₀ A) →ₗ[A] relations.Quotient`. -/
80- noncomputable def toQuotient : (relations.G →₀ A) →ₗ[A] relations.Quotient := Submodule.mkQ _
74+ def toQuotient : (relations.G →₀ A) →ₗ[A] relations.Quotient := Submodule.mkQ _
8175
8276variable {relations} in
8377@[ext]
@@ -105,7 +99,7 @@ lemma toQuotient_relation (r : relations.R) :
10599
106100/-- The linear map `(relations.R →₀ A) →ₗ[A] (relations.G →₀ A)` corresponding to the relations
107101given by `relations : Relations A`. -/
108- noncomputable def map : (relations.R →₀ A) →ₗ[A] (relations.G →₀ A) :=
102+ def map : (relations.R →₀ A) →ₗ[A] (relations.G →₀ A) :=
109103 Finsupp.linearCombination _ relations.relation
110104
111105@[simp]
@@ -146,7 +140,7 @@ variable (solution : relations.Solution M)
146140
147141/-- Given `relations : Relations A` and a solution in `relations.Solution M`, this is
148142the linear map `(relations.G →₀ A) →ₗ[A] M` canonically associated to the solution. -/
149- noncomputable def π : (relations.G →₀ A) →ₗ[A] M := Finsupp.linearCombination _ solution.var
143+ def π : (relations.G →₀ A) →ₗ[A] M := Finsupp.linearCombination _ solution.var
150144
151145@[simp]
152146lemma π_single (g : relations.G) :
@@ -175,7 +169,7 @@ lemma span_relation_le_ker_π :
175169
176170/-- Given `relations : Relations A` and `solution : relations.Solution M`, this is
177171the canonical linear map `relations.Quotient →ₗ[A] M` from the module. -/
178- noncomputable def fromQuotient : relations.Quotient →ₗ[A] M :=
172+ def fromQuotient : relations.Quotient →ₗ[A] M :=
179173 Submodule.liftQ _ solution.π solution.span_relation_le_ker_π
180174
181175@[simp]
@@ -222,7 +216,7 @@ for `relations.Solution M` for which the data is given as
222216a linear map `π : (relations.G →₀ A) →ₗ[A] M`. (See also `ofπ'` for an alternate
223217vanishing criterion.) -/
224218@ [simps -isSimp]
225- noncomputable def ofπ : relations.Solution M where
219+ def ofπ : relations.Solution M where
226220 var g := π (Finsupp.single g 1 )
227221 linearCombination_var_relation r := by
228222 have : π = Finsupp.linearCombination _ (fun g ↦ π (Finsupp.single g 1 )) := by ext; simp
@@ -241,7 +235,7 @@ variable (π : (relations.G →₀ A) →ₗ[A] M) (hπ : π.comp relations.map
241235/-- Variant of `ofπ` where the vanishing condition is expressed in terms
242236of a composition of linear maps. -/
243237@ [simps! -isSimp]
244- noncomputable def ofπ' : relations.Solution M :=
238+ def ofπ' : relations.Solution M :=
245239 ofπ π (fun r ↦ by
246240 simpa using DFunLike.congr_fun hπ (Finsupp.single r 1 ))
247241
@@ -298,7 +292,7 @@ include h
298292/-- When `M` admits a presentation by generators and relations given
299293by `solution : relations.Solutions M`, this is the associated linear equivalence
300294`relations.Quotient ≃ₗ[A] M`. -/
301- noncomputable def linearEquiv : relations.Quotient ≃ₗ[A] M := LinearEquiv.ofBijective _ h.bijective
295+ def linearEquiv : relations.Quotient ≃ₗ[A] M := LinearEquiv.ofBijective _ h.bijective
302296
303297@[simp]
304298lemma linearEquiv_apply (x : relations.Quotient) :
@@ -324,7 +318,7 @@ variable {N : Type v'} [AddCommGroup N] [Module A N]
324318
325319/-- If `M` admits a presentation by generators and relations, and we have a solution of the
326320same equations in a module `N`, then this is the canonical induced linear map `M →ₗ[A] N`. -/
327- noncomputable def desc (s : relations.Solution N) : M →ₗ[A] N :=
321+ def desc (s : relations.Solution N) : M →ₗ[A] N :=
328322 s.fromQuotient.comp h.linearEquiv.symm.toLinearMap
329323
330324@[simp]
@@ -358,7 +352,7 @@ lemma postcomp_injective {f f' : M →ₗ[A] N}
358352linear maps from `M` can be (naturally) identified to the solutions of
359353certain linear equations. -/
360354@[simps]
361- noncomputable def linearMapEquiv : (M →ₗ[A] N) ≃ relations.Solution N where
355+ def linearMapEquiv : (M →ₗ[A] N) ≃ relations.Solution N where
362356 toFun f := solution.postcomp f
363357 invFun s := h.desc s
364358 left_inv f := h.postcomp_injective (by simp)
@@ -370,7 +364,7 @@ variable {solution' : relations.Solution N} (h' : solution'.IsPresentation)
370364
371365/-- Uniqueness (up to a unique linear equivalence) of the module defined
372366by generators and relations. -/
373- noncomputable def uniq : M ≃ₗ[A] N := LinearEquiv.ofLinear
367+ def uniq : M ≃ₗ[A] N := LinearEquiv.ofLinear
374368 (h.desc solution') (h'.desc solution)
375369 (h'.postcomp_injective (by simp))
376370 (h.postcomp_injective (by simp))
@@ -407,7 +401,7 @@ variable (relations)
407401/-- Given `relations : Relations A`, this is the obvious solution to `relations`
408402in the quotient `relations.Quotient`. -/
409403@[simps!]
410- noncomputable def ofQuotient : relations.Solution relations.Quotient :=
404+ def ofQuotient : relations.Solution relations.Quotient :=
411405 ofπ relations.toQuotient (by simp)
412406
413407@[simp]
0 commit comments