File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

full_name: Multiset.one_le_prod_of_one_le
code: @[to_additive sum_nonneg]
lemma one_le_prod_of_one_le : (∀ x ∈ s, (1 : α) ≤ x) → 1 ≤ s.prod 
goal: (∀ x ∈ s, 1 ≤ x) → 1 ≤ s.prod

full_name: Multiset.sum_nonneg
code: @[to_additive sum_nonneg]
lemma one_le_prod_of_one_le : (∀ x ∈ s, (1 : α) ≤ x) → 1 ≤ s.prod 
goal: (∀ x ∈ s, 0 ≤ x) → 0 ≤ s.sum

full_name: Multiset.single_le_sum
code: @[to_additive]
lemma single_le_prod : (∀ x ∈ s, (1 : α) ≤ x) → ∀ x ∈ s, x ≤ s.prod 
goal: (∀ x ∈ s, 0 ≤ x) → ∀ x ∈ s, x ≤ s.sum

full_name: Multiset.single_le_prod
code: @[to_additive]
lemma single_le_prod : (∀ x ∈ s, (1 : α) ≤ x) → ∀ x ∈ s, x ≤ s.prod 
goal: (∀ x ∈ s, 1 ≤ x) → ∀ x ∈ s, x ≤ s.prod

full_name: Multiset.prod_le_pow_card
code: @[to_additive sum_le_card_nsmul]
lemma prod_le_pow_card (s : Multiset α) (n : α) (h : ∀ x ∈ s, x ≤ n) : s.prod ≤ n ^ card s 
goal: s.prod ≤ n ^ Multiset.card s

full_name: Multiset.sum_le_card_nsmul
code: @[to_additive sum_le_card_nsmul]
lemma prod_le_pow_card (s : Multiset α) (n : α) (h : ∀ x ∈ s, x ≤ n) : s.prod ≤ n ^ card s 
goal: s.sum ≤ Multiset.card s • n

full_name: Multiset.all_zero_of_le_zero_le_of_sum_eq_zero
code: @[to_additive all_zero_of_le_zero_le_of_sum_eq_zero]
lemma all_one_of_le_one_le_of_prod_eq_one :
    (∀ x ∈ s, (1 : α) ≤ x) → s.prod = 1 → ∀ x ∈ s, x = (1 : α) 
goal: (∀ x ∈ s, 0 ≤ x) → s.sum = 0 → ∀ x ∈ s, x = 0

full_name: Multiset.all_one_of_le_one_le_of_prod_eq_one
code: @[to_additive all_zero_of_le_zero_le_of_sum_eq_zero]
lemma all_one_of_le_one_le_of_prod_eq_one :
    (∀ x ∈ s, (1 : α) ≤ x) → s.prod = 1 → ∀ x ∈ s, x = (1 : α) 
goal: (∀ x ∈ s, 1 ≤ x) → s.prod = 1 → ∀ x ∈ s, x = 1

full_name: Multiset.prod_le_prod_of_rel_le
code: @[to_additive]
lemma prod_le_prod_of_rel_le (h : s.Rel (· ≤ ·) t) : s.prod ≤ t.prod 
goal: s.prod ≤ t.prod

full_name: Multiset.sum_le_sum_of_rel_le
code: @[to_additive]
lemma prod_le_prod_of_rel_le (h : s.Rel (· ≤ ·) t) : s.prod ≤ t.prod 
goal: s.sum ≤ t.sum

full_name: Multiset.sum_map_le_sum_map
code: @[to_additive]
lemma prod_map_le_prod_map {s : Multiset ι} (f : ι → α) (g : ι → α) (h : ∀ i, i ∈ s → f i ≤ g i) :
    (s.map f).prod ≤ (s.map g).prod 
goal: (Multiset.map f s).sum ≤ (Multiset.map g s).sum

full_name: Multiset.prod_map_le_prod_map
code: @[to_additive]
lemma prod_map_le_prod_map {s : Multiset ι} (f : ι → α) (g : ι → α) (h : ∀ i, i ∈ s → f i ≤ g i) :
    (s.map f).prod ≤ (s.map g).prod 
goal: (Multiset.map f s).prod ≤ (Multiset.map g s).prod

full_name: Multiset.sum_map_le_sum
code: @[to_additive]
lemma prod_map_le_prod (f : α → α) (h : ∀ x, x ∈ s → f x ≤ x) : (s.map f).prod ≤ s.prod 
goal: (Multiset.map f s).sum ≤ s.sum

full_name: Multiset.prod_map_le_prod
code: @[to_additive]
lemma prod_map_le_prod (f : α → α) (h : ∀ x, x ∈ s → f x ≤ x) : (s.map f).prod ≤ s.prod 
goal: (Multiset.map f s).prod ≤ s.prod

full_name: Multiset.sum_le_sum_map
code: @[to_additive]
lemma prod_le_prod_map (f : α → α) (h : ∀ x, x ∈ s → x ≤ f x) : s.prod ≤ (s.map f).prod 
goal: s.sum ≤ (Multiset.map f s).sum

full_name: Multiset.prod_le_prod_map
code: @[to_additive]
lemma prod_le_prod_map (f : α → α) (h : ∀ x, x ∈ s → x ≤ f x) : s.prod ≤ (s.map f).prod 
goal: s.prod ≤ (Multiset.map f s).prod

full_name: Multiset.card_nsmul_le_sum
code: @[to_additive card_nsmul_le_sum]
lemma pow_card_le_prod (h : ∀ x ∈ s, a ≤ x) : a ^ card s ≤ s.prod 
goal: Multiset.card s • a ≤ s.sum

full_name: Multiset.pow_card_le_prod
code: @[to_additive card_nsmul_le_sum]
lemma pow_card_le_prod (h : ∀ x ∈ s, a ≤ x) : a ^ card s ≤ s.prod 
goal: a ^ Multiset.card s ≤ s.prod

full_name: Multiset.le_prod_of_submultiplicative_on_pred
code: @[to_additive le_sum_of_subadditive_on_pred]
lemma le_prod_of_submultiplicative_on_pred (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, a ∈ s → p a) : f s.prod ≤ (s.map f).prod 
goal: f s.prod ≤ (Multiset.map f s).prod

full_name: Multiset.le_sum_of_subadditive_on_pred
code: @[to_additive le_sum_of_subadditive_on_pred]
lemma le_prod_of_submultiplicative_on_pred (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, a ∈ s → p a) : f s.prod ≤ (s.map f).prod 
goal: f s.sum ≤ (Multiset.map f s).sum

full_name: Multiset.le_prod_of_submultiplicative
code: @[to_additive le_sum_of_subadditive]
lemma le_prod_of_submultiplicative (f : α → β) (h_one : f 1 = 1)
    (h_mul : ∀ a b, f (a * b) ≤ f a * f b) (s : Multiset α) : f s.prod ≤ (s.map f).prod 
goal: f s.prod ≤ (Multiset.map f s).prod

full_name: Multiset.le_sum_of_subadditive
code: @[to_additive le_sum_of_subadditive]
lemma le_prod_of_submultiplicative (f : α → β) (h_one : f 1 = 1)
    (h_mul : ∀ a b, f (a * b) ≤ f a * f b) (s : Multiset α) : f s.prod ≤ (s.map f).prod 
goal: f s.sum ≤ (Multiset.map f s).sum

full_name: Multiset.le_prod_nonempty_of_submultiplicative_on_pred
code: @[to_additive le_sum_nonempty_of_subadditive_on_pred]
lemma le_prod_nonempty_of_submultiplicative_on_pred (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, a ∈ s → p a) : f s.prod ≤ (s.map f).prod 
goal: f s.prod ≤ (Multiset.map f s).prod

full_name: Multiset.le_sum_nonempty_of_subadditive_on_pred
code: @[to_additive le_sum_nonempty_of_subadditive_on_pred]
lemma le_prod_nonempty_of_submultiplicative_on_pred (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, a ∈ s → p a) : f s.prod ≤ (s.map f).prod 
goal: f s.sum ≤ (Multiset.map f s).sum

full_name: Multiset.le_prod_nonempty_of_submultiplicative
code: @[to_additive le_sum_nonempty_of_subadditive]
lemma le_prod_nonempty_of_submultiplicative (f : α → β) (h_mul : ∀ a b, f (a * b) ≤ f a * f b)
    (s : Multiset α) (hs_nonempty : s ≠ ∅) : f s.prod ≤ (s.map f).prod 
goal: f s.prod ≤ (Multiset.map f s).prod

full_name: Multiset.le_sum_nonempty_of_subadditive
code: @[to_additive le_sum_nonempty_of_subadditive]
lemma le_prod_nonempty_of_submultiplicative (f : α → β) (h_mul : ∀ a b, f (a * b) ≤ f a * f b)
    (s : Multiset α) (hs_nonempty : s ≠ ∅) : f s.prod ≤ (s.map f).prod 
goal: f s.sum ≤ (Multiset.map f s).sum

full_name: Multiset.sum_lt_sum
code: @[to_additive sum_lt_sum]
lemma prod_lt_prod' (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
    (s.map f).prod < (s.map g).prod 
goal: (Multiset.map f s).sum < (Multiset.map g s).sum

full_name: Multiset.prod_lt_prod'
code: @[to_additive sum_lt_sum]
lemma prod_lt_prod' (hle : ∀ i ∈ s, f i ≤ g i) (hlt : ∃ i ∈ s, f i < g i) :
    (s.map f).prod < (s.map g).prod 
goal: (Multiset.map f s).prod < (Multiset.map g s).prod

full_name: Multiset.sum_lt_sum_of_nonempty
code: @[to_additive sum_lt_sum_of_nonempty]
lemma prod_lt_prod_of_nonempty' (hs : s ≠ ∅) (hfg : ∀ i ∈ s, f i < g i) :
    (s.map f).prod < (s.map g).prod 
goal: (Multiset.map f s).sum < (Multiset.map g s).sum

full_name: Multiset.prod_lt_prod_of_nonempty'
code: @[to_additive sum_lt_sum_of_nonempty]
lemma prod_lt_prod_of_nonempty' (hs : s ≠ ∅) (hfg : ∀ i ∈ s, f i < g i) :
    (s.map f).prod < (s.map g).prod 
goal: (Multiset.map f s).prod < (Multiset.map g s).prod

full_name: Multiset.prod_eq_one_iff
code: @[to_additive] lemma prod_eq_one_iff : m.prod = 1 ↔ ∀ x ∈ m, x = (1 : α) 
goal: m.prod = 1 ↔ ∀ x ∈ m, x = 1

full_name: Multiset.sum_eq_zero_iff
code: @[to_additive] lemma prod_eq_one_iff : m.prod = 1 ↔ ∀ x ∈ m, x = (1 : α) 
goal: m.sum = 0 ↔ ∀ x ∈ m, x = 0

full_name: Multiset.le_sum_of_mem
code: @[to_additive] lemma le_prod_of_mem (ha : a ∈ m) : a ≤ m.prod 
goal: a ≤ m.sum

full_name: Multiset.le_prod_of_mem
code: @[to_additive] lemma le_prod_of_mem (ha : a ∈ m) : a ≤ m.prod 
goal: a ≤ m.prod

full_name: Multiset.max_le_of_forall_le
code: lemma max_le_of_forall_le {α : Type*} [LinearOrder α] [OrderBot α] (l : Multiset α)
    (n : α) (h : ∀ x ∈ l, x ≤ n) : l.fold max ⊥ ≤ n 
goal: Multiset.fold max ⊥ l ≤ n

full_name: Multiset.abs_sum_le_sum_abs
code: lemma abs_sum_le_sum_abs [LinearOrderedAddCommGroup α] {s : Multiset α} :
    |s.sum| ≤ (s.map abs).sum 
goal: |s.sum| ≤ (Multiset.map abs s).sum