Scalar extension of integer affine maps #
An affine map of integer coordinate lattices is determined by its value at zero and the images of the standard basis under its linear part. Casting these integer coefficients constructs compatible affine maps over the real numbers and modulo every natural number.
Extend the integer coefficients and offset of an affine lattice map.
Equations
- EGZ.IntegralAffineMap.scalarExtension R A = (EGZ.IntegralAffineMap.linearScalarExtension R A.linear).toAffineMap + AffineMap.const R (Fin m → R) fun (i : Fin n) => ↑(A 0 i)
Instances For
Affine maps on a coordinate module are determined by their values on integer coordinate vectors, over any commutative ring.
An integral-affine map is determined by its integer realization.
Injectivity of an integer linear map survives extension to real scalars.
An injective affine lattice chart has an injective real realization.
Recover the integer linear part of an integral-affine map. Its additivity and integer homogeneity follow from compatibility with its real realization.
Equations
- A.integerLinear = { toFun := fun (z : EGZ.IntCoord m) => A.integer z - A.integer 0, map_add' := ⋯, map_smul' := ⋯ }
Instances For
The stored integer realization is itself an affine map over the integers.
Equations
- A.toIntAffineMap = { toFun := A.integer, linear := A.integerLinear, map_vadd' := ⋯ }