Documentation

Mathlib.Algebra.Order.BigOperators.Group.Multiset

Big operators on a multiset in ordered groups #

This file contains the results concerning the interaction of multiset big operators with ordered groups.

theorem Multiset.one_le_prod_of_one_le {α : Type u_2} [OrderedCommMonoid α] {s : Multiset α} :
(∀ x ∈ s, 1 ≤ x) → 1 ≤ s.prod
theorem Multiset.sum_nonneg {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset α} :
(∀ x ∈ s, 0 ≤ x) → 0 ≤ s.sum
theorem Multiset.single_le_prod {α : Type u_2} [OrderedCommMonoid α] {s : Multiset α} :
(∀ x ∈ s, 1 ≤ x) → ∀ x ∈ s, x ≤ s.prod
theorem Multiset.single_le_sum {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset α} :
(∀ x ∈ s, 0 ≤ x) → ∀ x ∈ s, x ≤ s.sum
theorem Multiset.prod_le_pow_card {α : Type u_2} [OrderedCommMonoid α] (s : Multiset α) (n : α) (h : ∀ x ∈ s, x ≤ n) :
s.prod ≤ n ^ s.card
theorem Multiset.sum_le_card_nsmul {α : Type u_2} [OrderedAddCommMonoid α] (s : Multiset α) (n : α) (h : ∀ x ∈ s, x ≤ n) :
s.sum ≤ s.card • n
theorem Multiset.all_one_of_le_one_le_of_prod_eq_one {α : Type u_2} [OrderedCommMonoid α] {s : Multiset α} :
(∀ x ∈ s, 1 ≤ x) → s.prod = 1 → ∀ x ∈ s, x = 1
theorem Multiset.all_zero_of_le_zero_le_of_sum_eq_zero {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset α} :
(∀ x ∈ s, 0 ≤ x) → s.sum = 0 → ∀ x ∈ s, x = 0
theorem Multiset.prod_le_prod_of_rel_le {α : Type u_2} [OrderedCommMonoid α] {s t : Multiset α} (h : Rel (fun (x1 x2 : α) => x1 ≤ x2) s t) :
theorem Multiset.sum_le_sum_of_rel_le {α : Type u_2} [OrderedAddCommMonoid α] {s t : Multiset α} (h : Rel (fun (x1 x2 : α) => x1 ≤ x2) s t) :
s.sum ≤ t.sum
theorem Multiset.prod_map_le_prod_map {ι : Type u_1} {α : Type u_2} [OrderedCommMonoid α] {s : Multiset ι} (f g : ι → α) (h : ∀ i ∈ s, f i ≤ g i) :
(map f s).prod ≤ (map g s).prod
theorem Multiset.sum_map_le_sum_map {ι : Type u_1} {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset ι} (f g : ι → α) (h : ∀ i ∈ s, f i ≤ g i) :
(map f s).sum ≤ (map g s).sum
theorem Multiset.prod_map_le_prod {α : Type u_2} [OrderedCommMonoid α] {s : Multiset α} (f : α → α) (h : ∀ x ∈ s, f x ≤ x) :
(map f s).prod ≤ s.prod
theorem Multiset.sum_map_le_sum {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset α} (f : α → α) (h : ∀ x ∈ s, f x ≤ x) :
(map f s).sum ≤ s.sum
theorem Multiset.prod_le_prod_map {α : Type u_2} [OrderedCommMonoid α] {s : Multiset α} (f : α → α) (h : ∀ x ∈ s, x ≤ f x) :
s.prod ≤ (map f s).prod
theorem Multiset.sum_le_sum_map {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset α} (f : α → α) (h : ∀ x ∈ s, x ≤ f x) :
s.sum ≤ (map f s).sum
theorem Multiset.pow_card_le_prod {α : Type u_2} [OrderedCommMonoid α] {s : Multiset α} {a : α} (h : ∀ x ∈ s, a ≤ x) :
a ^ s.card ≤ s.prod
theorem Multiset.card_nsmul_le_sum {α : Type u_2} [OrderedAddCommMonoid α] {s : Multiset α} {a : α} (h : ∀ x ∈ s, a ≤ x) :
s.card • a ≤ s.sum
theorem Multiset.le_prod_of_submultiplicative_on_pred {α : Type u_2} {β : Type u_3} [CommMonoid α] [OrderedCommMonoid β] (f : α → β) (p : α → Prop) (h_one : f 1 = 1) (hp_one : p 1) (h_mul : ∀ (a b : α), p a → p b → f (a * b) ≤ f a * f b) (hp_mul : ∀ (a b : α), p a → p b → p (a * b)) (s : Multiset α) (hps : ∀ a ∈ s, p a) :
f s.prod ≤ (map f s).prod
theorem Multiset.le_sum_of_subadditive_on_pred {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [OrderedAddCommMonoid β] (f : α → β) (p : α → Prop) (h_one : f 0 = 0) (hp_one : p 0) (h_mul : ∀ (a b : α), p a → p b → f (a + b) ≤ f a + f b) (hp_mul : ∀ (a b : α), p a → p b → p (a + b)) (s : Multiset α) (hps : ∀ a ∈ s, p a) :
f s.sum ≤ (map f s).sum
theorem Multiset.le_prod_of_submultiplicative {α : Type u_2} {β : Type u_3} [CommMonoid α] [OrderedCommMonoid β] (f : α → β) (h_one : f 1 = 1) (h_mul : ∀ (a b : α), f (a * b) ≤ f a * f b) (s : Multiset α) :
f s.prod ≤ (map f s).prod
theorem Multiset.le_sum_of_subadditive {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [OrderedAddCommMonoid β] (f : α → β) (h_one : f 0 = 0) (h_mul : ∀ (a b : α), f (a + b) ≤ f a + f b) (s : Multiset α) :
f s.sum ≤ (map f s).sum
theorem Multiset.le_prod_nonempty_of_submultiplicative_on_pred {α : Type u_2} {β : Type u_3} [CommMonoid α] [OrderedCommMonoid β] (f : α → β) (p : α → Prop) (h_mul : ∀ (a b : α), p a → p b → f (a * b) ≤ f a * f b) (hp_mul : ∀ (a b : α), p a → p b → p (a * b)) (s : Multiset α) (hs_nonempty : s ≠ ∅) (hs : ∀ a ∈ s, p a) :
f s.prod ≤ (map f s).prod
theorem Multiset.le_sum_nonempty_of_subadditive_on_pred {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [OrderedAddCommMonoid β] (f : α → β) (p : α → Prop) (h_mul : ∀ (a b : α), p a → p b → f (a + b) ≤ f a + f b) (hp_mul : ∀ (a b : α), p a → p b → p (a + b)) (s : Multiset α) (hs_nonempty : s ≠ ∅) (hs : ∀ a ∈ s, p a) :
f s.sum ≤ (map f s).sum
theorem Multiset.le_prod_nonempty_of_submultiplicative {α : Type u_2} {β : Type u_3} [CommMonoid α] [OrderedCommMonoid β] (f : α → β) (h_mul : ∀ (a b : α), f (a * b) ≤ f a * f b) (s : Multiset α) (hs_nonempty : s ≠ ∅) :
f s.prod ≤ (map f s).prod
theorem Multiset.le_sum_nonempty_of_subadditive {α : Type u_2} {β : Type u_3} [AddCommMonoid α] [OrderedAddCommMonoid β] (f : α → β) (h_mul : ∀ (a b : α), f (a + b) ≤ f a + f b) (s : Multiset α) (hs_nonempty : s ≠ ∅) :
f s.sum ≤ (map f s).sum
theorem Multiset.prod_lt_prod' {ι : Type u_1} {α : Type u_2} [OrderedCancelCommMonoid α] {s : Multiset ι} {f g : ι → α} (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
(map f s).prod < (map g s).prod
theorem Multiset.sum_lt_sum {ι : Type u_1} {α : Type u_2} [OrderedCancelAddCommMonoid α] {s : Multiset ι} {f g : ι → α} (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
(map f s).sum < (map g s).sum
theorem Multiset.prod_lt_prod_of_nonempty' {ι : Type u_1} {α : Type u_2} [OrderedCancelCommMonoid α] {s : Multiset ι} {f g : ι → α} (hs : s ≠ ∅) (hfg : ∀ i ∈ s, f i < g i) :
(map f s).prod < (map g s).prod
theorem Multiset.sum_lt_sum_of_nonempty {ι : Type u_1} {α : Type u_2} [OrderedCancelAddCommMonoid α] {s : Multiset ι} {f g : ι → α} (hs : s ≠ ∅) (hfg : ∀ i ∈ s, f i < g i) :
(map f s).sum < (map g s).sum
theorem Multiset.prod_eq_one_iff {α : Type u_2} [OrderedCommMonoid α] [CanonicallyOrderedMul α] {m : Multiset α} :
m.prod = 1 ↔ ∀ x ∈ m, x = 1
theorem Multiset.sum_eq_zero_iff {α : Type u_2} [OrderedAddCommMonoid α] [CanonicallyOrderedAdd α] {m : Multiset α} :
m.sum = 0 ↔ ∀ x ∈ m, x = 0
theorem Multiset.le_prod_of_mem {α : Type u_2} [OrderedCommMonoid α] [CanonicallyOrderedMul α] {m : Multiset α} {a : α} (ha : a ∈ m) :
a ≤ m.prod
theorem Multiset.le_sum_of_mem {α : Type u_2} [OrderedAddCommMonoid α] [CanonicallyOrderedAdd α] {m : Multiset α} {a : α} (ha : a ∈ m) :
a ≤ m.sum
theorem Multiset.max_le_of_forall_le {α : Type u_4} [LinearOrder α] [OrderBot α] (l : Multiset α) (n : α) (h : ∀ x ∈ l, x ≤ n) :
theorem Multiset.max_prod_le {ι : Type u_1} {α : Type u_2} [LinearOrderedCommMonoid α] {s : Multiset ι} {f g : ι → α} :
(map f s).prod ⊔ (map g s).prod ≤ (map (fun (i : ι) => f i ⊔ g i) s).prod
theorem Multiset.max_sum_le {ι : Type u_1} {α : Type u_2} [LinearOrderedAddCommMonoid α] {s : Multiset ι} {f g : ι → α} :
(map f s).sum ⊔ (map g s).sum ≤ (map (fun (i : ι) => f i ⊔ g i) s).sum
theorem Multiset.prod_min_le {ι : Type u_1} {α : Type u_2} [LinearOrderedCommMonoid α] {s : Multiset ι} {f g : ι → α} :
(map (fun (i : ι) => f i ⊓ g i) s).prod ≤ (map f s).prod ⊓ (map g s).prod
theorem Multiset.sum_min_le {ι : Type u_1} {α : Type u_2} [LinearOrderedAddCommMonoid α] {s : Multiset ι} {f g : ι → α} :
(map (fun (i : ι) => f i ⊓ g i) s).sum ≤ (map f s).sum ⊓ (map g s).sum