File: Mathlib/LinearAlgebra/QuadraticForm/IsometryEquiv.lean

full_name: QuadraticMap.IsometryEquiv
code: /-- 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. -/
-- Porting note(#5171): linter not ported yet @[nolint has_nonempty_instance]
structure IsometryEquiv (Q₁ : QuadraticMap R M₁ N) (Q₂ : QuadraticMap R M₂ N)
    extends M₁ ≃ₗ[R] M₂ where
  map_app' : ∀ m, Q₂ (toFun m) = Q₁ m
goal: Type (max u_5 u_6)

full_name: QuadraticMap.IsometryEquiv.map_app'
code: /-- 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. -/
-- Porting note(#5171): linter not ported yet @[nolint has_nonempty_instance]
structure IsometryEquiv (Q₁ : QuadraticMap R M₁ N) (Q₂ : QuadraticMap R M₂ N)
    extends M₁ ≃ₗ[R] M₂ where
  map_app' : ∀ m, Q₂ (toFun m) = Q₁ m
goal: Q₂ ((↑self.toLinearEquiv).toFun m) = Q₁ m

full_name: QuadraticMap.Equivalent
code: /-- 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. -/
def Equivalent (Q₁ : QuadraticMap R M₁ N) (Q₂ : QuadraticMap R M₂ N) : Prop 
goal: Prop

full_name: QuadraticMap.IsometryEquiv.instEquivLike
code: instance : EquivLike (Q₁.IsometryEquiv Q₂) M₁ M₂ 
goal: EquivLike (Q₁.IsometryEquiv Q₂) M₁ M₂

full_name: QuadraticMap.IsometryEquiv.instLinearEquivClass
code: instance : LinearEquivClass (Q₁.IsometryEquiv Q₂) R M₁ M₂ 
goal: LinearEquivClass (Q₁.IsometryEquiv Q₂) R M₁ M₂

full_name: QuadraticMap.IsometryEquiv.instCoeOutLinearEquivId
code: instance : CoeOut (Q₁.IsometryEquiv Q₂) (M₁ ≃ₗ[R] M₂) 
goal: CoeOut (Q₁.IsometryEquiv Q₂) (M₁ ≃ₗ[R] M₂)

full_name: QuadraticMap.IsometryEquiv.coe_toLinearEquiv
code: @[simp]
theorem coe_toLinearEquiv (f : Q₁.IsometryEquiv Q₂) : ⇑(f : M₁ ≃ₗ[R] M₂) = f 
goal: ⇑f.toLinearEquiv = ⇑f

full_name: QuadraticMap.IsometryEquiv.map_app
code: @[simp]
theorem map_app (f : Q₁.IsometryEquiv Q₂) (m : M₁) : Q₂ (f m) = Q₁ m 
goal: Q₂ (f m) = Q₁ m

full_name: QuadraticMap.IsometryEquiv.refl
code: /-- The identity isometric equivalence between a quadratic form and itself. -/
@[refl]
def refl (Q : QuadraticMap R M N) : Q.IsometryEquiv Q 
goal: Q.IsometryEquiv Q

full_name: QuadraticMap.IsometryEquiv.symm
code: /-- The inverse isometric equivalence of an isometric equivalence between two quadratic forms. -/
@[symm]
def symm (f : Q₁.IsometryEquiv Q₂) : Q₂.IsometryEquiv Q₁ 
goal: Q₂.IsometryEquiv Q₁

full_name: QuadraticMap.IsometryEquiv.trans
code: /-- The composition of two isometric equivalences between quadratic forms. -/
@[trans]
def trans (f : Q₁.IsometryEquiv Q₂) (g : Q₂.IsometryEquiv Q₃) : Q₁.IsometryEquiv Q₃ 
goal: Q₁.IsometryEquiv Q₃

full_name: QuadraticMap.IsometryEquiv.toIsometry
code: /-- Isometric equivalences are isometric maps -/
@[simps]
def toIsometry (g : Q₁.IsometryEquiv Q₂) : Q₁ →qᵢ Q₂ 
goal: Q₁ →qᵢ Q₂

full_name: QuadraticMap.IsometryEquiv.toIsometry_apply
code: /-- Isometric equivalences are isometric maps -/
@[simps]
def toIsometry (g : Q₁.IsometryEquiv Q₂) : Q₁ →qᵢ Q₂ 
goal: g.toIsometry x = g x

full_name: QuadraticMap.Equivalent.refl
code: @[refl]
theorem refl (Q : QuadraticMap R M N) : Q.Equivalent Q 
goal: Q.Equivalent Q

full_name: QuadraticMap.Equivalent.symm
code: @[symm]
theorem symm (h : Q₁.Equivalent Q₂) : Q₂.Equivalent Q₁ 
goal: Q₂.Equivalent Q₁

full_name: QuadraticMap.Equivalent.trans
code: @[trans]
theorem trans (h : Q₁.Equivalent Q₂) (h' : Q₂.Equivalent Q₃) : Q₁.Equivalent Q₃ 
goal: Q₁.Equivalent Q₃

full_name: QuadraticMap.isometryEquivOfCompLinearEquiv
code: /-- A quadratic form composed with a `LinearEquiv` is isometric to itself. -/
def isometryEquivOfCompLinearEquiv (Q : QuadraticMap R M N) (f : M₁ ≃ₗ[R] M) :
    Q.IsometryEquiv (Q.comp (f : M₁ →ₗ[R] M)) 
goal: Q.IsometryEquiv (Q.comp ↑f)

full_name: QuadraticMap.isometryEquivBasisRepr
code: /-- A quadratic form is isometrically equivalent to its bases representations. -/
noncomputable def isometryEquivBasisRepr (Q : QuadraticMap R M N) (v : Basis ι R M) :
    IsometryEquiv Q (Q.basisRepr v) 
goal: Q.IsometryEquiv (Q.basisRepr v)

full_name: QuadraticForm.isometryEquivWeightedSumSquares
code: /-- Given an orthogonal basis, a quadratic form is isometrically equivalent with a weighted sum of
squares. -/
noncomputable def isometryEquivWeightedSumSquares (Q : QuadraticForm K V)
    (v : Basis (Fin (FiniteDimensional.finrank K V)) K V)
    (hv₁ : (associated (R := K) Q).IsOrthoᵢ v) :
    Q.IsometryEquiv (weightedSumSquares K fun i => Q (v i)) 
goal: QuadraticMap.IsometryEquiv Q (QuadraticMap.weightedSumSquares K fun i => Q (v i))

full_name: QuadraticForm.equivalent_weightedSumSquares
code: theorem equivalent_weightedSumSquares (Q : QuadraticForm K V) :
    ∃ w : Fin (FiniteDimensional.finrank K V) → K, Equivalent Q (weightedSumSquares K w) 
goal: ∃ w, QuadraticMap.Equivalent Q (QuadraticMap.weightedSumSquares K w)

full_name: QuadraticForm.equivalent_weightedSumSquares_units_of_nondegenerate'
code: theorem equivalent_weightedSumSquares_units_of_nondegenerate' (Q : QuadraticForm K V)
    (hQ : (associated (R := K) Q).SeparatingLeft) :
    ∃ w : Fin (FiniteDimensional.finrank K V) → Kˣ, Equivalent Q (weightedSumSquares K w) 
goal: ∃ w, QuadraticMap.Equivalent Q (QuadraticMap.weightedSumSquares K w)