Root pairings made from bilinear forms #
A common construction of root systems is given by taking the set of all vectors in an integral lattice for which reflection yields an automorphism of the lattice. In this file, we generalize this construction, replacing the ring of integers with an arbitrary commutative ring and the integral lattice with an arbitrary reflexive module equipped with a bilinear form.
Main definitions: #
LinearMap.IsReflective
: Length is a regular value ofR
, and reflection is definable.LinearMap.IsReflective.coroot
: The coroot corresponding to a reflective vector.RootPairing.of_Bilinear
: The root pairing whose roots are reflective vectors.
TODO #
- properties
A vector x
is reflective with respect to a bilinear form if multiplication by its norm is
injective, and for any vector y
, the norm of x
divides twice the inner product of x
and y
.
These conditions are what we need when describing reflection as a map taking y
to
y - 2 • (B x y) / (B x x) • x
.
- regular : IsRegular ((B x) x)
Instances For
The coroot attached to a reflective vector.
Equations
- LinearMap.IsReflective.coroot B hx = { toFun := fun (y : M) => Exists.choose ⋯, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The root pairing given by all reflective vectors for a bilinear form.
Equations
- One or more equations did not get rendered due to their size.