Quadratic form on product and pi types #
Main definitions #
QuadraticForm.prod Q₁ Q₂
: the quadratic form constructed elementwise on a productQuadraticForm.pi Q
: the quadratic form constructed elementwise on a pi type
Main results #
QuadraticForm.Equivalent.prod
,QuadraticForm.Equivalent.pi
: quadratic forms are equivalent if their components are equivalentQuadraticForm.nonneg_prod_iff
,QuadraticForm.nonneg_pi_iff
: quadratic forms are positive- semidefinite if and only if their components are positive-semidefinite.QuadraticForm.posDef_prod_iff
,QuadraticForm.posDef_pi_iff
: quadratic forms are positive- definite if and only if their components are positive-definite.
Implementation notes #
Many of the lemmas in this file could be generalized into results about sums of positive and
non-negative elements, and would generalize to any map Q
where Q 0 = 0
, not just quadratic
forms specifically.
Construct a quadratic form on a product of two modules from the quadratic form on each module.
Equations
- Q₁.prod Q₂ = Q₁.comp (LinearMap.fst R M₁ M₂) + Q₂.comp (LinearMap.snd R M₁ M₂)
Instances For
An isometry between quadratic forms generated by QuadraticForm.prod
can be constructed
from a pair of isometries between the left and right parts.
Equations
- e₁.prod e₂ = { toLinearEquiv := e₁.prod e₂.toLinearEquiv, map_app' := ⋯ }
Instances For
LinearMap.inl
as an isometry.
Equations
- QuadraticMap.Isometry.inl Q₁ Q₂ = { toLinearMap := LinearMap.inl R M₁ M₂, map_app' := ⋯ }
Instances For
LinearMap.inr
as an isometry.
Equations
- QuadraticMap.Isometry.inr Q₁ Q₂ = { toLinearMap := LinearMap.inr R M₁ M₂, map_app' := ⋯ }
Instances For
LinearMap.fst
as an isometry, when the second space has the zero quadratic form.
Equations
- QuadraticMap.Isometry.fst M₂ Q₁ = { toLinearMap := LinearMap.fst R M₁ M₂, map_app' := ⋯ }
Instances For
LinearMap.snd
as an isometry, when the first space has the zero quadratic form.
Equations
- QuadraticMap.Isometry.snd M₁ Q₂ = { toLinearMap := LinearMap.snd R M₁ M₂, map_app' := ⋯ }
Instances For
LinearEquiv.prodComm
is isometric.
Equations
- QuadraticMap.IsometryEquiv.prodComm Q₁ Q₂ = { toLinearEquiv := LinearEquiv.prodComm R M₁ M₂, map_app' := ⋯ }
Instances For
LinearEquiv.prodProdProdComm
is isometric.
Equations
- QuadraticMap.IsometryEquiv.prodProdProdComm Q₁ Q₂ Q₃ Q₄ = { toLinearEquiv := LinearEquiv.prodProdProdComm R M₁ M₂ N₁ N₂, map_app' := ⋯ }
Instances For
If a product is anisotropic then its components must be. The converse is not true.
Construct a quadratic form on a family of modules from the quadratic form on each module.
Equations
- QuadraticMap.pi Q = ∑ i : ι, (Q i).comp (LinearMap.proj i)
Instances For
An isometry between quadratic forms generated by QuadraticMap.pi
can be constructed
from a pair of isometries between the left and right parts.
Equations
- QuadraticMap.IsometryEquiv.pi e = { toLinearEquiv := LinearEquiv.piCongrRight fun (i : ι) => (e i).toLinearEquiv, map_app' := ⋯ }
Instances For
LinearMap.single
as an isometry.
Equations
- QuadraticMap.Isometry.single Q i = { toLinearMap := LinearMap.single i, map_app' := ⋯ }
Instances For
LinearMap.proj
as an isometry, when all but one quadratic form is zero.
Equations
- QuadraticMap.Isometry.proj i Q = { toLinearMap := LinearMap.proj i, map_app' := ⋯ }
Instances For
Note that QuadraticMap.Isometry.id
would not be well-typed as the RHS.
Note that 0 : 0 →qᵢ Q
alone would not be well-typed as the RHS.
If a family is anisotropic then its components must be. The converse is not true.