theorem
Commute.list_sum_right
{R : Type u_8}
[NonUnitalNonAssocSemiring R]
(a : R)
(l : List R)
(h : ∀ b ∈ l, Commute a b)
:
theorem
Commute.list_sum_left
{R : Type u_8}
[NonUnitalNonAssocSemiring R]
(b : R)
(l : List R)
(h : ∀ a ∈ l, Commute a b)
:
If all elements in a list are bounded below by 1
, then the length of the list is bounded
by the sum of the elements.
theorem
List.Sublist.prod_dvd_prod
{M : Type u_3}
[CommMonoid M]
{l₁ : List M}
{l₂ : List M}
(h : List.Sublist l₁ l₂)
:
If zero is an element of a list L
, then List.prod L = 0
. If the domain is a nontrivial
monoid with zero with no divisors, then this implication becomes an iff
, see
List.prod_eq_zero_iff
.
@[simp]
theorem
List.prod_eq_zero_iff
{M₀ : Type u_6}
[MonoidWithZero M₀]
[Nontrivial M₀]
[NoZeroDivisors M₀]
{L : List M₀}
:
Product of elements of a list L
equals zero if and only if 0 ∈ L
. See also
List.prod_eq_zero
for an implication that needs weaker typeclass assumptions.
theorem
List.prod_ne_zero
{M₀ : Type u_6}
[MonoidWithZero M₀]
[Nontrivial M₀]
[NoZeroDivisors M₀]
{L : List M₀}
(hL : 0 ∉ L)
:
theorem
List.dvd_sum
{R : Type u_8}
[NonUnitalSemiring R]
{a : R}
{l : List R}
(h : ∀ x ∈ l, a ∣ x)
:
theorem
List.alternatingSum_append
{α : Type u_2}
[AddCommGroup α]
(l₁ : List α)
(l₂ : List α)
:
List.alternatingSum (l₁ ++ l₂) = List.alternatingSum l₁ + (-1) ^ List.length l₁ • List.alternatingSum l₂
theorem
List.alternatingProd_append
{α : Type u_2}
[CommGroup α]
(l₁ : List α)
(l₂ : List α)
:
List.alternatingProd (l₁ ++ l₂) = List.alternatingProd l₁ * List.alternatingProd l₂ ^ (-1) ^ List.length l₁
theorem
List.alternatingSum_reverse
{α : Type u_2}
[AddCommGroup α]
(l : List α)
:
List.alternatingSum (List.reverse l) = (-1) ^ (List.length l + 1) • List.alternatingSum l
theorem
List.alternatingProd_reverse
{α : Type u_2}
[CommGroup α]
(l : List α)
:
List.alternatingProd (List.reverse l) = List.alternatingProd l ^ (-1) ^ (List.length l + 1)
theorem
MulOpposite.op_list_prod
{M : Type u_3}
[Monoid M]
(l : List M)
:
MulOpposite.op (List.prod l) = List.prod (List.reverse (List.map MulOpposite.op l))
theorem
MulOpposite.unop_list_prod
{M : Type u_3}
[Monoid M]
(l : List Mᵐᵒᵖ)
:
MulOpposite.unop (List.prod l) = List.prod (List.reverse (List.map MulOpposite.unop l))
theorem
unop_map_list_prod
{M : Type u_3}
{N : Type u_4}
[Monoid M]
[Monoid N]
{F : Type u_9}
[FunLike F M Nᵐᵒᵖ]
[MonoidHomClass F M Nᵐᵒᵖ]
(f : F)
(l : List M)
:
MulOpposite.unop (f (List.prod l)) = List.prod (List.reverse (List.map (MulOpposite.unop ∘ ⇑f) l))
A morphism into the opposite monoid acts on the product by acting on the reversed elements.
@[deprecated unop_map_list_prod]
theorem
MonoidHom.unop_map_list_prod
{M : Type u_3}
{N : Type u_4}
[Monoid M]
[Monoid N]
(f : M →* Nᵐᵒᵖ)
(l : List M)
:
MulOpposite.unop (f (List.prod l)) = List.prod (List.reverse (List.map (MulOpposite.unop ∘ ⇑f) l))
A morphism into the opposite monoid acts on the product by acting on the reversed elements.