Documentation

LeanPool.CompositionAlgebrasOverRings.QuadraticForm.BaseChangeProjective

Base change of quadratic maps along R → A, without inverting 2 #

Mathlib's QuadraticForm.baseChange is built as a special case of the tensor product of two quadratic forms, which is constructed by passing to associated symmetric bilinear forms and therefore carries an Invertible (2 : R) hypothesis. That hypothesis is an artefact of the construction: base change of a quadratic form exists over an arbitrary commutative ring. Uniqueness is already unconditional in mathlib (baseChange_ext); only existence needs work.

This file supplies the missing existence, for M a finitely generated projective R-module, by the classical device of choosing a (not necessarily symmetric) bilinear representative B with B x x = Q x, base changing B (which is unconditional, LinearMap.BilinMap.baseChange) and taking the diagonal. The choice of B is non-canonical, but the result is independent of it by baseChange_ext.

Main definitions #

Main results #

Implementation notes #

A bilinear representative exists on every free module: that is mathlib's LinearMap.BilinMap.toQuadraticMap_surjective. A finitely generated projective module is a retract of some Fin n → R, and representatives transport along retracts (QuadraticMap.HasBilinRepr.of_retract), which gives the projective case.

QuadraticForm and LinearMap.BilinForm are abbrevs for QuadraticMap R M R and LinearMap.BilinMap R M R, so dot notation such as Q.baseChange A can resolve ambiguously against mathlib's QuadraticForm.baseChange. Names are therefore fully qualified throughout, and the QuadraticForm-valued construction is given a distinct name.

TODO #

References #

Bilinear representatives #

def QuadraticMap.HasBilinRepr (R : Type uR) (M : Type uM) (N : Type uN) [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] :

HasBilinRepr R M N says that every quadratic map Q : M → N is the diagonal of some bilinear map, i.e. LinearMap.BilinMap.toQuadraticMap is surjective.

Beware the clash of terminology with QuadraticMap.exists_companion, whose companion B satisfies Q (x + y) = Q x + Q y + B x y (so that B x x = 2 • Q x). Here we ask instead for B x x = Q x, which is a genuine extra condition in characteristic two.

Equations
Instances For
    theorem QuadraticMap.apply_self_of_toQuadraticMap_eq {R : Type uR} {M : Type uM} {N : Type uN} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {B : LinearMap.BilinMap R M N} {Q : QuadraticMap R M N} (hB : B.toQuadraticMap = Q) (x : M) :
    (B x) x = Q x
    theorem QuadraticMap.HasBilinRepr.of_retract {R : Type uR} {M : Type uM} {N : Type uN} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] {P : Type u_1} [AddCommGroup P] [Module R P] (h : HasBilinRepr R P N) (i : M →ₗ[R] P) (r : P →ₗ[R] M) (hir : r ∘ₗ i = LinearMap.id) :

    Transport along a retract: if M is a direct summand of P (witnessed by r ∘ₗ i = id) and every quadratic map on P has a bilinear representative, then so does every quadratic map on M.

    Existence of bilinear representatives over finitely generated projective modules. Every finitely generated projective module is a retract of some Fin n → R, which is free, and on a free module every quadratic map has a bilinear representative (LinearMap.BilinMap.toQuadraticMap_surjective).

    theorem QuadraticMap.exists_bilinMap {R : Type uR} {M : Type uM} {N : Type uN} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticMap R M N) :
    ∃ (B : LinearMap.BilinMap R M N), B.toQuadraticMap = Q

    For M finitely generated projective, LinearMap.BilinMap.toQuadraticMap is surjective: every quadratic map is x ↦ B x x for some, generally non-symmetric, bilinear B.

    This is the characteristic-free replacement for QuadraticMap.associated, which requires 2 to be invertible in order to pick out the symmetric representative.

    noncomputable def QuadraticMap.bilinRepr {R : Type uR} {M : Type uM} {N : Type uN} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticMap R M N) :

    A choice of bilinear representative of Q. Non-canonical: only its diagonal is determined (see toQuadraticMap_bilinRepr). Every construction below is proved to be independent of this choice.

    Equations
    Instances For
      @[simp]
      @[simp]
      theorem QuadraticMap.bilinRepr_apply_self {R : Type uR} {M : Type uM} {N : Type uN} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticMap R M N) (x : M) :
      (Q.bilinRepr x) x = Q x

      An extensionality lemma for bilinear maps on a base changed module #

      theorem QuadraticMap.bilin_ext_of_tmul {R : Type uR} {A : Type uA} {M : Type uM} [CommRing R] [CommRing A] [Algebra R A] [AddCommGroup M] [Module R M] {N₁ : Type u_1} [AddCommGroup N₁] [Module A N₁] ⦃B₁ B₂ : LinearMap.BilinMap A (TensorProduct R A M) N₁⦄ (h : ∀ (m m' : M), (B₁ (1 ⊗ₜ[R] m)) (1 ⊗ₜ[R] m') = (B₂ (1 ⊗ₜ[R] m)) (1 ⊗ₜ[R] m')) :
      B₁ = B₂

      Bilinear maps on A ⊗[R] M are determined by their values on pure tensors 1 ⊗ₜ m. Compare baseChange_ext for quadratic maps.

      Base change of quadratic maps #

      noncomputable def QuadraticMap.baseChange {R : Type uR} (A : Type uA) {M : Type uM} {N : Type uN} [CommRing R] [CommRing A] [Algebra R A] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticMap R M N) :

      Base change of a quadratic map along an algebra map R → A, for M a finitely generated projective R-module. No invertibility of 2 is required.

      Concretely this is the unique quadratic map with Q_A (a ⊗ₜ m) = (a * a) ⊗ₜ Q m; uniqueness is baseChange_ext, and independence of the auxiliary choice is baseChange_eq_of_toQuadraticMap_eq.

      Equations
      Instances For
        @[simp]
        theorem QuadraticMap.baseChange_tmul {R : Type uR} {A : Type uA} {M : Type uM} {N : Type uN} [CommRing R] [CommRing A] [Algebra R A] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticMap R M N) (a : A) (m : M) :
        (baseChange A Q) (a ⊗ₜ[R] m) = (a * a) ⊗ₜ[R] Q m

        The base change does not depend on the choice of bilinear representative: any bilinear B with B x x = Q x computes it.

        theorem QuadraticMap.baseChange_eq_iff {R : Type uR} {A : Type uA} {M : Type uM} {N : Type uN} [CommRing R] [CommRing A] [Algebra R A] [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticMap R M N) (Q' : QuadraticMap A (TensorProduct R A M) (TensorProduct R A N)) :
        Q' = baseChange A Q ↔ ∀ (m : M), Q' (1 ⊗ₜ[R] m) = 1 ⊗ₜ[R] Q m

        Characterisation of the base change: it is the unique quadratic map on A ⊗[R] M taking the value (a * a) ⊗ₜ Q m on pure tensors.

        The polar form of the base change is the base change of the polar form. Unlike QuadraticForm.polarBilin_baseChange, this needs no hypothesis on 2.

        Base change of quadratic forms #

        noncomputable def QuadraticForm.baseChangeOfProjective {R : Type uR} (A : Type uA) {M : Type uM} [CommRing R] [CommRing A] [Algebra R A] [AddCommGroup M] [Module R M] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticForm R M) :

        Base change of a quadratic form along R → A, for M finitely generated projective.

        This agrees with mathlib's QuadraticForm.baseChange whenever the latter is defined (baseChangeOfProjective_eq_baseChange) but, unlike it, does not require 2 to be invertible. It is stated separately from QuadraticMap.baseChange so as to land in QuadraticForm A (A ⊗[R] M) rather than QuadraticMap A (A ⊗[R] M) (A ⊗[R] R).

        Equations
        Instances For
          @[simp]
          theorem QuadraticForm.baseChangeOfProjective_tmul {R : Type uR} {A : Type uA} {M : Type uM} [CommRing R] [CommRing A] [Algebra R A] [AddCommGroup M] [Module R M] [Module.Finite R M] [Module.Projective R M] (Q : QuadraticForm R M) (a : A) (m : M) :
          (baseChangeOfProjective A Q) (a ⊗ₜ[R] m) = Q m • (a * a)

          The polar form of the base change is the base change of the polar form, with no hypothesis on 2.

          Base change commutes with scaling. Rescaling Q by a ∈ R and then base changing is the same as base changing and rescaling by the image of a in A. Compared on pure tensors 1 ⊗ₜ m, where both sides give (a * Q m) • 1 = algebraMap a * algebraMap (Q m).

          Base change commutes with pullback along a linear map. For f : P →ₗ[R] M with P and M finitely generated projective, base changing Q ∘ f is the same as pulling back Q_A along f_A.

          Both sides are quadratic forms on A ⊗[R] P, so by baseChange_ext it is enough to compare them on the pure tensors 1 ⊗ₜ p, where both give Q (f p). Note that this holds despite baseChangeOfProjective being built from a chosen bilinear representative: the two sides may well be built from unrelated representatives, but a quadratic form on a base changed module is determined by its values on 1 ⊗ₜ p.

          Base change of an isometry between quadratic forms on finite projective modules.

          Equations
          Instances For

            Transitivity #

            Base change is transitive, in the form that avoids naming the comparison map on the right-hand side: base changing to S and then to T, and reading the result back along T ⊗[S] (S ⊗[R] M) ≃ T ⊗[R] M, gives the direct base change to T.

            Stated this way round because QuadraticMap.baseChange_ext compares two forms on T ⊗[R] M by their values at 1 ⊗ₜ m only, whereas comparing them on T ⊗[S] (S ⊗[R] M) would require knowing them at 1 ⊗ₜ x for every x in S ⊗[R] M — a quadratic condition that does not reduce to pure tensors.

            Base change is transitive, as an isometry T ⊗[S] (S ⊗[R] M) ≃ T ⊗[R] M.

            This is the form the residue-field arguments consume: a predicate on Q.baseChangeOfProjective F for every field F over R can be tested on (Q.baseChangeOfProjective S).baseChangeOfProjective F for every field F over S, since the two forms differ by this isometry.

            Equations
            Instances For

              Anisotropy and localization (GPR Exc. 12.38(b)) #

              GPR Exc. 12.38(b), for quadratic forms. Let L be the localization of R at a multiplicative set S of non-zero-divisors. A quadratic form on a finitely generated projective R-module is anisotropic if and only if its base change to L is; equivalently, it represents zero if and only if its base change does.

              A null vector m ≠ 0 gives the null vector 1 ⊗ m ≠ 0, since a projective module has no S-torsion. Conversely a null vector x of L ⊗[R] M satisfies s • x = 1 ⊗ m for some s ∈ S and m ∈ M, and then Q m maps to s² Q_L(x) = 0.

              GPR Exc. 12.38(b) over the fraction field. A quadratic form on a finitely generated projective module is anisotropic if and only if its base change to the fraction field is.