Isometric equivalences with respect to quadratic forms #

Main definitions #

• QuadraticForm.IsometryEquiv: LinearEquivs which map between two different quadratic forms
• QuadraticForm.Equivalent: propositional version of the above

Main results #

• equivalent_weighted_sum_squares: in finite dimensions, any quadratic form is equivalent to a parametrization of QuadraticForm.weightedSumSquares.
structure QuadraticForm.IsometryEquiv {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] (Q₁ : ) (Q₂ : ) extends :
Type (max u_5 u_6)

An isometric equivalence between two quadratic spaces M₁, Q₁ and M₂, Q₂ over a ring R, is a linear equivalence between M₁ and M₂ that commutes with the quadratic forms.

• toFun : M₁M₂
• map_add' : ∀ (x y : M₁), (self.toLinearEquiv).toFun (x + y) = (self.toLinearEquiv).toFun x + (self.toLinearEquiv).toFun y
• map_smul' : ∀ (m : R) (x : M₁), (self.toLinearEquiv).toFun (m x) = () m (self.toLinearEquiv).toFun x
• invFun : M₂M₁
• left_inv : Function.LeftInverse self.invFun (self.toLinearEquiv).toFun
• right_inv : Function.RightInverse self.invFun (self.toLinearEquiv).toFun
• map_app' : ∀ (m : M₁), Q₂ ((self.toLinearEquiv).toFun m) = Q₁ m
Instances For
theorem QuadraticForm.IsometryEquiv.map_app' {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (self : Q₁.IsometryEquiv Q₂) (m : M₁) :
Q₂ ((self.toLinearEquiv).toFun m) = Q₁ m
def QuadraticForm.Equivalent {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] (Q₁ : ) (Q₂ : ) :

Two quadratic forms over a ring R are equivalent if there exists an isometric equivalence between them: a linear equivalence that transforms one quadratic form into the other.

Equations
• Q₁.Equivalent Q₂ = Nonempty (Q₁.IsometryEquiv Q₂)
Instances For
instance QuadraticForm.IsometryEquiv.instEquivLike {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } :
EquivLike (Q₁.IsometryEquiv Q₂) M₁ M₂
Equations
• One or more equations did not get rendered due to their size.
instance QuadraticForm.IsometryEquiv.instLinearEquivClass {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } :
LinearEquivClass (Q₁.IsometryEquiv Q₂) R M₁ M₂
Equations
• =
instance QuadraticForm.IsometryEquiv.instCoeOutLinearEquivId {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } :
CoeOut (Q₁.IsometryEquiv Q₂) (M₁ ≃ₗ[R] M₂)
Equations
@[simp]
theorem QuadraticForm.IsometryEquiv.coe_toLinearEquiv {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (f : Q₁.IsometryEquiv Q₂) :
f.toLinearEquiv = f
@[simp]
theorem QuadraticForm.IsometryEquiv.map_app {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (f : Q₁.IsometryEquiv Q₂) (m : M₁) :
Q₂ (f m) = Q₁ m
def QuadraticForm.IsometryEquiv.refl {R : Type u_2} {M : Type u_4} [] [] [Module R M] (Q : ) :
Q.IsometryEquiv Q

The identity isometric equivalence between a quadratic form and itself.

Equations
• = let __src := ; { toLinearEquiv := __src, map_app' := }
Instances For
def QuadraticForm.IsometryEquiv.symm {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (f : Q₁.IsometryEquiv Q₂) :
Q₂.IsometryEquiv Q₁

The inverse isometric equivalence of an isometric equivalence between two quadratic forms.

Equations
• f.symm = let __src := f.symm; { toLinearEquiv := __src, map_app' := }
Instances For
def QuadraticForm.IsometryEquiv.trans {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} {M₃ : Type u_7} [] [] [] [] [Module R M₁] [Module R M₂] [Module R M₃] {Q₁ : } {Q₂ : } {Q₃ : } (f : Q₁.IsometryEquiv Q₂) (g : Q₂.IsometryEquiv Q₃) :
Q₁.IsometryEquiv Q₃

The composition of two isometric equivalences between quadratic forms.

Equations
• f.trans g = let __src := f.trans g.toLinearEquiv; { toLinearEquiv := __src, map_app' := }
Instances For
@[simp]
theorem QuadraticForm.IsometryEquiv.toIsometry_apply {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (g : Q₁.IsometryEquiv Q₂) (x : M₁) :
g.toIsometry x = g x
def QuadraticForm.IsometryEquiv.toIsometry {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (g : Q₁.IsometryEquiv Q₂) :
Q₁ →qᵢ Q₂

Isometric equivalences are isometric maps

Equations
• g.toIsometry = let __spread.0 := g; { toFun := fun (x : M₁) => g x, map_add' := , map_smul' := , map_app' := }
Instances For
theorem QuadraticForm.Equivalent.refl {R : Type u_2} {M : Type u_4} [] [] [Module R M] (Q : ) :
Q.Equivalent Q
theorem QuadraticForm.Equivalent.symm {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} [] [] [] [Module R M₁] [Module R M₂] {Q₁ : } {Q₂ : } (h : Q₁.Equivalent Q₂) :
Q₂.Equivalent Q₁
theorem QuadraticForm.Equivalent.trans {R : Type u_2} {M₁ : Type u_5} {M₂ : Type u_6} {M₃ : Type u_7} [] [] [] [] [Module R M₁] [Module R M₂] [Module R M₃] {Q₁ : } {Q₂ : } {Q₃ : } (h : Q₁.Equivalent Q₂) (h' : Q₂.Equivalent Q₃) :
Q₁.Equivalent Q₃
def QuadraticForm.isometryEquivOfCompLinearEquiv {R : Type u_2} {M : Type u_4} {M₁ : Type u_5} [] [] [] [Module R M] [Module R M₁] (Q : ) (f : M₁ ≃ₗ[R] M) :
Q.IsometryEquiv (Q.comp f)

A quadratic form composed with a LinearEquiv is isometric to itself.

Equations
• Q.isometryEquivOfCompLinearEquiv f = let __src := f.symm; { toLinearEquiv := __src, map_app' := }
Instances For
noncomputable def QuadraticForm.isometryEquivBasisRepr {ι : Type u_1} {R : Type u_2} {M : Type u_4} [] [] [Module R M] [] (Q : ) (v : Basis ι R M) :
Q.IsometryEquiv (Q.basisRepr v)

A quadratic form is isometrically equivalent to its bases representations.

Equations
• Q.isometryEquivBasisRepr v = Q.isometryEquivOfCompLinearEquiv v.equivFun.symm
Instances For
noncomputable def QuadraticForm.isometryEquivWeightedSumSquares {K : Type u_3} {V : Type u_8} [] [] [] [Module K V] (Q : ) (v : Basis () K V) (hv₁ : LinearMap.IsOrthoᵢ (QuadraticForm.associated Q) v) :
Q.IsometryEquiv (QuadraticForm.weightedSumSquares K fun (i : ) => Q (v i))

Given an orthogonal basis, a quadratic form is isometrically equivalent with a weighted sum of squares.

Equations
• Q.isometryEquivWeightedSumSquares v hv₁ = let iso := Q.isometryEquivBasisRepr v; { toLinearEquiv := iso.toLinearEquiv, map_app' := }
Instances For
theorem QuadraticForm.equivalent_weightedSumSquares {K : Type u_3} {V : Type u_8} [] [] [] [Module K V] [] (Q : ) :
∃ (w : K), Q.Equivalent
theorem QuadraticForm.equivalent_weightedSumSquares_units_of_nondegenerate' {K : Type u_3} {V : Type u_8} [] [] [] [Module K V] [] (Q : ) (hQ : LinearMap.SeparatingLeft (QuadraticForm.associated Q)) :
∃ (w : Kˣ), Q.Equivalent