Documentation

Mathlib.Algebra.Order.BigOperators.GroupWithZero.Finset

Big operators on a finset in groups with zero involving order #

This file contains the results concerning the interaction of finset big operators with groups with zero, where order is involved.

theorem Finset.prod_nonneg {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} {s : Finset ι} (h0 : is, 0 f i) :
0 is, f i
theorem Finset.prod_le_prod {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f g : ιR} {s : Finset ι} (h0 : is, 0 f i) (h1 : is, f i g i) :
is, f i is, g i

If all f i, i ∈ s, are nonnegative and each f i is less than or equal to g i, then the product of f i is less than or equal to the product of g i. See also Finset.prod_le_prod' for the case of an ordered commutative multiplicative monoid.

theorem Finset.prod_le_one {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} {s : Finset ι} (h0 : is, 0 f i) (h1 : is, f i 1) :
is, f i 1

If each f i, i ∈ s belongs to [0, 1], then their product is less than or equal to one. See also Finset.prod_le_one' for the case of an ordered commutative multiplicative monoid.

theorem Finset.one_le_prod {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} {s : Finset ι} (hf : is, 1 f i) :
1 is, f i

A version of Finset.one_le_prod' for PosMulMono in place of MulLeftMono.

theorem Finset.le_prod_max_one {ι : Type u_1} {s : Finset ι} {M : Type u_4} [CommMonoidWithZero M] [LinearOrder M] [ZeroLEOneClass M] [PosMulMono M] {i : ι} (hi : i s) (f : ιM) :
f i is, max (f i) 1
theorem Finset.prod_le_prod_of_subset_of_one_le {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} {s t : Finset ι} (h : s t) (hf0 : is, 0 f i) (hf : it, is1 f i) :
is, f i it, f i
theorem Finset.prod_le_prod_of_subset_of_le_one {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} {s t : Finset ι} (h : s t) (hf0 : it, 0 f i) (hf : it, isf i 1) :
it, f i is, f i
theorem Finset.prod_mono_set_of_one_le {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} (hf : ∀ (x : ι), 1 f x) :
Monotone fun (s : Finset ι) => xs, f x
theorem Finset.prod_anti_set_of_le_one {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [Preorder R] [ZeroLEOneClass R] [PosMulMono R] {f : ιR} (hf0 : ∀ (x : ι), 0 f x) (hf : ∀ (x : ι), f x 1) :
Antitone fun (s : Finset ι) => xs, f x
theorem Finset.prod_pos {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [PartialOrder R] [ZeroLEOneClass R] [PosMulStrictMono R] [Nontrivial R] {f : ιR} {s : Finset ι} (h0 : is, 0 < f i) :
0 < is, f i
theorem Finset.prod_lt_prod {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [PartialOrder R] [ZeroLEOneClass R] [PosMulStrictMono R] [Nontrivial R] {f g : ιR} {s : Finset ι} (hf : is, 0 < f i) (hfg : is, f i g i) (hlt : is, f i < g i) :
is, f i < is, g i
theorem Finset.prod_lt_prod_of_nonempty {ι : Type u_1} {R : Type u_2} [CommMonoidWithZero R] [PartialOrder R] [ZeroLEOneClass R] [PosMulStrictMono R] [Nontrivial R] {f g : ιR} {s : Finset ι} (hf : is, 0 < f i) (hfg : is, f i < g i) (h_ne : s.Nonempty) :
is, f i < is, g i