Pi types of modules #
This file defines constructors for linear maps whose domains or codomains are pi types.
It contains theorems relating these to each other, as well as to LinearMap.ker.
Main definitions #
- pi types in the codomain:
- pi types in the domain:
pi construction for linear functions. From a family of linear functions it produces a linear
function into a family of modules.
Equations
- LinearMap.pi f = let __src := Pi.addHom fun (i : ι) => (f i).toAddHom; { toAddHom := { toFun := fun (c : M₂) (i : ι) => (f i) c, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
The projections from a family of modules are linear maps.
Note: known here as LinearMap.proj, this construction is in other categories called eval, for
example Pi.evalMonoidHom, Pi.evalRingHom.
Equations
- LinearMap.proj i = { toAddHom := { toFun := Function.eval i, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Linear map between the function spaces I → M₂ and I → M₃, induced by a linear map f
between M₂ and M₃.
Equations
- LinearMap.compLeft f I = let __src := AddMonoidHom.compLeft (LinearMap.toAddMonoidHom f) I; { toAddHom := { toFun := fun (h : I → M₂) => ⇑f ∘ h, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
The LinearMap version of AddMonoidHom.single and Pi.single.
Equations
- LinearMap.single i = let __src := AddMonoidHom.single φ i; { toAddHom := { toFun := Pi.single i, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
The linear equivalence between linear functions on a finite product of modules and families of functions on these modules. See note [bundled maps over different rings].
Equations
- One or more equations did not get rendered due to their size.
Instances For
This is used as the ext lemma instead of LinearMap.pi_ext for reasons explained in
note [partially-applied ext lemmas].
If I and J are disjoint index sets, the product of the kernels of the Jth projections of
φ is linearly equivalent to the product over I.
Equations
- One or more equations did not get rendered due to their size.
Instances For
diag i j is the identity map if i = j. Otherwise it is the constant 0 map.
Equations
- LinearMap.diag i j = Function.update 0 i LinearMap.id j
Instances For
A linear map f applied to x : ι → R can be computed using the image under f of elements
of the canonical basis.
A version of Set.pi for submodules. Given an index set I and a family of submodules
p : (i : ι) → Submodule R (φ i), pi I s is the submodule of dependent functions
f : (i : ι) → φ i such that f i belongs to p a whenever i ∈ I.
Equations
- Submodule.pi I p = { toAddSubmonoid := { toAddSubsemigroup := { carrier := Set.pi I fun (i : ι) => ↑(p i), add_mem' := ⋯ }, zero_mem' := ⋯ }, smul_mem' := ⋯ }
Instances For
Combine a family of linear equivalences into a linear equivalence of pi-types.
This is Equiv.piCongrRight as a LinearEquiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transport dependent functions through an equivalence of the base space.
This is Equiv.piCongrLeft' as a LinearEquiv.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Transporting dependent functions through an equivalence of the base, expressed as a "simplification".
This is Equiv.piCongrLeft as a LinearEquiv
Equations
- LinearEquiv.piCongrLeft R φ e = LinearEquiv.symm (LinearEquiv.piCongrLeft' R φ e.symm)
Instances For
This is Equiv.piOptionEquivProd as a LinearEquiv
Equations
- One or more equations did not get rendered due to their size.
Instances For
Linear equivalence between linear functions Rⁿ → M and Mⁿ. The spaces Rⁿ and Mⁿ
are represented as ι → R and ι → M, respectively, where ι is a finite type.
This as an S-linear equivalence, under the assumption that S acts on M commuting with R.
When R is commutative, we can take this to be the usual action with S = R.
Otherwise, S = ℕ shows that the equivalence is additive.
See note [bundled maps over different rings].
Equations
- LinearEquiv.piRing R M ι S = LinearEquiv.trans (LinearEquiv.symm (LinearMap.lsum R (fun (x : ι) => R) S)) (LinearEquiv.piCongrRight fun (x : ι) => LinearMap.ringLmapEquivSelf R S M)
Instances For
Equiv.sumArrowEquivProdArrow as a linear equivalence.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Linear equivalence between dependent functions (i : Fin 2) → M i and M 0 × M 1.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Function.extend s f 0 as a bundled linear map.
Equations
- Function.ExtendByZero.linearMap R s = let __src := Function.ExtendByZero.hom R s; { toAddHom := { toFun := fun (f : ι → R) => Function.extend s f 0, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
Bundled versions of Matrix.vecCons and Matrix.vecEmpty #
The idea of these definitions is to be able to define a map as x ↦ ![f₁ x, f₂ x, f₃ x], where
f₁ f₂ f₃ are already linear maps, as f₁.vecCons <| f₂.vecCons <| f₃.vecCons <| vecEmpty.
While the same thing could be achieved using LinearMap.pi ![f₁, f₂, f₃], this is not
definitionally equal to the result using LinearMap.vecCons, as Fin.cases and function
application do not commute definitionally.
Versions for when f₁ f₂ f₃ are bilinear maps are also provided.
The linear map defeq to Matrix.vecEmpty
Equations
- LinearMap.vecEmpty = { toAddHom := { toFun := fun (x : M) => ![], map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
A linear map into Fin n.succ → M₃ can be built out of a map into M₃ and a map into
Fin n → M₃.
Equations
- LinearMap.vecCons f g = { toAddHom := { toFun := fun (m : M) => Matrix.vecCons (f m) (g m), map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
The empty bilinear map defeq to Matrix.vecEmpty
Equations
- LinearMap.vecEmpty₂ = { toAddHom := { toFun := fun (x : M) => LinearMap.vecEmpty, map_add' := ⋯ }, map_smul' := ⋯ }
Instances For
A bilinear map into Fin n.succ → M₃ can be built out of a map into M₃ and a map into
Fin n → M₃
Equations
- LinearMap.vecCons₂ f g = { toAddHom := { toFun := fun (m : M) => LinearMap.vecCons (f m) (g m), map_add' := ⋯ }, map_smul' := ⋯ }