Documentation

LeanPool.PFR.AddCombi.Convolution.Finite.Defs

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.

def conv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) :
GK

Compact convolution on a finite group.

The value of f ∗ g at a is the average of the value of f b * g c over b + c = a.

Equations
Instances For

    Compact convolution on a finite group.

    The value of f ∗ g at a is the average of the value of f b * g c over b + c = a.

    Equations
    Instances For
      theorem conv_apply {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) (a : G) :
      (f g) a = {x : G × G | x.1 + x.2 = a}.expect fun (x : G × G) => f x.1 * g x.2
      theorem conv_comm {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) :
      f g = g f
      theorem conv_eq_expect_sub {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) (a : G) :
      (f g) a = Finset.univ.expect fun (t : G) => f (a - t) * g t
      theorem conv_eq_expect_add {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) (a : G) :
      (f g) a = Finset.univ.expect fun (t : G) => f (a + t) * g (-t)
      theorem conv_eq_expect_sub' {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) (a : G) :
      (f g) a = Finset.univ.expect fun (t : G) => f t * g (a - t)
      theorem conv_apply_add {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] (f g : GK) (a b : G) :
      (f g) (a + b) = Finset.univ.expect fun (t : G) => f (a + t) * g (b - t)
      def dconv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) :
      GK

      Compact difference convolution on a finite group.

      The value of f ∗ g at a is the average of the value of f b * g c over b - c = a.

      Equations
      Instances For

        Compact difference convolution on a finite group.

        The value of f ∗ g at a is the average of the value of f b * g c over b - c = a.

        Equations
        Instances For
          @[simp]
          theorem conv_conjneg {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) :
          f conjneg g = f g
          @[simp]
          theorem conj_conv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) :
          (starRingEnd (GK)) (f g) = (starRingEnd (GK)) f (starRingEnd (GK)) g
          @[simp]
          theorem conj_dconv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) :
          (starRingEnd (GK)) (f g) = (starRingEnd (GK)) f (starRingEnd (GK)) g
          theorem IsSelfAdjoint.conv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] {f g : GK} [StarRing K] (hf : IsSelfAdjoint f) (hg : IsSelfAdjoint g) :
          theorem IsSelfAdjoint.dconv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] {f g : GK} [StarRing K] (hf : IsSelfAdjoint f) (hg : IsSelfAdjoint g) :
          theorem dconv_eq_expect_add {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) (a : G) :
          (f g) a = Finset.univ.expect fun (t : G) => f (a + t) * (starRingEnd K) (g t)
          theorem dconv_eq_expect_sub {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) (a : G) :
          (f g) a = Finset.univ.expect fun (t : G) => f t * (starRingEnd K) (g (t - a))
          theorem expect_dconv_mul {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g h : GK) :
          (Finset.univ.expect fun (a : G) => (f g) a * h a) = Finset.univ.expect fun (a : G) => Finset.univ.expect fun (b : G) => f a * (starRingEnd K) (g b) * h (a - b)
          theorem expect_dconv {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f g : GK) :
          (Finset.univ.expect fun (a : G) => (f g) a) = (Finset.univ.expect fun (a : G) => f a) * Finset.univ.expect fun (a : G) => (starRingEnd K) (g a)
          theorem dconv_indicator_one {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (f : GK) (s : Finset G) :
          (f (↑s).indicator fun (x : G) => 1) = (↑(Fintype.card G))⁻¹ as, translate (-a) f
          theorem indicator_one_dconv_indicator_one_eq_dens {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (s t : Finset G) (a : G) :
          (((↑s).indicator fun (x : G) => 1) (↑t).indicator fun (x : G) => 1) a = (s (a +ᵥ t)).dens
          theorem indicator_one_dconv_indicator_one_eq_addConvolution_div {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (s t : Finset G) (a : G) :
          (((↑s).indicator fun (x : G) => 1) (↑t).indicator fun (x : G) => 1) a = (s.addConvolution (-t) a) / (Fintype.card G)
          theorem expect_indicator_one_dconv_indicator_one {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (s t : Finset G) :
          (Finset.univ.expect fun (a : G) => (((↑s).indicator fun (x : G) => 1) (↑t).indicator fun (x : G) => 1) a) = s.dens * t.dens
          theorem expect_indicator_one_dconv_indicator_sq {G : Type u_1} {K : Type u_3} [Fintype G] [DecidableEq G] [AddCommGroup G] [Semifield K] [CharZero K] [StarRing K] (s t : Finset G) :
          (Finset.univ.expect fun (x : G) => (((↑s).indicator fun (x : G) => 1) (↑t).indicator fun (x : G) => 1) x ^ 2) = (s.addEnergy' t)