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
Instances For
    @[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] :
    (starRingEnd (GR)) trivChar = trivChar
    @[simp]
    theorem conjneg_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [CommSemiring R] [StarRing R] :
    conjneg trivChar = trivChar
    @[simp]
    theorem isSelfAdjoint_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [CommSemiring R] [StarRing R] :
    IsSelfAdjoint trivChar

    Convolution #

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

    Convolution

    Equations
    Instances For
      theorem conv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (g : GR) :
      τ a f g = τ 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 : GR) (g : GR) :
      f τ a g = τ a (f g)
      theorem conv_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (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 : H) (d : H) (f : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (h : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (g : GR) (a : G) (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 : GR) (g : GR) (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 : GR) (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) :
      f trivChar = f
      @[simp]
      theorem trivChar_conv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
      trivChar f = f
      theorem support_conv_subset {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) (g : GR) :

      Difference convolution #

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

      Difference convolution

      Equations
      Instances For
        theorem dconv_apply {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (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 : GR) (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 : GR) (g : GR) :
        τ a f g = τ 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 : GR) (g : GR) :
        f τ a g = τ (-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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR} {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 : GR} {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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (h : GR) (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 : GR) (g : GR) (h : GR) (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 : GR) (g : GR) (h : GR) (i : GR) :
        f g (h i) = f h (g i)
        theorem map_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : GNNReal) (g : GNNReal) (a : G) :
        ((f g) a) = (NNReal.toReal f NNReal.toReal g) a
        theorem comp_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : GNNReal) (g : GNNReal) :
        theorem dconv_eq_sum_sub {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (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 : GR) (g : GR) (a : G) (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 : GR) (g : GR) (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 : GR) (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) :
        f trivChar = f
        @[simp]
        theorem trivChar_dconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
        trivChar f = conjneg f
        theorem support_dconv_subset {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) (g : GR) :
        @[simp]
        theorem conv_neg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] (f : GR) (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 : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : GR) (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 : GR) (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 : GR) (g : GR) (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 : GR) (g : GR) (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 : G) (a : G) :
        ((f g) a) = (RCLike.ofReal f RCLike.ofReal g) a
        @[simp]
        theorem RCLike.coe_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f : G) (g : G) (a : G) :
        ((f g) a) = (RCLike.ofReal f RCLike.ofReal g) a
        @[simp]
        theorem RCLike.coe_comp_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f : G) (g : G) :
        RCLike.ofReal (f g) = RCLike.ofReal f RCLike.ofReal g
        @[simp]
        theorem RCLike.coe_comp_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f : G) (g : G) :
        RCLike.ofReal (f g) = RCLike.ofReal f RCLike.ofReal g
        @[simp]
        theorem Complex.ofReal_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : G) (g : G) (a : G) :
        @[simp]
        theorem Complex.ofReal_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : G) (g : G) (a : G) :
        @[simp]
        @[simp]
        @[simp]
        theorem NNReal.coe_conv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : GNNReal) (g : GNNReal) (a : G) :
        ((f g) a) = (NNReal.toReal f NNReal.toReal g) a
        @[simp]
        theorem NNReal.coe_dconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f : GNNReal) (g : GNNReal) (a : G) :
        ((f g) a) = (NNReal.toReal f NNReal.toReal g) a
        @[simp]
        @[simp]

        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
        Instances For
          @[simp]
          theorem iterConv_zero {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
          f ∗^ 0 = trivChar
          @[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 : GR) (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 : ) :
          trivChar ∗^ n = trivChar
          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 : GR) (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) = (NNReal.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) = (Complex.ofReal f ∗^ n) a