Convolution in the compact normalisation #
This file defines several versions of the discrete convolution of functions with the compact normalisation.
Main declarations #
conv: Discrete convolution of two functions in the compact normalisationdconv: Discrete difference convolution of two functions in the compact normalisationiterCConv: Iterated convolution of a function in the compact normalisation
Notation #
f ∗ g: Convolutionf ○ g: Difference convolutionf ∗^ₙ n: Iterated convolution
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]
:
G → R
The trivial character.
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]
:
@[simp]
theorem
conjneg_trivNChar
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[StarRing R]
:
@[simp]
theorem
isSelfAdjoint_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 : G → R)
(a : G)
:
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 : G → R)
:
@[simp]
theorem
conv_trivNChar
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
:
@[simp]
theorem
trivNChar_conv
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
:
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 : G → R)
(a : G)
:
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 : G → R)
:
@[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 : G → R)
:
@[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 : G → R)
:
@[simp]
theorem
one_conv_one
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
:
@[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]
:
Iterated convolution #
Equations
- «term_∗^ₙ_» = Lean.ParserDescr.trailingNode `«term_∗^ₙ_» 78 78 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∗^ₙ ") (Lean.ParserDescr.cat `term 79))
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 : G → R)
:
@[simp]
theorem
iterCConv_one
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
:
theorem
iterCConv_succ
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
(n : ℕ)
:
theorem
iterCConv_succ'
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
(n : ℕ)
:
theorem
iterCConv_mul
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
(m n : ℕ)
:
theorem
iterCConv_mul'
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
(m n : ℕ)
:
@[simp]
theorem
zero_iterCConv
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
{n : ℕ}
:
@[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 : G → R)
(n : ℕ)
:
theorem
expect_iterCConv
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Semifield R]
[CharZero R]
(f : G → R)
(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 : G → R)
(n : ℕ)
:
@[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 : G → R)
(n : ℕ)
:
@[simp]
theorem
balance_iterCConv
{G : Type u_1}
{R : Type u_3}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
[Field R]
[CharZero R]
(f : G → R)
{n : ℕ}
:
n ≠ 0 → Fintype.balance (f ∗^ₙ n) = Fintype.balance f ∗^ₙ n
@[simp]
theorem
NNReal.coe_iterCConv
{G : Type u_1}
[Fintype G]
[DecidableEq G]
[AddCommGroup G]
(f : G → NNReal)
(n : ℕ)
(a : G)
: