Finsupps supported on a given submodule #
Finsupp.restrictDom:Finsupp.filteras a linear map toFinsupp.supported s;Finsupp.supported R R sand codomainSubmodule.span R (v '' s);Finsupp.supportedEquivFinsupp: a linear equivalence between the functionsα →₀ Msupported onsand the functionss →₀ M;Finsupp.domLCongr: aLinearEquivversion ofFinsupp.domCongr;Finsupp.congr: if the setssandtare equivalent, thensupported M R sis equivalent tosupported M R t;
Tags #
function with finite support, module, linear algebra
def
Finsupp.supported
{α : Type u_1}
(M : Type u_2)
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
:
Finsupp.supported M R s is the R-submodule of all p : α →₀ M such that p.support ⊆ s.
Instances For
theorem
Finsupp.mem_supported'
{α : Type u_1}
{M : Type u_2}
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
{s : Set α}
(p : α →₀ M)
:
p ∈ supported M R s ↔ ∀ x ∉ s, p x = 0
theorem
Finsupp.mem_supported_support
{α : Type u_1}
{M : Type u_2}
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
(p : α →₀ M)
:
theorem
Finsupp.single_mem_span_single
{α : Type u_1}
(R : Type u_5)
[Semiring R]
[Nontrivial R]
{a : α}
{s : Set α}
:
theorem
Finsupp.span_le_supported_biUnion_support
{α : Type u_1}
{M : Type u_2}
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set (α →₀ M))
:
noncomputable def
Finsupp.restrictDom
{α : Type u_1}
(M : Type u_2)
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
[DecidablePred fun (x : α) => x ∈ s]
:
Interpret Finsupp.filter s as a linear map from α →₀ M to supported M R s.
Instances For
@[simp]
theorem
Finsupp.restrictDom_apply
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
(l : α →₀ M)
[DecidablePred fun (x : α) => x ∈ s]
:
↑((restrictDom M R s) l) = filter (fun (x : α) => x ∈ s) l
theorem
Finsupp.restrictDom_comp_subtype
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
[DecidablePred fun (x : α) => x ∈ s]
:
restrictDom M R s ∘ₗ (supported M R s).subtype = LinearMap.id
theorem
Finsupp.range_restrictDom
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
[DecidablePred fun (x : α) => x ∈ s]
:
(restrictDom M R s).range = ⊤
@[simp]
theorem
Finsupp.supported_empty
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
@[simp]
theorem
Finsupp.supported_univ
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
:
theorem
Finsupp.disjoint_supported_supported_iff
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
[Nontrivial M]
{s t : Set α}
:
theorem
Finsupp.codisjoint_supported_supported
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
{s t : Set α}
(h : Codisjoint s t)
:
Codisjoint (supported M R s) (supported M R t)
theorem
Finsupp.codisjoint_supported_supported_iff
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
[Nontrivial M]
{s t : Set α}
:
Codisjoint (supported M R s) (supported M R t) ↔ Codisjoint s t
noncomputable def
Finsupp.supportedEquivFinsupp
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
:
Interpret Finsupp.restrictSupportEquiv as a linear equivalence between
supported M R s and s →₀ M.
Instances For
@[simp]
theorem
Finsupp.supportedEquivFinsupp_apply_apply
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
(a✝ : ↥(supported M R s))
(a✝¹ : { x : α // x ∈ s })
:
((supportedEquivFinsupp s) a✝) a✝¹ = ↑a✝ ↑a✝¹
@[simp]
theorem
Finsupp.supportedEquivFinsupp_apply_support_val
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
(a✝ : ↥(supported M R s))
:
((supportedEquivFinsupp s) a✝).support.val = Multiset.map (fun (x : ↥({x ∈ (↑a✝).support | x ∈ s})) => ⟨↑x, ⋯⟩)
(Multiset.filter (fun (x : α) => x ∈ s) (↑a✝).support.val).attach
@[simp]
theorem
Finsupp.supportedEquivFinsupp_symm_apply_coe_support_val
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
(a✝ : ↑s →₀ M)
:
(↑((supportedEquivFinsupp s).symm a✝)).support.val = Multiset.map Subtype.val a✝.support.val
@[simp]
theorem
Finsupp.supportedEquivFinsupp_symm_apply_coe_apply
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
(a✝ : ↑s →₀ M)
(a : α)
:
↑((supportedEquivFinsupp s).symm a✝) a = if h : a ∈ s then a✝ ⟨a, h⟩ else 0
@[simp]
theorem
Finsupp.supportedEquivFinsupp_symm_apply_coe
{α : Type u_1}
{M : Type u_2}
{R : Type u_5}
[Semiring R]
[AddCommMonoid M]
[Module R M]
(s : Set α)
[DecidablePred fun (x : α) => x ∈ s]
(f : ↑s →₀ M)
:
↑((supportedEquivFinsupp s).symm f) = f.extendDomain
@[simp]
theorem
Finsupp.supported_comap_lmapDomain
{α : Type u_1}
(M : Type u_2)
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
{α' : Type u_7}
(f : α → α')
(s : Set α')
:
theorem
Finsupp.lmapDomain_supported
{α : Type u_1}
(M : Type u_2)
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
{α' : Type u_7}
(f : α → α')
(s : Set α)
:
Submodule.map (lmapDomain M R f) (supported M R s) = supported M R (f '' s)
theorem
Finsupp.lmapDomain_disjoint_ker
{α : Type u_1}
(M : Type u_2)
(R : Type u_5)
[Semiring R]
[AddCommMonoid M]
[Module R M]
{α' : Type u_7}
(f : α → α')
{s : Set α}
(H : ∀ a ∈ s, ∀ b ∈ s, f a = f b → a = b)
:
Disjoint (supported M R s) (lmapDomain M R f).ker