Documentation

LeanPool.ErdosGinzburgZiv.EGZ.Decomposition.ScalarExtension

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.

@[simp]
theorem EGZ.IntCoord.real_zero {n : ℕ} :
real 0 = 0
@[simp]
theorem EGZ.IntCoord.real_add {n : ℕ} (x y : IntCoord n) :
(x + y).real = x.real + y.real
@[simp]
theorem EGZ.IntCoord.real_sub {n : ℕ} (x y : IntCoord n) :
(x - y).real = x.real - y.real
theorem EGZ.IntCoord.real_zsmul {n : ℕ} (c : ℤ) (x : IntCoord n) :
(c • x).real = c • x.real
noncomputable def EGZ.IntegralAffineMap.linearScalarExtension {m n : ℕ} (R : Type u_1) [CommRing R] (A : IntCoord m →ₗ[ℤ] IntCoord n) :
(Fin m → R) →ₗ[R] Fin n → R

Extend the integer matrix of a linear map to a commutative ring.

Equations
Instances For
    noncomputable def EGZ.IntegralAffineMap.scalarExtension {m n : ℕ} (R : Type u_1) [CommRing R] (A : IntCoord m →ᵃ[ℤ] IntCoord n) :
    (Fin m → R) →ᵃ[R] Fin n → R

    Extend the integer coefficients and offset of an affine lattice map.

    Equations
    Instances For
      @[simp]
      theorem EGZ.IntegralAffineMap.scalarExtension_apply {m n : ℕ} (R : Type u_1) [CommRing R] (A : IntCoord m →ᵃ[ℤ] IntCoord n) (x : Fin m → R) (i : Fin n) :
      (scalarExtension R A) x i = ∑ j : Fin m, x j * ↑(A.linear (Pi.single j 1) i) + ↑(A 0 i)
      theorem EGZ.IntegralAffineMap.integer_expansion {m n : ℕ} (A : IntCoord m →ᵃ[ℤ] IntCoord n) (z : IntCoord m) (i : Fin n) :
      A z i = ∑ j : Fin m, z j * A.linear (Pi.single j 1) i + A 0 i

      Standard-basis expansion of an integer affine map, coordinate by coordinate.

      theorem EGZ.IntegralAffineMap.scalarExtension_intCast {m n : ℕ} (R : Type u_1) [CommRing R] (A : IntCoord m →ᵃ[ℤ] IntCoord n) (z : IntCoord m) :
      ((scalarExtension R A) fun (i : Fin m) => ↑(z i)) = fun (i : Fin n) => ↑(A z i)

      Scalar extension agrees with the integer map on every integer vector.

      theorem EGZ.IntegralAffineMap.affine_ext_intCast {m n : ℕ} (R : Type u_1) [CommRing R] {A B : (Fin m → R) →ᵃ[R] Fin n → R} (h : ∀ (z : IntCoord m), (A fun (i : Fin m) => ↑(z i)) = B fun (i : Fin m) => ↑(z i)) :
      A = B

      Affine maps on a coordinate module are determined by their values on integer coordinate vectors, over any commutative ring.

      Package any integer affine map with its real and modular scalar extensions.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem EGZ.IntegralAffineMap.ext_integer {m n : ℕ} {A B : IntegralAffineMap m n} (h : A.integer = B.integer) :
        A = B

        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.

        The difference from the integer offset realizes the real linear part.

        Recover the integer linear part of an integral-affine map. Its additivity and integer homogeneity follow from compatibility with its real realization.

        Equations
        Instances For

          The stored integer realization is itself an affine map over the integers.

          Equations
          Instances For