Zulip Chat Archive
Stream: maths
Topic: Weakening docs#submodule.mul_induction_on
Eric Wieser (Jan 17 2022 at 16:34):
Is it possible to eliminate the hs : ∀ (r : R) x, C x → C (r • x)
hypothesis from docs#submodule.mul_induction_on? My hand-wavey argument is that:
- any element of
M * N
must be of the form∑ᵢ mᵢ*nᵢ
wheremᵢ ∈ M
andnᵢ ∈ M
ha : ∀ x y, C x → C y → C (x + y)
already tells us that it's sufficient to proveC (mᵢnᵢ)
to showC (∑ᵢ mᵢnᵢ)
hm : ∀ (m ∈ M) (n ∈ N), C (m * n)
can proveC (mᵢnᵢ)
Is my claim 1) correct? Can I get there without going through docs#submodule.mem_bsupr_iff_exists_dfinsupp?
Alex J. Best (Jan 17 2022 at 16:37):
Are you talking about docs#submodule.mul_induction_on ?
Yaël Dillies (Jan 17 2022 at 16:50):
I'm pretty 1
is false when A
is noncommutative.
Yaël Dillies (Jan 17 2022 at 16:51):
Or is it the commutativity of R
that matters?
Eric Wieser (Jan 17 2022 at 16:58):
I think only the commutativity of R
matters
Yaël Dillies (Jan 17 2022 at 16:59):
Then it must be true.
Eric Wieser (Jan 17 2022 at 17:34):
I think my difficulty amounts to:
-- is this true?
lemma to_add_submonoid_mul (M N : submodule R A) :
(M * N).to_add_submonoid = M.to_add_submonoid * N.to_add_submonoid := sorry
(which needs #11522 for the *
on the LHS)
Eric Wieser (Jan 17 2022 at 18:24):
Which in turn I think needs:
lemma supr_to_add_submonoid {ι} (M : ι → submodule R A) :
(⨆ i, M i).to_add_submonoid = ⨆ i, (M i).to_add_submonoid :=
sorry
Yaël Dillies (Jan 17 2022 at 18:28):
That looks wrong. Surely (M * N).to_add_submonoid = M.to_add_submonoid + N.to_add_submonoid
is true instead.
Yaël Dillies (Jan 17 2022 at 18:29):
Also, you surely meant "the *
on the RHS"
Yaël Dillies (Jan 17 2022 at 18:32):
Oh wait, I was reading docs#submonoid.to_add_submonoid. Your thing is probably true.
Eric Wieser (Jan 17 2022 at 18:35):
#11525 proves the above supr
lemma for sup
Eric Wieser (Jan 17 2022 at 23:02):
Proof was pretty ugly, but I guess not difficult:
lemma supr_to_add_submonoid {ι : Sort*} (p : ι → submodule R M) :
(⨆ i, p i).to_add_submonoid = ⨆ i, (p i).to_add_submonoid :=
begin
apply le_antisymm,
{ intros x hx,
rw [mem_to_add_submonoid, supr_eq_span] at hx,
simp_rw [add_submonoid.supr_eq_closure, coe_to_add_submonoid],
refine submodule.span_induction hx (λ x hx, _) _ (λ x y hx hy, _) (λ r x hx, _),
{ exact add_submonoid.subset_closure hx },
{ exact add_submonoid.zero_mem _ },
{ exact add_submonoid.add_mem _ hx hy },
{ apply add_submonoid.closure_induction hx,
{ rintros x ⟨_, ⟨i, rfl⟩, hix : x ∈ p i⟩,
apply add_submonoid.subset_closure (set.mem_Union.mpr ⟨i, _⟩),
exact smul_mem _ r hix },
{ rw smul_zero,
exact add_submonoid.zero_mem _ },
{ intros x y hx hy,
rw smul_add,
exact add_submonoid.add_mem _ hx hy, } } },
{ refine supr_le (λ i, _),
refine to_add_submonoid_mono _,
exact le_supr _ i, }
end
Presumably there's a slightly easier way to get there...
Last updated: Dec 20 2023 at 11:08 UTC