Zulip Chat Archive
Stream: Is there code for X?
Topic: Membership in Sup of submodules
Adam Topaz (Feb 09 2021 at 03:02):
Do we have something along the following lines?
import linear_algebra
variables (A : Type*) [ring A] (M : Type*) [add_comm_group M] [module A M]
example {ι} (T : ι → submodule A M) (m : M) (cond : m ∈ ⨆ (i : ι), T i) :
∃ (F : finset ι), m ∈ ⨆ (f ∈ F), T f := sorry
Heather Macbeth (Feb 09 2021 at 03:10):
docs#submodule.exists_finset_of_mem_supr ?
Adam Topaz (Feb 09 2021 at 03:13):
Thanks! I don't know how I missed that!
Heather Macbeth (Feb 09 2021 at 03:13):
Take comfort in the fact that your lemma statement is virtually identical to the mathlib gold standard :)
Adam Topaz (Feb 09 2021 at 03:14):
The proof in mathlib seems more complicated than necessary.
Adam Topaz (Feb 09 2021 at 03:47):
import data.finset.basic
import linear_algebra
open_locale classical
variables {A : Type*} [ring A] {M : Type*} [add_comm_group M] [module A M] {ι : Type*} (T : ι → submodule A M)
example {ι} (T : ι → submodule A M) (m : M) (cond : m ∈ ⨆ (i : ι), T i) :
∃ (F : finset ι), m ∈ ⨆ (f ∈ F), T f :=
begin
let ι' : finset ι → submodule A M := λ S, ⨆ (s ∈ S), T s,
have : directed (≤) ι',
{ intros S T,
refine ⟨S ⊔ T, supr_le_supr _, supr_le_supr _⟩,
all_goals { intros y,
simp only [supr_le_iff, finset.sup_eq_union, finset.mem_union],
intros hy v hv,
refine submodule.mem_supr_of_mem (finset.mem_union_left _ hy) hv <|>
refine submodule.mem_supr_of_mem (finset.mem_union_right _ hy) hv } },
rw ← submodule.mem_supr_of_directed ι' this,
suffices : (⨆ (i : ι), T i) ≤ supr ι', by exact this cond,
refine supr_le_supr2 (λ i, ⟨{i},_⟩),
dsimp only [ι'],
simp [le_refl],
end
Adam Topaz (Feb 09 2021 at 03:47):
Maybe that's not much better :)
Last updated: Dec 20 2023 at 11:08 UTC