Documentation

APAP.Prereqs.Convolution.Compact

Convolution in the compact normalisation #

This file defines several versions of the discrete convolution of functions with the compact normalisation.

Main declarations #

Notation #

Notes #

Some lemmas could technically be generalised to a division ring. 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.

Convolution of functions #

In this section, we define the convolution f ∗ g and difference convolution f ○ g of functions f g : G → R, and show how they interact.

Trivial character #

def trivNChar {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] :
GR

The trivial character.

Equations
Instances For
    @[simp]
    theorem trivNChar_apply {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] (a : G) :
    @[simp]
    theorem conj_trivNChar {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [StarRing R] :

    Convolution #

    theorem conv_apply_eq_smul_ddconv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f g : GR) (a : G) :
    (f g) a = (↑(Fintype.card G))⁻¹ (f ∗ᵈ g) a
    theorem conv_eq_smul_ddconv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f g : GR) :
    f g = (↑(Fintype.card G))⁻¹ (f ∗ᵈ g)
    @[simp]
    theorem conv_trivNChar {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) :
    @[simp]
    theorem trivNChar_conv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) :
    theorem dconv_apply_eq_smul_dddconv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f g : GR) (a : G) :
    (f g) a = (↑(Fintype.card G))⁻¹ (f ○ᵈ g) a
    theorem dconv_eq_smul_dddconv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f g : GR) :
    f g = (↑(Fintype.card G))⁻¹ (f ○ᵈ g)
    @[simp]
    theorem dconv_trivNChar {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f : GR) :
    @[simp]
    theorem trivNChar_dconv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f : GR) :
    @[simp]
    theorem one_conv_one {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] :
    1 1 = 1
    @[simp]
    theorem one_dconv_one {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] :
    1 1 = 1

    Iterated convolution #

    def iterCConv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) :
    GR

    Iterated convolution.

    Equations
    Instances For
      @[simp]
      theorem iterCConv_zero {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) :
      @[simp]
      theorem iterCConv_one {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) :
      f ∗^ₙ 1 = f
      theorem iterCConv_succ {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (n : ) :
      f ∗^ₙ (n + 1) = f ∗^ₙ n f
      theorem iterCConv_succ' {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (n : ) :
      f ∗^ₙ (n + 1) = f f ∗^ₙ n
      theorem iterCConv_add {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (m n : ) :
      f ∗^ₙ (m + n) = f ∗^ₙ m f ∗^ₙ n
      theorem iterCConv_mul {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (m n : ) :
      f ∗^ₙ (m * n) = f ∗^ₙ m ∗^ₙ n
      theorem iterCConv_mul' {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (m n : ) :
      f ∗^ₙ (m * n) = f ∗^ₙ n ∗^ₙ m
      theorem iterCConv_conv_distrib {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f g : GR) (n : ) :
      (f g) ∗^ₙ n = f ∗^ₙ n g ∗^ₙ n
      @[simp]
      theorem zero_iterCConv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] {n : } :
      n 00 ∗^ₙ n = 0
      @[simp]
      theorem smul_iterCConv {G : Type u_1} {H : Type u_2} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero 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_iterCConv {G : Type u_1} {R : Type u_3} {S : Type u_4} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [Semifield S] [CharZero S] (m : R →+* S) (f : GR) (n : ) :
      m (f ∗^ₙ n) = m f ∗^ₙ n
      theorem expect_iterCConv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (n : ) :
      (Finset.univ.expect fun (a : G) => (f ∗^ₙ n) a) = (Finset.univ.expect fun (a : G) => f a) ^ n
      @[simp]
      theorem iterCConv_trivNChar {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (n : ) :
      theorem support_iterCConv_subset {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] (f : GR) (n : ) :
      theorem map_iterCConv {G : Type u_1} {R : Type u_3} {S : Type u_4} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [Semifield S] [CharZero S] (m : R →+* S) (f : GR) (a : G) (n : ) :
      m ((f ∗^ₙ n) a) = (m f ∗^ₙ n) a
      @[simp]
      theorem conj_iterCConv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f : GR) (n : ) :
      (starRingEnd (GR)) (f ∗^ₙ n) = (starRingEnd (GR)) f ∗^ₙ n
      @[simp]
      theorem conjneg_iterCConv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f : GR) (n : ) :
      theorem iterCConv_dconv_distrib {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield R] [CharZero R] [StarRing R] (f g : GR) (n : ) :
      (f g) ∗^ₙ n = f ∗^ₙ n g ∗^ₙ n
      @[simp]
      theorem balance_iterCConv {G : Type u_1} {R : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Field R] [CharZero R] (f : GR) {n : } :
      @[simp]
      theorem NNReal.coe_iterCConv {G : Type u_1} [Fintype G] [DecidableEq G] [AddCommGroup G] (f : GNNReal) (n : ) (a : G) :
      ((f ∗^ₙ n) a) = (toReal f ∗^ₙ n) a