Type classes for the Fourier transform #
In this file we define type classes for the Fourier transform and the inverse Fourier transform.
We introduce the notation š and šā» in these classes to denote the Fourier transform and
the inverse Fourier transform, respectively.
Moreover, we provide type-classes that encode the linear structure and the Fourier inversion theorem.
The notation typeclass for the Fourier transform.
While the Fourier transform is a linear operator, the notation is for the function E ā F without
any additional properties. This makes it possible to use the notation for functions where
integrability is an issue.
Moreover, including a scalar multiplication causes problems for inferring the notation type class.
- fourierTransform : E ā F
š fis the Fourier transform off. The meaning of this notation is type-dependent.
Instances
The notation typeclass for the inverse Fourier transform.
While the inverse Fourier transform is a linear operator, the notation is for the function E ā F
without any additional properties. This makes it possible to use the notation for functions where
integrability is an issue.
Moreover, including a scalar multiplication causes problems for inferring the notation type class.
- fourierTransformInv : E ā F
šā» fis the inverse Fourier transform off. The meaning of this notation is type-dependent.
Instances
š f is the Fourier transform of f. The meaning of this notation is type-dependent.
Equations
- FourierTransform.termš = Lean.ParserDescr.node `FourierTransform.termš 1024 (Lean.ParserDescr.symbol "š")
Instances For
šā» f is the inverse Fourier transform of f. The meaning of this notation is
type-dependent.
Equations
- FourierTransform.Ā«termšā»Ā» = Lean.ParserDescr.node `FourierTransform.Ā«termšā»Ā» 1024 (Lean.ParserDescr.symbol "šā»")
Instances For
A FourierModule is a function space on which the Fourier transform is a linear map.
- fourierTransform : E ā F
- fourier_add (f g : E) : FourierTransform.fourierTransform (f + g) = FourierTransform.fourierTransform f + FourierTransform.fourierTransform g
- fourier_smul (r : R) (f : E) : FourierTransform.fourierTransform (r ⢠f) = r ⢠FourierTransform.fourierTransform f
Instances
A FourierInvModule is a function space on which the Fourier transform is a linear map.
- fourierTransformInv : E ā F
- fourierInv_add (f g : E) : FourierTransformInv.fourierTransformInv (f + g) = FourierTransformInv.fourierTransformInv f + FourierTransformInv.fourierTransformInv g
- fourierInv_smul (r : R) (f : E) : FourierTransformInv.fourierTransformInv (r ⢠f) = r ⢠FourierTransformInv.fourierTransformInv f
Instances
The Fourier transform as a linear map.
Equations
- FourierTransform.fourierā R E F = { toFun := FourierTransform.fourierTransform, map_add' := āÆ, map_smul' := ⯠}
Instances For
The inverse Fourier transform as a linear map.
Equations
- FourierTransform.fourierInvā R E F = { toFun := FourierTransformInv.fourierTransformInv, map_add' := āÆ, map_smul' := ⯠}
Instances For
A FourierPair is a pair of spaces E and F such that šā» ā š = id on E.
- inv_fourier (f : E) : FourierTransformInv.fourierTransformInv (FourierTransform.fourierTransform f) = f
Instances
A FourierInvPair is a pair of spaces E and F such that š ā šā» = id on E.
- fourier_inv (f : E) : FourierTransform.fourierTransform (FourierTransformInv.fourierTransformInv f) = f
Instances
The Fourier transform as a linear equivalence.
Equations
- FourierTransform.fourierEquiv R E F = { toLinearMap := FourierTransform.fourierā R E F, invFun := FourierTransformInv.fourierTransformInv, left_inv := āÆ, right_inv := ⯠}