File: Mathlib/LinearAlgebra/QuadraticForm/Dual.lean

full_name: LinearMap.dualProd
code: /-- The symmetric bilinear form on `Module.Dual R M × M` defined as
`B (f, x) (g, y) = f y + g x`. -/
@[simps!]
def dualProd : LinearMap.BilinForm R (Module.Dual R M × M) 
goal: LinearMap.BilinForm R (Module.Dual R M × M)

full_name: LinearMap.dualProd_apply_apply
code: /-- The symmetric bilinear form on `Module.Dual R M × M` defined as
`B (f, x) (g, y) = f y + g x`. -/
@[simps!]
def dualProd : LinearMap.BilinForm R (Module.Dual R M × M) 
goal: ∀ (a_1 : Module.Dual R M × M), ((LinearMap.dualProd R M) a) a_1 = a_1.1 a.2 + a.1 a_1.2

full_name: LinearMap.isSymm_dualProd
code: theorem isSymm_dualProd : (dualProd R M).IsSymm 
goal: LinearMap.IsSymm (LinearMap.dualProd R M)

full_name: LinearMap.separatingLeft_dualProd
code: theorem separatingLeft_dualProd :
    (dualProd R M).SeparatingLeft ↔ Function.Injective (Module.Dual.eval R M) 
goal: LinearMap.SeparatingLeft (LinearMap.dualProd R M) ↔ Function.Injective ⇑(Module.Dual.eval R M)

full_name: QuadraticForm.dualProd_apply
code: /-- The quadratic form on `Module.Dual R M × M` defined as `Q (f, x) = f x`. -/
@[simps]
def dualProd : QuadraticForm R (Module.Dual R M × M) 
goal: (QuadraticForm.dualProd R M) p = p.1 p.2

full_name: QuadraticForm.dualProd
code: /-- The quadratic form on `Module.Dual R M × M` defined as `Q (f, x) = f x`. -/
@[simps]
def dualProd : QuadraticForm R (Module.Dual R M × M) 
goal: QuadraticForm R (Module.Dual R M × M)

full_name: LinearMap.dualProd.toQuadraticForm
code: @[simp]
theorem _root_.LinearMap.dualProd.toQuadraticForm :
    (LinearMap.dualProd R M).toQuadraticMap = 2 • dualProd R M 
goal: LinearMap.BilinMap.toQuadraticMap (LinearMap.dualProd R M) = 2 • QuadraticForm.dualProd R M

full_name: QuadraticForm.dualProdIsometry_toFun
code: /-- Any module isomorphism induces a quadratic isomorphism between the corresponding `dual_prod.` -/
@[simps!]
def dualProdIsometry (f : M ≃ₗ[R] N) : (dualProd R M).IsometryEquiv (dualProd R N) 
goal: ∀ (a : Module.Dual R M × M), (QuadraticForm.dualProdIsometry f) a = ((↑f.symm.dualMap).prodCongr ↑f) a

full_name: QuadraticForm.dualProdIsometry_invFun
code: /-- Any module isomorphism induces a quadratic isomorphism between the corresponding `dual_prod.` -/
@[simps!]
def dualProdIsometry (f : M ≃ₗ[R] N) : (dualProd R M).IsometryEquiv (dualProd R N) 
goal: ∀ (a : Module.Dual R N × N), (QuadraticForm.dualProdIsometry f).invFun a = ((↑f.symm.dualMap).prodCongr ↑f).symm a

full_name: QuadraticForm.dualProdIsometry
code: /-- Any module isomorphism induces a quadratic isomorphism between the corresponding `dual_prod.` -/
@[simps!]
def dualProdIsometry (f : M ≃ₗ[R] N) : (dualProd R M).IsometryEquiv (dualProd R N) 
goal: QuadraticMap.IsometryEquiv (QuadraticForm.dualProd R M) (QuadraticForm.dualProd R N)

full_name: QuadraticForm.dualProdProdIsometry
code: /-- `QuadraticForm.dualProd` commutes (isometrically) with `QuadraticForm.prod`. -/
@[simps!]
def dualProdProdIsometry :
    (dualProd R (M × N)).IsometryEquiv ((dualProd R M).prod (dualProd R N)) 
goal: QuadraticMap.IsometryEquiv (QuadraticForm.dualProd R (M × N))
  (QuadraticMap.prod (QuadraticForm.dualProd R M) (QuadraticForm.dualProd R N))

full_name: QuadraticForm.dualProdProdIsometry_invFun
code: /-- `QuadraticForm.dualProd` commutes (isometrically) with `QuadraticForm.prod`. -/
@[simps!]
def dualProdProdIsometry :
    (dualProd R (M × N)).IsometryEquiv ((dualProd R M).prod (dualProd R N)) 
goal: ∀ (a : (Module.Dual R M × M) × Module.Dual R N × N),
  QuadraticForm.dualProdProdIsometry.invFun a =
    ((Module.dualProdDualEquivDual R M N).symm.prod (LinearEquiv.refl R (M × N))).symm ((a.1.1, a.2.1), a.1.2, a.2.2)

full_name: QuadraticForm.dualProdProdIsometry_toFun
code: /-- `QuadraticForm.dualProd` commutes (isometrically) with `QuadraticForm.prod`. -/
@[simps!]
def dualProdProdIsometry :
    (dualProd R (M × N)).IsometryEquiv ((dualProd R M).prod (dualProd R N)) 
goal: ∀ (a : Module.Dual R (M × N) × M × N),
  QuadraticForm.dualProdProdIsometry a = ((a.1 ∘ₗ LinearMap.inl R M N, a.2.1), a.1 ∘ₗ LinearMap.inr R M N, a.2.2)

full_name: QuadraticForm.toDualProd
code: /-- The isometry sending `(Q.prod <| -Q)` to `(QuadraticForm.dualProd R M)`.

This is `σ` from Proposition 4.8, page 84 of
[*Hermitian K-Theory and Geometric Applications*][hyman1973]; though we swap the order of the pairs.
-/
@[simps!]
def toDualProd (Q : QuadraticForm R M) [Invertible (2 : R)] :
    (Q.prod <| -Q) →qᵢ QuadraticForm.dualProd R M 
goal: QuadraticMap.prod Q (-Q) →qᵢ QuadraticForm.dualProd R M

full_name: QuadraticForm.toDualProd_apply
code: /-- The isometry sending `(Q.prod <| -Q)` to `(QuadraticForm.dualProd R M)`.

This is `σ` from Proposition 4.8, page 84 of
[*Hermitian K-Theory and Geometric Applications*][hyman1973]; though we swap the order of the pairs.
-/
@[simps!]
def toDualProd (Q : QuadraticForm R M) [Invertible (2 : R)] :
    (Q.prod <| -Q) →qᵢ QuadraticForm.dualProd R M 
goal: Q.toDualProd i = ((QuadraticMap.associated Q) i.1 + (QuadraticMap.associated Q) i.2, i.1 - i.2)