feat(LinearAlgebra/MultilinearMap): generalize MultilinearMap with common RingHom - #42534
feat(LinearAlgebra/MultilinearMap): generalize MultilinearMap with common RingHom#42534gloges wants to merge 21 commits into
MultilinearMap with common RingHom#42534Conversation
Welcome new contributor!Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests. We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the If you haven't already done so, please come to https://leanprover.zulipchat.com/, introduce yourself, and mention your new PR. Thank you again for joining our community. |
PR summary 179fedd67fImport changes for modified filesNo significant changes to the import graph Import changes for all files
|
| g.compMultilinearMap (s • f) = s • g.compMultilinearMap f := | ||
| theorem compMultilinearMap_smul [DistribSMul S' N₂] [DistribSMul S' N₂'] | ||
| [SMulCommClass R₂ S' N₂] [SMulCommClass R₂ S' N₂'] [CompatibleSMul N₂ N₂' S' R₂] | ||
| (g : N₂ →ₗ[R₂] N₂') (s : S') (f : MultilinearMap σ₁₂ M₁ N₂) : |
There was a problem hiding this comment.
Do we want a semilinear version of this lemma too?
There was a problem hiding this comment.
Sounds good - added as compMultilinearMap_smulₛₗ.
| [LinearMap.CompatibleSMul N₂' N₂ S R₂] (g : N₂ ≃ₗ[R₂] N₂') : | ||
| MultilinearMap σ₁₂ M₁ N₂ ≃ₗ[S] MultilinearMap σ₁₂ M₁ N₂' where |
There was a problem hiding this comment.
Here I think we can introduce another ring in g
There was a problem hiding this comment.
I've added LinearMap.compMultilinearMapₛₗ and LinearEquiv.multilinearMapCongrRightₛₗ for when R₂ and R₃ are commutative (making use of the new compMultilinearMap_smulₛₗ). Are these name okay?
| theorem map_piecewise_smul [DecidableEq ι] (c : ι → R) (m : ∀ i, M₁ i) (s : Finset ι) : | ||
| f (s.piecewise (fun i => c i • m i) m) = (∏ i ∈ s, c i) • f m := by | ||
| theorem map_piecewise_smul [DecidableEq ι] (c : ι → R) (m : ∀ i, M i) (s : Finset ι) : | ||
| f (s.piecewise (fun i => c i • m i) m) = (∏ i ∈ s, σ (c i)) • f m := by |
There was a problem hiding this comment.
Would we prefer the following, do you think?
| f (s.piecewise (fun i => c i • m i) m) = (∏ i ∈ s, σ (c i)) • f m := by | |
| f (s.piecewise (fun i => c i • m i) m) = σ (∏ i ∈ s, c i) • f m := by |
There was a problem hiding this comment.
I think ∏ i ∈ s, σ (c i) would be better - it doesn't require that R be commutative and is in normal form even when it is (c.f. map_prod).
| `MultilinearMap R s E` with the property that its composition with the canonical | ||
| `MultilinearMap R s (⨂[R] i, s i)` is the given multilinear map. -/ | ||
| def liftAux (φ : MultilinearMap R s E) : (⨂[R] i, s i) →+ E := | ||
| def liftAux (φ : MultilinearMap (.id R) s E) : (⨂[R] i, s i) →+ E := |
There was a problem hiding this comment.
Is the intent to generalize this in a follow-up PR?
There was a problem hiding this comment.
Yes - after some tinkering I think it will take more than superficial changes to generalize the TensorProduct.lift and TensorProduct.map machinery, so I'd like to do this in a separate PR.
eric-wieser
left a comment
There was a problem hiding this comment.
This looks great, thanks! I think it's ok to keep MultilinearMap (.id R) around in downstream files in this PR, and address those in a follow-up.
Generalizes multilinear maps to multi-semilinear maps.
In analogy with
LinearMap σ M N,MultilinearMap σ M Nis the space of multilinear maps from theR-module∀ i, M ito theS-moduleNover a ring homomorphismσ : R →+* S: fixing all but one coordinate gives a mapM i →ₛₗ[σ] N.Both
ContinuousLinearMapandAlternatingMapextendMultilinearMapand are left defined in terms ofRingHom.id.