Convolution #
This file defines several versions of the discrete convolution of functions.
Main declarations #
conv
: Discrete convolution of two functionsdconv
: Discrete difference convolution of two functionsiterConv
: Iterated convolution of a function
Notation #
f ∗ g
: Convolutionf ○ g
: Difference convolutionf ∗^ n
: Iterated convolution
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 #
The trivial character.
Instances For
@[simp]
theorem
trivChar_apply
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[CommSemiring R]
(a : G)
:
@[simp]
theorem
conj_trivChar
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[CommSemiring R]
[StarRing R]
:
(starRingEnd (G → R)) trivChar = trivChar
@[simp]
theorem
conjneg_trivChar
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[CommSemiring R]
[StarRing R]
:
@[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 : G → R)
(g : G → R)
:
G → R
Convolution
Equations
Instances For
Equations
- «term_∗_» = Lean.ParserDescr.trailingNode `«term_∗_» 71 71 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∗ ") (Lean.ParserDescr.cat `term 72))
Instances For
theorem
conv_apply
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(a : G)
:
@[simp]
theorem
conv_zero
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
:
@[simp]
theorem
zero_conv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
:
theorem
conv_add
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
add_conv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
@[simp]
theorem
conv_translate
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(a : G)
(f : G → R)
(g : G → R)
:
theorem
conv_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
theorem
conv_assoc
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_right_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_left_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_rotate
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_rotate'
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_conv_conv_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
(i : G → R)
:
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 : G → R)
(g : G → R)
(a : G)
:
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 : G → R)
(g : G → R)
:
theorem
conv_eq_sum_sub
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(a : G)
:
theorem
conv_eq_sum_add
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(a : G)
:
theorem
conv_eq_sum_sub'
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(a : G)
:
theorem
conv_eq_sum_add'
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(a : G)
:
theorem
conv_apply_add
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(a : G)
(b : G)
:
theorem
sum_conv_mul
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
sum_conv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
:
@[simp]
theorem
conv_const
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(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 : G → R)
:
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 : G → R)
:
@[simp]
theorem
trivChar_conv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
:
theorem
support_conv_subset
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
:
Function.support (f ∗ g) ⊆ Function.support f + Function.support g
Difference convolution #
def
dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
G → R
Difference convolution
Equations
- (f ○ g) a = ∑ x ∈ Finset.filter (fun (x : G × G) => x.1 - x.2 = a) Finset.univ, f x.1 * (starRingEnd (G → R)) g x.2
Instances For
Equations
- «term_○_» = Lean.ParserDescr.trailingNode `«term_○_» 71 71 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ○ ") (Lean.ParserDescr.cat `term 72))
Instances For
theorem
dconv_apply
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(a : G)
:
(f ○ g) a = ∑ x ∈ Finset.filter (fun (x : G × G) => x.1 - x.2 = a) Finset.univ, f x.1 * (starRingEnd (G → R)) 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 : G → R)
:
@[simp]
theorem
zero_dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
:
theorem
dconv_add
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
add_dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
@[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 : G → R)
(g : G → R)
:
@[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 : G → R)
(g : G → R)
:
@[simp]
theorem
conv_conjneg
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
@[simp]
theorem
dconv_conjneg
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
@[simp]
theorem
conj_conv_apply
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(a : G)
:
(starRingEnd R) ((f ∗ g) a) = ((starRingEnd (G → R)) f ∗ (starRingEnd (G → R)) 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 : G → R)
(g : G → R)
(a : G)
:
(starRingEnd R) ((f ○ g) a) = ((starRingEnd (G → R)) f ○ (starRingEnd (G → R)) 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 : G → R)
(g : G → R)
:
(starRingEnd (G → R)) (f ∗ g) = (starRingEnd (G → R)) f ∗ (starRingEnd (G → R)) g
@[simp]
theorem
conj_dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
(starRingEnd (G → R)) (f ○ g) = (starRingEnd (G → R)) f ○ (starRingEnd (G → R)) g
theorem
IsSelfAdjoint.conv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
{f : G → R}
{g : G → R}
[StarRing R]
(hf : IsSelfAdjoint f)
(hg : IsSelfAdjoint g)
:
IsSelfAdjoint (f ∗ g)
theorem
IsSelfAdjoint.dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
{f : G → R}
{g : G → R}
[StarRing R]
(hf : IsSelfAdjoint f)
(hg : IsSelfAdjoint g)
:
IsSelfAdjoint (f ○ g)
@[simp]
theorem
conjneg_conv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
@[simp]
theorem
conjneg_dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
:
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 : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_dconv_assoc
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_dconv_left_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_dconv_right_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
conv_dconv_conv_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
(i : G → R)
:
theorem
dconv_conv_dconv_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
(i : G → R)
:
theorem
dconv_dconv_dconv_comm
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
(i : G → R)
:
theorem
map_dconv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → NNReal)
(g : G → NNReal)
(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 : G → NNReal)
(g : G → NNReal)
:
NNReal.toReal ∘ (f ○ g) = NNReal.toReal ∘ f ○ NNReal.toReal ∘ g
theorem
dconv_eq_sum_sub
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(a : G)
:
theorem
dconv_eq_sum_add
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(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 : G → R)
(g : G → R)
(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 : G → R)
(g : G → R)
(a : G)
:
theorem
dconv_apply_neg
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(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 : G → R)
(g : G → R)
(a : G)
(b : G)
:
theorem
sum_dconv_mul
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(h : G → R)
:
theorem
sum_dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
∑ 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 : G → R)
(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 : G → R)
:
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 : G → R)
:
@[simp]
theorem
trivChar_dconv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
:
theorem
support_dconv_subset
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
:
Function.support (f ○ g) ⊆ Function.support f - Function.support g
@[simp]
theorem
RCLike.coe_conv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
{𝕜 : Type}
[RCLike 𝕜]
(f : G → ℝ)
(g : G → ℝ)
(a : G)
:
@[simp]
theorem
RCLike.coe_dconv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
{𝕜 : Type}
[RCLike 𝕜]
(f : G → ℝ)
(g : G → ℝ)
(a : G)
:
@[simp]
theorem
Complex.ofReal_conv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → ℝ)
(g : G → ℝ)
(a : G)
:
↑((f ∗ g) a) = (Complex.ofReal ∘ f ∗ Complex.ofReal ∘ g) a
@[simp]
theorem
Complex.ofReal_dconv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → ℝ)
(g : G → ℝ)
(a : G)
:
↑((f ○ g) a) = (Complex.ofReal ∘ f ○ Complex.ofReal ∘ g) a
@[simp]
theorem
Complex.ofReal_comp_conv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → ℝ)
(g : G → ℝ)
:
Complex.ofReal ∘ (f ∗ g) = Complex.ofReal ∘ f ∗ Complex.ofReal ∘ g
@[simp]
theorem
Complex.ofReal_comp_dconv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → ℝ)
(g : G → ℝ)
:
Complex.ofReal ∘ (f ○ g) = Complex.ofReal ∘ f ○ Complex.ofReal ∘ g
@[simp]
theorem
NNReal.coe_conv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → NNReal)
(g : G → NNReal)
(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 : G → NNReal)
(g : G → NNReal)
(a : G)
:
↑((f ○ g) a) = (NNReal.toReal ∘ f ○ NNReal.toReal ∘ g) a
@[simp]
theorem
NNReal.coe_comp_conv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → NNReal)
(g : G → NNReal)
:
NNReal.toReal ∘ (f ∗ g) = NNReal.toReal ∘ f ∗ NNReal.toReal ∘ g
@[simp]
theorem
NNReal.coe_comp_dconv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → NNReal)
(g : G → NNReal)
:
NNReal.toReal ∘ (f ○ g) = NNReal.toReal ∘ f ○ NNReal.toReal ∘ g
Iterated convolution #
def
iterConv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
:
ℕ → G → R
Iterated convolution.
Instances For
Equations
- «term_∗^_» = Lean.ParserDescr.trailingNode `«term_∗^_» 78 78 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ∗^ ") (Lean.ParserDescr.cat `term 79))
Instances For
@[simp]
theorem
iterConv_zero
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
:
@[simp]
theorem
iterConv_one
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
:
theorem
iterConv_succ
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(n : ℕ)
:
theorem
iterConv_succ'
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(n : ℕ)
:
theorem
iterConv_add
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(m : ℕ)
(n : ℕ)
:
theorem
iterConv_mul
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(m : ℕ)
(n : ℕ)
:
theorem
iterConv_mul'
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(m : ℕ)
(n : ℕ)
:
theorem
iterConv_conv_distrib
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(g : G → R)
(n : ℕ)
:
@[simp]
theorem
zero_iterConv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
{n : ℕ}
:
@[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 : G → R)
(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 : G → R)
(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 : G → R)
(a : G)
(n : ℕ)
:
theorem
sum_iterConv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
(f : G → R)
(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 : G → R)
(n : ℕ)
:
Function.support (f ∗^ n) ⊆ n • Function.support f
theorem
iterConv_dconv_distrib
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(g : G → R)
(n : ℕ)
:
@[simp]
theorem
conj_iterConv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
[StarRing R]
(f : G → R)
(n : ℕ)
:
(starRingEnd (G → R)) (f ∗^ n) = (starRingEnd (G → R)) 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 : G → R)
(n : ℕ)
(a : G)
:
(starRingEnd R) ((f ∗^ n) a) = ((starRingEnd (G → R)) f ∗^ n) a
theorem
IsSelfAdjoint.iterConv
{G : Type u_1}
{R : Type u_3}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
[CommSemiring R]
{f : G → R}
[StarRing R]
(hf : IsSelfAdjoint f)
(n : ℕ)
:
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 : G → R)
(n : ℕ)
:
@[simp]
theorem
NNReal.ofReal_iterConv
{G : Type u_1}
[DecidableEq G]
[AddCommGroup G]
[Fintype G]
(f : G → NNReal)
(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