@@ -110,6 +110,10 @@ lemma LocallyFiniteSupport.finite_inter_support_of_isCompact {W : Set X}
110110 rw [← lem f.support W]
111111 exact Finite.image Subtype.val this
112112
113+ lemma Function.locallyFinsupp.locallyFiniteSupport [Zero Y] (f : locallyFinsupp X Y) :
114+ LocallyFiniteSupport f.toFun :=
115+ (f.supportLocallyFiniteWithinDomain' · (by trivial))
116+
113117namespace Function.locallyFinsuppWithin
114118
115119/--
@@ -244,9 +248,9 @@ defined pointwise.
244248
245249variable (U) in
246250/--
247- Functions with locally finite support within `U` form an additive subgroup of functions X → Y.
251+ Functions with locally finite support within `U` form an additive submonoid of functions ` X → Y` .
248252-/
249- protected def addSubgroup [AddCommGroup Y] : AddSubgroup (X → Y) where
253+ protected def addSubmonoid [AddMonoid Y] : AddSubmonoid (X → Y) where
250254 carrier := {f | f.support ⊆ U ∧ ∀ z ∈ U, ∃ t ∈ 𝓝 z, Set.Finite (t ∩ f.support)}
251255 zero_mem' := by
252256 simp only [support_subset_iff, ne_eq, mem_setOf_eq, Pi.zero_apply, not_true_eq_false,
@@ -268,51 +272,84 @@ protected def addSubgroup [AddCommGroup Y] : AddSubgroup (X → Y) where
268272 mem_inter_iff, mem_support, Pi.add_apply, mem_union, true_and]
269273 by_contra! hCon
270274 simp_all
271- neg_mem' {f} hf := by
272- simp_all
273275
274- protected lemma memAddSubgroup [AddCommGroup Y] (D : locallyFinsuppWithin U Y) :
276+ protected lemma memAddSubmonoid [AddMonoid Y] (D : locallyFinsuppWithin U Y) :
277+ (D : X → Y) ∈ locallyFinsuppWithin.addSubmonoid U :=
278+ ⟨D.supportWithinDomain, D.supportLocallyFiniteWithinDomain⟩
279+
280+ variable (U) in
281+ /--
282+ Functions with locally finite support within `U` form an additive subgroup of functions `X → Y`.
283+ -/
284+ protected def addSubgroup [AddGroup Y] : AddSubgroup (X → Y) where
285+ carrier := {f | f.support ⊆ U ∧ ∀ z ∈ U, ∃ t ∈ 𝓝 z, Set.Finite (t ∩ f.support)}
286+ __ := locallyFinsuppWithin.addSubmonoid U
287+ neg_mem' {f} hf := by simp_all
288+
289+ protected lemma memAddSubgroup [AddGroup Y] (D : locallyFinsuppWithin U Y) :
275290 (D : X → Y) ∈ locallyFinsuppWithin.addSubgroup U :=
276291 ⟨D.supportWithinDomain, D.supportLocallyFiniteWithinDomain⟩
277292
278293/--
279294Assign a function with locally finite support within `U` to a function in the subgroup.
280295-/
281296@[simps]
282- def mk_of_mem [AddCommGroup Y] (f : X → Y) (hf : f ∈ locallyFinsuppWithin.addSubgroup U) :
297+ def mk_of_mem_addSubmonoid [AddMonoid Y] (f : X → Y)
298+ (hf : f ∈ locallyFinsuppWithin.addSubmonoid U) :
283299 locallyFinsuppWithin U Y := ⟨f, hf.1 , hf.2 ⟩
284300
285- instance [AddCommGroup Y] : Zero (locallyFinsuppWithin U Y) where
286- zero := mk_of_mem 0 <| zero_mem _
301+ instance [AddMonoid Y] : Zero (locallyFinsuppWithin U Y) where
302+ zero := mk_of_mem_addSubmonoid 0 <| zero_mem _
303+
304+ instance [AddMonoid Y] : Add (locallyFinsuppWithin U Y) where
305+ add D₁ D₂ := mk_of_mem_addSubmonoid (D₁ + D₂) <| add_mem D₁.memAddSubmonoid D₂.memAddSubmonoid
287306
288- instance [AddCommGroup Y] : Add (locallyFinsuppWithin U Y) where
289- add D₁ D₂ := mk_of_mem (D₁ + D₂ ) <| add_mem D₁.memAddSubgroup D₂.memAddSubgroup
307+ instance [AddMonoid Y] : SMul ℕ (locallyFinsuppWithin U Y) where
308+ smul n D := mk_of_mem_addSubmonoid (n • D ) <| nsmul_mem D.memAddSubmonoid n
290309
291- instance [AddCommGroup Y] : Neg (locallyFinsuppWithin U Y) where
292- neg D := mk_of_mem (-D) <| neg_mem D.memAddSubgroup
310+ /--
311+ Assign a function with locally finite support within `U` to a function in the subgroup.
312+ -/
313+ @[simps]
314+ def mk_of_mem_addSubgroup [AddGroup Y] (f : X → Y) (hf : f ∈ locallyFinsuppWithin.addSubgroup U) :
315+ locallyFinsuppWithin U Y := ⟨f, hf.1 , hf.2 ⟩
293316
294- instance [AddCommGroup Y] : Sub (locallyFinsuppWithin U Y) where
295- sub D₁ D₂ := mk_of_mem (D₁ - D₂) <| sub_mem D₁.memAddSubgroup D₂.memAddSubgroup
317+ @ [deprecated (since := "2026-03-06" )] alias mk_of_mem := mk_of_mem_addSubgroup
296318
297- instance [AddCommGroup Y] : SMul ℕ (locallyFinsuppWithin U Y) where
298- smul n D := mk_of_mem (n • D) <| nsmul_mem D.memAddSubgroup n
319+ instance [AddGroup Y] : Neg (locallyFinsuppWithin U Y) where
320+ neg D := mk_of_mem_addSubgroup (- D) <| neg_mem D.memAddSubgroup
299321
300- instance [AddCommGroup Y] : SMul ℤ (locallyFinsuppWithin U Y) where
301- smul n D := mk_of_mem (n • D ) <| zsmul_mem D .memAddSubgroup n
322+ instance [AddGroup Y] : Sub (locallyFinsuppWithin U Y) where
323+ sub D₁ D₂ := mk_of_mem_addSubgroup (D₁ - D₂ ) <| sub_mem D₁ .memAddSubgroup D₂.memAddSubgroup
302324
303- @[simp] lemma coe_zero [AddCommGroup Y] :
325+ instance [AddGroup Y] : SMul ℤ (locallyFinsuppWithin U Y) where
326+ smul n D := mk_of_mem_addSubgroup (n • D) <| zsmul_mem D.memAddSubgroup n
327+
328+ @[simp] lemma coe_zero [AddMonoid Y] :
304329 ((0 : locallyFinsuppWithin U Y) : X → Y) = 0 := rfl
305- @[simp] lemma coe_add [AddCommGroup Y] (D₁ D₂ : locallyFinsuppWithin U Y) :
330+ @[simp] lemma coe_add [AddMonoid Y] (D₁ D₂ : locallyFinsuppWithin U Y) :
306331 (↑(D₁ + D₂) : X → Y) = D₁ + D₂ := rfl
307- @[simp] lemma coe_neg [AddCommGroup Y] (D : locallyFinsuppWithin U Y) :
332+ @[simp] lemma coe_neg [AddGroup Y] (D : locallyFinsuppWithin U Y) :
308333 (↑(-D) : X → Y) = -(D : X → Y) := rfl
309- @[simp] lemma coe_sub [AddCommGroup Y] (D₁ D₂ : locallyFinsuppWithin U Y) :
334+ @[simp] lemma coe_sub [AddGroup Y] (D₁ D₂ : locallyFinsuppWithin U Y) :
310335 (↑(D₁ - D₂) : X → Y) = D₁ - D₂ := rfl
311- @[simp] lemma coe_nsmul [AddCommGroup Y] (D : locallyFinsuppWithin U Y) (n : ℕ) :
336+ @[simp] lemma coe_nsmul [AddMonoid Y] (D : locallyFinsuppWithin U Y) (n : ℕ) :
312337 (↑(n • D) : X → Y) = n • (D : X → Y) := rfl
313- @[simp] lemma coe_zsmul [AddCommGroup Y] (D : locallyFinsuppWithin U Y) (n : ℤ) :
338+ @[simp] lemma coe_zsmul [AddGroup Y] (D : locallyFinsuppWithin U Y) (n : ℤ) :
314339 (↑(n • D) : X → Y) = n • (D : X → Y) := rfl
315340
341+ instance [AddMonoid Y] : AddMonoid (locallyFinsuppWithin U Y) :=
342+ Injective.addMonoid (M₁ := locallyFinsuppWithin U Y) (M₂ := X → Y)
343+ _ coe_injective coe_zero coe_add coe_nsmul
344+
345+ instance [AddCommMonoid Y] : AddCommMonoid (locallyFinsuppWithin U Y) :=
346+ Injective.addCommMonoid (M₁ := locallyFinsuppWithin U Y) (M₂ := X → Y)
347+ _ coe_injective coe_zero coe_add coe_nsmul
348+
349+ instance [AddGroup Y] : AddGroup (locallyFinsuppWithin U Y) :=
350+ Injective.addGroup (M₁ := locallyFinsuppWithin U Y) (M₂ := X → Y)
351+ _ coe_injective coe_zero coe_add coe_neg coe_sub coe_nsmul coe_zsmul
352+
316353instance [AddCommGroup Y] : AddCommGroup (locallyFinsuppWithin U Y) :=
317354 Injective.addCommGroup (M₁ := locallyFinsuppWithin U Y) (M₂ := X → Y)
318355 _ coe_injective coe_zero coe_add coe_neg coe_sub coe_nsmul coe_zsmul
0 commit comments