mathlib icon indicating copy to clipboard operation
mathlib copied to clipboard

feat(linear_algebra/decomposition): Define module decompositions and prove basic facts

Open winston-h-zhang opened this issue 3 years ago • 7 comments

We define a new structure decomposition ι R M as the type of ι-indexed decompositions of M. We provide a correspondence between internal direct sums and decompositions. Some helpful auxiliary lemmas have been added as well.


Suggestions or criticisms about how I could do this better is certainly welcome!

  • [x] depends on: #8274
  • [x] depends on: #8475

Open in Gitpod

winston-h-zhang avatar Jul 10 '21 02:07 winston-h-zhang

I'm confused, what is Merge branch 'master' into eric-wieser/direct_sum.is_internal.supr_eq_top doing? Is it modifying #8274 or #8246? My Github knowledge is too basic for this but I'm curious to understand how it works

winston-h-zhang avatar Jul 12 '21 15:07 winston-h-zhang

That commit is a commit that I made in #8274 (hence it showing me as the author), it was me pulling in the latest changes from bors

eric-wieser avatar Jul 12 '21 16:07 eric-wieser

I've pushed an update to this to resolve the merge conflicts and remove the obviously duplicate lemmas. There's still some less trivial duplication between the mem_supr and dfinsupp lemmas which I've added a TODO comment about.

eric-wieser avatar Sep 10 '21 16:09 eric-wieser

@acxxa, I think #9202 contains most of the interesting proofs from this PR; all that's left is the decomposition API.

Did you have a motivation for bundling factors rather than leaving it unbundled? Was there something you planned to build on top of this?

eric-wieser avatar Oct 01 '21 17:10 eric-wieser

Note that graded_algebra is now merged. I think probably to make it play well with this PR, we want to change it's definition from

class graded_algebra extends set_like.graded_monoid 𝒜 :=
(decompose' : A → ⨁ i, 𝒜 i)
(left_inv : function.left_inverse decompose' (direct_sum.submodule_coe 𝒜))
(right_inv : function.right_inverse decompose' (direct_sum.submodule_coe 𝒜))

to

-- this is essentially your `decomposition`
class graded_module :=
(decompose' : A → ⨁ i, 𝒜 i)
(left_inv : function.left_inverse decompose' (direct_sum.submodule_coe 𝒜))
(right_inv : function.right_inverse decompose' (direct_sum.submodule_coe 𝒜))

class graded_algebra extends set_like.graded_monoid 𝒜, graded_module 𝒜

eric-wieser avatar Jan 20 '22 16:01 eric-wieser

This PR/issue depends on:

  • ~~leanprover-community/mathlib#8274~~
  • ~~leanprover-community/mathlib#8475~~ By Dependent Issues (🤖). Happy coding!

@eric-wieser, what's your opinion on this PR nowadays?

YaelDillies avatar Apr 22 '23 09:04 YaelDillies