Connections between Finsupp
and AList
#
Main definitions #
Finsupp.toAList
AList.lookupFinsupp
: converts an association list into a finitely supported function viaAList.lookup
, sending absent keys to zero.
@[simp]
theorem
Finsupp.toAList_keys_toFinset
{α : Type u_1}
{M : Type u_2}
[Zero M]
[DecidableEq α]
(f : α →₀ M)
:
f.toAList.keys.toFinset = f.support
noncomputable def
AList.lookupFinsupp
{α : Type u_1}
{M : Type u_2}
[Zero M]
(l : AList fun (_x : α) => M)
:
α →₀ M
Converts an association list into a finitely supported function via AList.lookup
, sending
absent keys to zero.
Equations
- l.lookupFinsupp = { support := (List.filter (fun (x : (_ : α) × M) => decide (x.snd ≠ 0)) l.entries).keys.toFinset, toFun := fun (a : α) => (AList.lookup a l).getD 0, mem_support_toFun := ⋯ }
Instances For
@[simp]
theorem
AList.lookupFinsupp_apply
{α : Type u_1}
{M : Type u_2}
[Zero M]
[DecidableEq α]
(l : AList fun (_x : α) => M)
(a : α)
:
l.lookupFinsupp a = (AList.lookup a l).getD 0
@[simp]
theorem
AList.lookupFinsupp_support
{α : Type u_1}
{M : Type u_2}
[Zero M]
[DecidableEq α]
[DecidableEq M]
(l : AList fun (_x : α) => M)
:
l.lookupFinsupp.support = (List.filter (fun (x : (_ : α) × M) => decide (x.snd ≠ 0)) l.entries).keys.toFinset
theorem
AList.lookupFinsupp_eq_iff_of_ne_zero
{α : Type u_1}
{M : Type u_2}
[Zero M]
[DecidableEq α]
{l : AList fun (_x : α) => M}
{a : α}
{x : M}
(hx : x ≠ 0)
:
l.lookupFinsupp a = x ↔ x ∈ AList.lookup a l
theorem
AList.lookupFinsupp_eq_zero_iff
{α : Type u_1}
{M : Type u_2}
[Zero M]
[DecidableEq α]
{l : AList fun (_x : α) => M}
{a : α}
:
l.lookupFinsupp a = 0 ↔ a ∉ l ∨ 0 ∈ AList.lookup a l
@[simp]
theorem
AList.insert_lookupFinsupp
{α : Type u_1}
{M : Type u_2}
[Zero M]
[DecidableEq α]
(l : AList fun (_x : α) => M)
(a : α)
(m : M)
:
(AList.insert a m l).lookupFinsupp = l.lookupFinsupp.update a m
@[simp]
theorem
AList.singleton_lookupFinsupp
{α : Type u_1}
{M : Type u_2}
[Zero M]
(a : α)
(m : M)
:
(AList.singleton a m).lookupFinsupp = Finsupp.single a m
theorem
AList.lookupFinsupp_surjective
{α : Type u_1}
{M : Type u_2}
[Zero M]
:
Function.Surjective AList.lookupFinsupp