Documentation

LeanAPAP.Prereqs.Convolution.Discrete.Defs

Convolution #

This file defines several versions of the discrete convolution of functions.

Main declarations #

Notation #

Notes #

Some lemmas could technically be generalised to a non-commutative semiring domain. Doesn't seem very useful given that the codomain in applications is either , ℝ≥0 or .

Similarly we could drop the commutativity assumption on the domain, but this is unneeded at this point in time.

TODO #

Multiplicativise? Probably ugly and not very useful.

Trivial character #

def trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [CommSemiring R] :
GR

The trivial character.

Equations
@[simp]
theorem trivChar_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [CommSemiring R] (a : G) :
trivChar a = if a = 0 then 1 else 0
@[simp]
theorem conj_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [CommSemiring R] [StarRing R] :

Convolution #

def conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) :
GR

Convolution

Equations
theorem conv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (a : G) :
(f g) a = xFinset.filter (fun (x : G × G) => x.1 + x.2 = a) Finset.univ, f x.1 * g x.2
@[simp]
theorem conv_zero {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
f 0 = 0
@[simp]
theorem zero_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
0 f = 0
theorem conv_add {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
f (g + h) = f g + f h
theorem add_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
(f + g) h = f h + g h
theorem smul_conv {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [DistribSMul H R] [IsScalarTower H R R] (c : H) (f g : GR) :
c f g = c (f g)
theorem conv_smul {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [DistribSMul H R] [SMulCommClass H R R] (c : H) (f g : GR) :
f c g = c (f g)
theorem smul_conv_assoc {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [DistribSMul H R] [IsScalarTower H R R] (c : H) (f g : GR) :
c f g = c (f g)

Alias of smul_conv.

theorem smul_conv_left_comm {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [DistribSMul H R] [SMulCommClass H R R] (c : H) (f g : GR) :
f c g = c (f g)

Alias of conv_smul.

@[simp]
theorem translate_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (a : G) (f g : GR) :
translate a f g = translate a (f g)
@[simp]
theorem conv_translate {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (a : G) (f g : GR) :
f translate a g = translate a (f g)
theorem conv_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) :
f g = g f
theorem mul_smul_conv_comm {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [Monoid H] [DistribMulAction H R] [IsScalarTower H R R] [SMulCommClass H R R] (c d : H) (f g : GR) :
(c * d) (f g) = c f d g
theorem conv_assoc {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
f g h = f (g h)
theorem conv_right_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
f g h = f h g
theorem conv_left_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
f (g h) = g (f h)
theorem conv_rotate {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
f g h = g h f
theorem conv_rotate' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
f (g h) = g (h f)
theorem conv_conv_conv_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h i : GR) :
f g (h i) = f h (g i)
theorem map_conv {G : Type u_1} {R : Type u_3} {S : Type u_4} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [CommSemiring S] (m : R →+* S) (f g : GR) (a : G) :
m ((f g) a) = (m f m g) a
theorem comp_conv {G : Type u_1} {R : Type u_3} {S : Type u_4} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [CommSemiring S] (m : R →+* S) (f g : GR) :
m (f g) = m f m g
theorem conv_eq_sum_sub {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (a : G) :
(f g) a = t : G, f (a - t) * g t
theorem conv_eq_sum_add {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (a : G) :
(f g) a = t : G, f (a + t) * g (-t)
theorem conv_eq_sum_sub' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (a : G) :
(f g) a = t : G, f t * g (a - t)
theorem conv_eq_sum_add' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (a : G) :
(f g) a = t : G, f (-t) * g (a + t)
theorem conv_apply_add {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (a b : G) :
(f g) (a + b) = t : G, f (a + t) * g (b - t)
theorem sum_conv_mul {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
a : G, (f g) a * h a = a : G, b : G, f a * g b * h (a + b)
theorem sum_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) :
a : G, (f g) a = (∑ a : G, f a) * a : G, g a
@[simp]
theorem conv_const {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (b : R) :
f Function.const G b = Function.const G ((∑ x : G, f x) * b)
@[simp]
theorem const_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (b : R) (f : GR) :
Function.const G b f = Function.const G (b * x : G, f x)
@[simp]
theorem conv_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
@[simp]
theorem trivChar_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :

Difference convolution #

def dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
GR

Difference convolution

Equations
theorem dconv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(f g) a = xFinset.filter (fun (x : G × G) => x.1 - x.2 = a) Finset.univ, f x.1 * (starRingEnd (GR)) g x.2
@[simp]
theorem dconv_zero {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
f 0 = 0
@[simp]
theorem zero_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
0 f = 0
theorem dconv_add {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
f (g + h) = f g + f h
theorem add_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
(f + g) h = f h + g h
theorem smul_dconv {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] [DistribSMul H R] [IsScalarTower H R R] (c : H) (f g : GR) :
c f g = c (f g)
theorem dconv_smul {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] [Star H] [DistribSMul H R] [SMulCommClass H R R] [StarModule H R] (c : H) (f g : GR) :
f c g = star c (f g)
@[simp]
theorem translate_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (a : G) (f g : GR) :
translate a f g = translate a (f g)
@[simp]
theorem dconv_translate {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (a : G) (f g : GR) :
f translate a g = translate (-a) (f g)
@[simp]
theorem conv_conjneg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
f conjneg g = f g
@[simp]
theorem dconv_conjneg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
f conjneg g = f g
@[simp]
theorem conj_conv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(starRingEnd R) ((f g) a) = ((starRingEnd (GR)) f (starRingEnd (GR)) g) a
@[simp]
theorem conj_dconv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(starRingEnd R) ((f g) a) = ((starRingEnd (GR)) f (starRingEnd (GR)) g) a
@[simp]
theorem conj_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
(starRingEnd (GR)) (f g) = (starRingEnd (GR)) f (starRingEnd (GR)) g
@[simp]
theorem conj_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
(starRingEnd (GR)) (f g) = (starRingEnd (GR)) f (starRingEnd (GR)) g
theorem IsSelfAdjoint.conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] {f g : GR} [StarRing R] (hf : IsSelfAdjoint f) (hg : IsSelfAdjoint g) :
theorem IsSelfAdjoint.dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] {f g : GR} [StarRing R] (hf : IsSelfAdjoint f) (hg : IsSelfAdjoint g) :
@[simp]
theorem conjneg_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
@[simp]
theorem conjneg_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
conjneg (f g) = g f
theorem smul_dconv_assoc {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] [DistribSMul H R] [IsScalarTower H R R] (c : H) (f g : GR) :
c f g = c (f g)

Alias of smul_dconv.

theorem smul_dconv_left_comm {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] [Star H] [DistribSMul H R] [SMulCommClass H R R] [StarModule H R] (c : H) (f g : GR) :
f c g = star c (f g)

Alias of dconv_smul.

theorem dconv_right_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
f g h = f h g
theorem conv_dconv_assoc {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
f g h = f (g h)
theorem conv_dconv_left_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
f (g h) = g (f h)
theorem conv_dconv_right_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
f g h = f h g
theorem conv_dconv_conv_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h i : GR) :
f g (h i) = f h (g i)
theorem dconv_conv_dconv_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h i : GR) :
f g (h i) = f h (g i)
theorem dconv_dconv_dconv_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h i : GR) :
f g (h i) = f h (g i)
theorem map_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) (a : G) :
((f g) a) = (NNReal.toReal f NNReal.toReal g) a
theorem dconv_eq_sum_sub {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(f g) a = t : G, f (a - t) * (starRingEnd R) (g (-t))
theorem dconv_eq_sum_add {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(f g) a = t : G, f (a + t) * (starRingEnd R) (g t)
theorem dconv_eq_sum_sub' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(f g) a = t : G, f t * (starRingEnd R) (g (t - a))
theorem dconv_eq_sum_add' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(f g) a = t : G, f (-t) * (starRingEnd (GR)) g (-(a + t))
theorem dconv_apply_neg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a : G) :
(f g) (-a) = (starRingEnd R) ((g f) a)
theorem dconv_apply_sub {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (a b : G) :
(f g) (a - b) = t : G, f (a + t) * (starRingEnd R) (g (b + t))
theorem sum_dconv_mul {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
a : G, (f g) a * h a = a : G, b : G, f a * (starRingEnd R) (g b) * h (a - b)
theorem sum_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
a : G, (f g) a = (∑ a : G, f a) * a : G, (starRingEnd R) (g a)
@[simp]
theorem dconv_const {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (b : R) :
f Function.const G b = Function.const G ((∑ x : G, f x) * (starRingEnd R) b)
@[simp]
theorem const_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (b : R) (f : GR) :
Function.const G b f = Function.const G (b * x : G, (starRingEnd R) (f x))
@[simp]
theorem dconv_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
@[simp]
theorem trivChar_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
@[simp]
theorem conv_neg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] (f g : GR) :
f -g = -(f g)
@[simp]
theorem neg_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] (f g : GR) :
-f g = -(f g)
theorem conv_sub {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] (f g h : GR) :
f (g - h) = f g - f h
theorem sub_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] (f g h : GR) :
(f - g) h = f h - g h
@[simp]
theorem dconv_neg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] [StarRing R] (f g : GR) :
f -g = -(f g)
@[simp]
theorem neg_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] [StarRing R] (f g : GR) :
-f g = -(f g)
theorem dconv_sub {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] [StarRing R] (f g h : GR) :
f (g - h) = f g - f h
theorem sub_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] [StarRing R] (f g h : GR) :
(f - g) h = f h - g h
@[simp]
theorem RCLike.coe_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f g : G) (a : G) :
((f g) a) = (ofReal f ofReal g) a
@[simp]
theorem RCLike.coe_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f g : G) (a : G) :
((f g) a) = (ofReal f ofReal g) a
@[simp]
theorem RCLike.coe_comp_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f g : G) :
@[simp]
theorem RCLike.coe_comp_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f g : G) :
@[simp]
theorem Complex.ofReal_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : G) (a : G) :
((f g) a) = (ofReal f ofReal g) a
@[simp]
theorem Complex.ofReal_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : G) (a : G) :
((f g) a) = (ofReal f ofReal g) a
@[simp]
theorem Complex.ofReal_comp_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : G) :
@[simp]
theorem Complex.ofReal_comp_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : G) :
@[simp]
theorem NNReal.coe_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) (a : G) :
((f g) a) = (toReal f toReal g) a
@[simp]
theorem NNReal.coe_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) (a : G) :
((f g) a) = (toReal f toReal g) a
@[simp]
theorem NNReal.coe_comp_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) :
@[simp]
theorem NNReal.coe_comp_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) :

Iterated convolution #

def iterConv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
GR

Iterated convolution.

Equations
@[simp]
theorem iterConv_zero {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
@[simp]
theorem iterConv_one {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
f ∗^ 1 = f
theorem iterConv_succ {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (n : ) :
f ∗^ (n + 1) = f ∗^ n f
theorem iterConv_succ' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (n : ) :
f ∗^ (n + 1) = f f ∗^ n
theorem iterConv_add {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (m n : ) :
f ∗^ (m + n) = f ∗^ m f ∗^ n
theorem iterConv_mul {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (m n : ) :
f ∗^ (m * n) = f ∗^ m ∗^ n
theorem iterConv_mul' {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (m n : ) :
f ∗^ (m * n) = f ∗^ n ∗^ m
theorem iterConv_conv_distrib {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (n : ) :
(f g) ∗^ n = f ∗^ n g ∗^ n
@[simp]
theorem zero_iterConv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] {n : } :
n 00 ∗^ n = 0
@[simp]
theorem smul_iterConv {G : Type u_1} {H : Type u_2} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [Monoid H] [DistribMulAction H R] [IsScalarTower H R R] [SMulCommClass H R R] (c : H) (f : GR) (n : ) :
(c f) ∗^ n = c ^ n f ∗^ n
theorem comp_iterConv {G : Type u_1} {R : Type u_3} {S : Type u_4} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [CommSemiring S] (m : R →+* S) (f : GR) (n : ) :
m (f ∗^ n) = m f ∗^ n
theorem map_iterConv {G : Type u_1} {R : Type u_3} {S : Type u_4} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [CommSemiring S] (m : R →+* S) (f : GR) (a : G) (n : ) :
m ((f ∗^ n) a) = (m f ∗^ n) a
theorem sum_iterConv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (n : ) :
a : G, (f ∗^ n) a = (∑ a : G, f a) ^ n
@[simp]
theorem iterConv_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (n : ) :
theorem support_iterConv_subset {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (n : ) :
theorem iterConv_dconv_distrib {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (n : ) :
(f g) ∗^ n = f ∗^ n g ∗^ n
@[simp]
theorem conj_iterConv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (n : ) :
(starRingEnd (GR)) (f ∗^ n) = (starRingEnd (GR)) f ∗^ n
@[simp]
theorem conj_iterConv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (n : ) (a : G) :
(starRingEnd R) ((f ∗^ n) a) = ((starRingEnd (GR)) f ∗^ n) a
theorem IsSelfAdjoint.iterConv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] {f : GR} [StarRing R] (hf : IsSelfAdjoint f) (n : ) :
@[simp]
theorem conjneg_iterConv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (n : ) :
@[simp]
theorem NNReal.ofReal_iterConv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : GNNReal) (n : ) (a : G) :
((f ∗^ n) a) = (toReal f ∗^ n) a
@[simp]
theorem Complex.ofReal_iterConv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : G) (n : ) (a : G) :
((f ∗^ n) a) = (ofReal f ∗^ n) a