Documentation

APAP.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] :

    Convolution #

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

    Convolution

    Equations
    • (f ∗ᵈ g) a = x : G × G with x.1 + x.2 = a, f x.1 * g x.2
    Instances For
      theorem ddconv_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 = x : G × G with x.1 + x.2 = a, f x.1 * g x.2
      @[simp]
      theorem ddconv_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_ddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
      0 ∗ᵈ f = 0
      theorem ddconv_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_ddconv {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_ddconv {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 ddconv_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_ddconv_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_ddconv.

      theorem smul_ddconv_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 ddconv_smul.

      @[simp]
      theorem translate_ddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (a : G) (f g : GR) :
      @[simp]
      theorem ddconv_translate {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (a : G) (f g : GR) :
      theorem ddconv_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_ddconv_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 ddconv_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 ddconv_right_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
      theorem ddconv_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 ddconv_rotate {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g h : GR) :
      theorem ddconv_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 ddconv_ddconv_ddconv_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_ddconv {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_ddconv {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 ddconv_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 ddconv_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 ddconv_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 ddconv_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 ddconv_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_ddconv_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_ddconv {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 ddconv_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_ddconv {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 ddconv_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :
      @[simp]
      theorem trivChar_ddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f : GR) :

      Difference convolution #

      def dddconv {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
      Instances For
        theorem dddconv_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 = x : G × G with x.1 - x.2 = a, f x.1 * (starRingEnd (GR)) g x.2
        @[simp]
        theorem dddconv_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_dddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
        0 ○ᵈ f = 0
        @[simp]
        theorem dddconv_fun_zero {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
        (f ○ᵈ fun (x : G) => 0) = 0
        @[simp]
        theorem fun_zero_dddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
        (fun (x : G) => 0) ○ᵈ f = 0
        theorem dddconv_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_dddconv {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_dddconv {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 dddconv_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_dddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (a : G) (f g : GR) :
        @[simp]
        theorem dddconv_translate {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (a : G) (f g : GR) :
        @[simp]
        theorem ddconv_conjneg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
        @[simp]
        theorem dddconv_conjneg {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
        @[simp]
        theorem conj_ddconv_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_dddconv_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_ddconv {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_dddconv {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.ddconv {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.dddconv {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_ddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
        @[simp]
        theorem conjneg_dddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) :
        theorem smul_dddconv_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_dddconv.

        theorem smul_dddconv_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 dddconv_smul.

        theorem dddconv_right_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
        theorem ddconv_dddconv_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 ddconv_dddconv_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 ddconv_dddconv_right_comm {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g h : GR) :
        theorem ddconv_dddconv_ddconv_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 dddconv_ddconv_dddconv_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 dddconv_dddconv_dddconv_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_dddconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) (a : G) :
        theorem dddconv_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 dddconv_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 dddconv_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 dddconv_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 dddconv_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 dddconv_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_dddconv_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_dddconv {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 dddconv_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_dddconv {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 dddconv_trivChar {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
        @[simp]
        theorem trivChar_dddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f : GR) :
        @[simp]
        theorem ddconv_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_ddconv {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommRing R] (f g : GR) :
        -f ∗ᵈ g = -(f ∗ᵈ g)
        theorem ddconv_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_ddconv {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 dddconv_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_dddconv {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 dddconv_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_dddconv {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_ddconv {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_dddconv {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_ddconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f g : G) :
        @[simp]
        theorem RCLike.coe_comp_dddconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] {𝕜 : Type} [RCLike 𝕜] (f g : G) :
        @[simp]
        theorem Complex.ofReal_ddconv {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_dddconv {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_ddconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : G) :
        @[simp]
        @[simp]
        theorem NNReal.coe_ddconv {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_dddconv {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_ddconv {G : Type u_1} [DecidableEq G] [AddCommGroup G] [Fintype G] (f g : GNNReal) :
        @[simp]
        theorem NNReal.coe_comp_dddconv {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
        Instances For
          @[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_ddconv_distrib {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] (f g : GR) (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_dddconv_distrib {G : Type u_1} {R : Type u_3} [DecidableEq G] [AddCommGroup G] [Fintype G] [CommSemiring R] [StarRing R] (f g : GR) (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