Pointwise order on finitely supported functions #
This file lifts order structures on α to ι →₀ α.
Main declarations #
Finsupp.orderEmbeddingToFun: The order embedding from finitely supported functions to functions.
@[simp]
theorem Finsupp.support_mapDomain_of_nonneg {α : Type u_3} {β : Type u_4} {M : Type u_5} [AddCommMonoid M] [PartialOrder M] [IsOrderedAddMonoid M] [DecidableEq β] {x : α →₀ M} (hx : 0 ≤ x) (f : α → β) :
Order structures #
theorem Finsupp.sum_le_sum {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [AddCommMonoid β] [Preorder β] [IsOrderedAddMonoid β] {f : ι →₀ α} {h₁ h₂ : ι → α → β} (h : ∀ i ∈ f.support, h₁ i (f i) ≤ h₂ i (f i)) :
theorem Finsupp.sum_nonneg {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [AddCommMonoid β] [Preorder β] [IsOrderedAddMonoid β] {f : ι →₀ α} {h₁ : ι → α → β} (h : ∀ i ∈ f.support, 0 ≤ h₁ i (f i)) :
theorem Finsupp.sum_nonneg' {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [AddCommMonoid β] [Preorder β] [IsOrderedAddMonoid β] {f : ι →₀ α} {h₁ : ι → α → β} (h : ∀ (i : ι), 0 ≤ h₁ i (f i)) :
theorem Finsupp.sum_nonpos {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [AddCommMonoid β] [Preorder β] [IsOrderedAddMonoid β] {f : ι →₀ α} {h₁ : ι → α → β} (h : ∀ i ∈ f.support, h₁ i (f i) ≤ 0) :
theorem Finsupp.sum_pos {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [AddCommMonoid β] [Preorder β] [IsOrderedCancelAddMonoid β] [AddLeftStrictMono β] {f : ι →₀ α} {g : ι → α → β} (h : ∀ i ∈ f.support, 0 < g i (f i)) (hf : f ≠ 0) :
theorem Finsupp.sum_pos' {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [AddCommMonoid β] [Preorder β] [IsOrderedCancelAddMonoid β] [AddLeftStrictMono β] {f : ι →₀ α} {g : ι → α → β} (h : ∀ i ∈ f.support, 0 ≤ g i (f i)) (hf : ∃ i ∈ f.support, 0 < g i (f i)) :
theorem Finsupp.sum_le_sum_index {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [Preorder α] [AddCommMonoid β] [Preorder β] [IsOrderedAddMonoid β] [DecidableEq ι] {f₁ f₂ : ι →₀ α} {h : ι → α → β} (hf : f₁ ≤ f₂) (hh : ∀ i ∈ f₁.support ∪ f₂.support, Monotone (h i)) (hh₀ : ∀ i ∈ f₁.support ∪ f₂.support, h i 0 = 0) :
theorem Finsupp.mapDomain_lt_mapDomain_iff_lt {ι : Type u_1} {κ : Type u_2} {α : Type u_3} [AddCommMonoid α] [Preorder α] {f : ι → κ} (h : Function.Injective f) (g₁ g₂ : ι →₀ α) :
Algebraic order structures #
instance Finsupp.isOrderedAddMonoid {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [Preorder α] [IsOrderedAddMonoid α] :
IsOrderedAddMonoid (ι →₀ α)
theorem Finsupp.mapDomain_mono {ι : Type u_1} {κ : Type u_2} {α : Type u_3} [AddCommMonoid α] [Preorder α] [IsOrderedAddMonoid α] {f : ι → κ} :
theorem Finsupp.mapDomain_nonneg {ι : Type u_1} {κ : Type u_2} {α : Type u_3} [AddCommMonoid α] [Preorder α] [IsOrderedAddMonoid α] {f : ι → κ} {g : ι →₀ α} (hg : 0 ≤ g) :
theorem Finsupp.mapDomain_nonpos {ι : Type u_1} {κ : Type u_2} {α : Type u_3} [AddCommMonoid α] [Preorder α] [IsOrderedAddMonoid α] {f : ι → κ} {g : ι →₀ α} (hg : g ≤ 0) :
theorem Finsupp.single_le_sum {α : Type u_6} {M : Type u_7} {N : Type u_8} [Zero M] [AddCommMonoid N] [PartialOrder N] [IsOrderedAddMonoid N] (f : α →₀ M) {g : α → M → N} (h : 0 ≤ fun (x1 : α) (x2 : M) => g x1 x2) (a : α) :
theorem Finsupp.single_eval_le_sum {α : Type u_6} {M : Type u_7} {N : Type u_8} [Zero M] [AddCommMonoid N] [PartialOrder N] [IsOrderedAddMonoid N] (f : α →₀ M) {g : M → N} (hg : g 0 = 0) (h : 0 ≤ fun (x : M) => g x) (a : α) :
instance Finsupp.isOrderedCancelAddMonoid {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [Preorder α] [IsOrderedCancelAddMonoid α] :
IsOrderedCancelAddMonoid (ι →₀ α)
instance Finsupp.addLeftReflectLE {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [Preorder α] [AddLeftReflectLE α] :
AddLeftReflectLE (ι →₀ α)
instance Finsupp.instPosSMulMono {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [Preorder α] [Zero β] [Preorder β] [SMulZeroClass α β] [PosSMulMono α β] :
PosSMulMono α (ι →₀ β)
instance Finsupp.instSMulPosMono {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Preorder α] [Zero β] [Preorder β] [SMulZeroClass α β] [SMulPosMono α β] :
SMulPosMono α (ι →₀ β)
instance Finsupp.instPosSMulReflectLE {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [Preorder α] [Zero β] [Preorder β] [SMulZeroClass α β] [PosSMulReflectLE α β] :
PosSMulReflectLE α (ι →₀ β)
instance Finsupp.instSMulPosReflectLE {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Preorder α] [Zero β] [Preorder β] [SMulZeroClass α β] [SMulPosReflectLE α β] :
SMulPosReflectLE α (ι →₀ β)
instance Finsupp.instPosSMulStrictMono {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [PartialOrder α] [Zero β] [PartialOrder β] [SMulWithZero α β] [PosSMulStrictMono α β] :
PosSMulStrictMono α (ι →₀ β)
instance Finsupp.instSMulPosStrictMono {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [PartialOrder α] [Zero β] [PartialOrder β] [SMulWithZero α β] [SMulPosStrictMono α β] :
SMulPosStrictMono α (ι →₀ β)
instance Finsupp.instSMulPosReflectLT {ι : Type u_1} {α : Type u_3} {β : Type u_4} [Zero α] [PartialOrder α] [Zero β] [PartialOrder β] [SMulWithZero α β] [SMulPosReflectLT α β] :
SMulPosReflectLT α (ι →₀ β)
@[instance_reducible]
instance Finsupp.orderBot {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [IsBotZeroClass α] :
Equations
- Finsupp.orderBot = { bot := 0, bot_le := ⋯ }
instance Finsupp.instIsBotZeroClass {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [IsBotZeroClass α] :
IsBotZeroClass (ι →₀ α)
@[deprecated bot_eq_zero (since := "2026-05-07")]
theorem Finsupp.bot_eq_zero {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [IsBotZeroClass α] :
@[simp]
theorem Finsupp.add_eq_zero_iff {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] (f g : ι →₀ α) :
theorem Finsupp.le_iff' {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] (f g : ι →₀ α) {s : Finset ι} (hf : f.support ⊆ s) :
theorem Finsupp.le_iff {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] (f g : ι →₀ α) :
theorem Finsupp.support_monotone {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] :
theorem Finsupp.support_mono {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] {f g : ι →₀ α} [CanonicallyOrderedAdd α] (hfg : f ≤ g) :
@[instance_reducible]
instance Finsupp.decidableLE {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [DecidableLE α] :
DecidableLE (ι →₀ α)
Equations
- f.decidableLE g = decidable_of_iff (∀ i ∈ f.support, f i ≤ g i) ⋯
@[instance_reducible]
instance Finsupp.decidableLT {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [DecidableLE α] :
DecidableLT (ι →₀ α)
Equations
@[simp]
theorem Finsupp.single_le_iff {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] {i : ι} {x : α} {f : ι →₀ α} :
@[instance_reducible]
noncomputable instance Finsupp.tsub {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] :
This is called tsub for truncated subtraction, to distinguish it with subtraction in an
additive group.
Equations
- Finsupp.tsub = { sub := Finsupp.zipWith (fun (m n : α) => m - n) ⋯ }
instance Finsupp.orderedSub {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] :
OrderedSub (ι →₀ α)
instance Finsupp.instCanonicallyOrderedAddOfAddLeftMono {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] [AddLeftMono α] :
CanonicallyOrderedAdd (ι →₀ α)
@[simp]
theorem Finsupp.coe_tsub {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] (f g : ι →₀ α) :
theorem Finsupp.tsub_apply {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] (f g : ι →₀ α) (a : ι) :
@[simp]
theorem Finsupp.single_tsub {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] {i : ι} {a b : α} :
theorem Finsupp.support_tsub {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] {f1 f2 : ι →₀ α} :
theorem Finsupp.subset_support_tsub {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] [DecidableEq ι] {f1 f2 : ι →₀ α} :
theorem Finsupp.mapDomain_tsub {ι : Type u_1} {κ : Type u_2} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] {f : ι → κ} (h : Function.Injective f) (f1 f2 : ι →₀ α) :
theorem Finsupp.embDomain_tsub {ι : Type u_1} {κ : Type u_2} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] (f : ι ↪ κ) (f1 f2 : ι →₀ α) :
theorem Finsupp.support_add_eq_union {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [PartialOrder α] [CanonicallyOrderedAdd α] [Sub α] [OrderedSub α] {f1 f2 : ι →₀ α} [DecidableEq ι] :
The support of a sum is the union of the supports, when the coefficients satisfy
CanonicallyOrderedAdd.
In the case where the supports are disjoint, there is also Finsupp.support_add_eq,
which holds in any AddZeroClass.
@[simp]
theorem Finsupp.support_inf {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [LinearOrder α] [IsBotZeroClass α] [DecidableEq ι] (f g : ι →₀ α) :
@[simp]
theorem Finsupp.support_sup {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [LinearOrder α] [IsBotZeroClass α] [DecidableEq ι] (f g : ι →₀ α) :
theorem Finsupp.disjoint_iff {ι : Type u_1} {α : Type u_3} [AddCommMonoid α] [LinearOrder α] [IsBotZeroClass α] {f g : ι →₀ α} :
Some lemmas about ℕ #
theorem Finsupp.isLowerSet_range_embDomain {α : Type u_3} {β : Type u_4} (f : α ↪ β) :
IsLowerSet (Set.range (embDomain f))