Big operators and Fin
#
Some results about products and sums over the type Fin
.
The most important results are the induction formulas Fin.prod_univ_castSucc
and Fin.prod_univ_succ
, and the formula Fin.prod_const
for the product of a
constant function. These results have variants for sums instead of products.
Main declarations #
finFunctionFinEquiv
: An explicit equivalence betweenFin n → Fin m
andFin (m ^ n)
.
A sum of a function f : Fin 0 → β
is 0
because Fin 0
is empty
A product of a function f : Fin 0 → β
is 1
because Fin 0
is empty
A sum of a function f : Fin (n + 1) → β
over all Fin (n + 1)
is the sum of
f x
, for some x : Fin (n + 1)
plus the remaining product
A product of a function f : Fin (n + 1) → β
over all Fin (n + 1)
is the product of f x
, for some x : Fin (n + 1)
times the remaining product
A sum of a function f : Fin (n + 1) → β
over all Fin (n + 1)
is the sum of
f 0
plus the remaining product
A product of a function f : Fin (n + 1) → β
over all Fin (n + 1)
is the product of f 0
plus the remaining product
A sum of a function f : Fin (n + 1) → β
over all Fin (n + 1)
is the sum of
f (Fin.last n)
plus the remaining sum
A product of a function f : Fin (n + 1) → β
over all Fin (n + 1)
is the product of f (Fin.last n)
plus the remaining product
For f = (a₁, ..., aₙ)
in αⁿ
, partialSum f
is
(0, a₁, a₁ + a₂, ..., a₁ + ... + aₙ)
in αⁿ⁺¹
.
Equations
- Fin.partialSum f i = List.sum (List.take (↑i) (List.ofFn f))
Instances For
For f = (a₁, ..., aₙ)
in αⁿ
, partialProd f
is (1, a₁, a₁a₂, ..., a₁...aₙ)
in αⁿ⁺¹
.
Equations
- Fin.partialProd f i = List.prod (List.take (↑i) (List.ofFn f))
Instances For
Let (g₀, g₁, ..., gₙ)
be a tuple of elements in Gⁿ⁺¹
.
Then if k < j
, this says -(g₀ + g₁ + ... + gₖ₋₁) + (g₀ + g₁ + ... + gₖ) = gₖ
.
If k = j
, it says -(g₀ + g₁ + ... + gₖ₋₁) + (g₀ + g₁ + ... + gₖ₊₁) = gₖ + gₖ₊₁
.
If k > j
, it says -(g₀ + g₁ + ... + gₖ) + (g₀ + g₁ + ... + gₖ₊₁) = gₖ₊₁.
Useful for defining group cohomology.
Let (g₀, g₁, ..., gₙ)
be a tuple of elements in Gⁿ⁺¹
.
Then if k < j
, this says (g₀g₁...gₖ₋₁)⁻¹ * g₀g₁...gₖ = gₖ
.
If k = j
, it says (g₀g₁...gₖ₋₁)⁻¹ * g₀g₁...gₖ₊₁ = gₖgₖ₊₁
.
If k > j
, it says (g₀g₁...gₖ)⁻¹ * g₀g₁...gₖ₊₁ = gₖ₊₁.
Useful for defining group cohomology.
Equations
- List.alternatingSum_eq_finset_sum.match_1 motive x h_1 h_2 h_3 = List.casesOn x (h_1 ()) fun head tail => List.casesOn tail (h_2 head) fun head_1 tail => h_3 head head_1 tail