Divisors on subsets of normed fields #
This file defines divisors, a standard book-keeping tool in complex analysis used to keep track of pole/vanishing orders of meromorphic objects, typically functions or differential forms. It provides supporting API and establishes divisors as an instance of a lattice ordered commutative group.
Throughout the present file, ๐
denotes a nontrivially normed field, and U
a
subset of ๐
.
TODOs #
- Constructions: The divisor of a meromorphic function, behavior under product of meromorphic functions, behavior under addition, behavior under restriction
- Construction: The divisor of a rational polynomial
Definition, coercion to functions and basic extensionality lemmas #
A divisor on U
is a function ๐ โ โค
whose support is discrete within U
and
entirely contained within U
. The theorem
supportDiscreteWithin_iff_locallyFiniteWithin
shows that this is equivalent to
the textbook definition, which requires the support of f
to be locally finite
within U
.
The condition supportDiscreteWithinU
in a divisor is equivalent to saying
that the support is locally finite near every point of U
.
Divisors are FunLike
: the coercion from divisors to functions is injective.
Equations
- DivisorOn.instFunLikeInt = { coe := fun (D : DivisorOn U) => D.toFun, coe_injective' := โฏ }
This allows writing D.support
instead of Function.support D
Equations
- D.support = Function.support โD
Instances For
Elementary properties of the support #
Simplifier lemma: A divisor on U
evaluates to zero outside of U
.
The support of a divisor is discrete.
If U
is closed, the the support of a divisor on U
is also closed.
If U
is closed, the the support of a divisor on U
is finite.
Lattice ordered group structure #
This section equips divisors on U
with the standard structure of a lattice
ordered group, where addition, comparison, min and max of divisors are defined
pointwise.
Divisors form an additive subgroup of functions ๐ โ โค
Equations
- DivisorOn.addSubgroup U = { carrier := {f : ๐ โ โค | Function.support f โ U โง f =แถ [Filter.codiscreteWithin U] 0}, add_mem' := โฏ, zero_mem' := โฏ, neg_mem' := โฏ }
Instances For
Assign a divisor to a function in the subgroup
Equations
- DivisorOn.mk_of_mem f hf = { toFun := f, supportWithinDomain' := โฏ, supportDiscreteWithinDomain' := โฏ }
Instances For
Equations
- DivisorOn.instZero = { zero := DivisorOn.mk_of_mem 0 โฏ }
Equations
- DivisorOn.instAdd = { add := fun (Dโ Dโ : DivisorOn U) => DivisorOn.mk_of_mem (โDโ + โDโ) โฏ }
Equations
- DivisorOn.instNeg = { neg := fun (D : DivisorOn U) => DivisorOn.mk_of_mem (-โD) โฏ }
Equations
- DivisorOn.instSub = { sub := fun (Dโ Dโ : DivisorOn U) => DivisorOn.mk_of_mem (โDโ - โDโ) โฏ }
Equations
- DivisorOn.instSMulNat = { smul := fun (n : โ) (D : DivisorOn U) => DivisorOn.mk_of_mem (n โข โD) โฏ }
Equations
- DivisorOn.instSMulInt = { smul := fun (n : โค) (D : DivisorOn U) => DivisorOn.mk_of_mem (n โข โD) โฏ }
Equations
- DivisorOn.instAddCommGroup = Function.Injective.addCommGroup (fun (x : DivisorOn U) => โx) โฏ โฏ โฏ โฏ โฏ โฏ โฏ
Equations
- DivisorOn.instLE = { le := fun (Dโ Dโ : DivisorOn U) => โDโ โค โDโ }
Equations
- DivisorOn.instLT = { lt := fun (Dโ Dโ : DivisorOn U) => โDโ < โDโ }
Equations
- DivisorOn.instMax = { max := fun (Dโ Dโ : DivisorOn U) => { toFun := fun (z : ๐) => Dโ z โ Dโ z, supportWithinDomain' := โฏ, supportDiscreteWithinDomain' := โฏ } }
Equations
- DivisorOn.instMin = { min := fun (Dโ Dโ : DivisorOn U) => { toFun := fun (z : ๐) => Dโ z โ Dโ z, supportWithinDomain' := โฏ, supportDiscreteWithinDomain' := โฏ } }
Equations
- DivisorOn.instLattice = Lattice.mk min โฏ โฏ โฏ
Divisors form an ordered commutative group
Equations
Restriction #
If V
is a subset of U
, then a divisor on U
restricts to a divisor in V
by
setting its values to zero outside of V
.
Equations
Instances For
Restriction as a group morphism
Equations
- DivisorOn.restrictMonoidHom h = { toFun := fun (D : DivisorOn U) => D.restrict h, map_zero' := โฏ, map_add' := โฏ }
Instances For
Restriction as a lattice morphism
Equations
- DivisorOn.restrictLatticeHom h = { toFun := fun (D : DivisorOn U) => D.restrict h, map_sup' := โฏ, map_inf' := โฏ }