awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
N : Type u_5
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
inst_3 : AddCommGroup N
inst_4 : Module R N
Q : QuadraticMap R M N
inst_5 : Invertible (α := R) 2
x y : M
simp_rw :
  LinearMap.IsOrtho.{u_3, u_3, u_3, u_5, u_4, u_4} (R := R) (R₁ := R) (R₂ := R) (M := N) (I₁ := RingHom.id R) (I₂ :=
      RingHom.id R) ((associated : (a : QuadraticMap R M N) → BilinMap R M N) Q) x y ↔
    (Q : (a : M) → N) (x + y) = HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)
simp_rw₁ :
  Eq.{u_5 + 1} (α := N)
      ((((((associated : (a : QuadraticMap R M N) → BilinMap R M N) Q : BilinMap R M N) : (a : M) → M →ₗ[R] N) x :
              M →ₗ[R] N) :
            (a : M) → N)
          y :
        N)
      (0 : N) ↔
    (Q : (a : M) → N) (x + y) = HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)
simp_rw₂ :
  HSMul.hSMul (α := Module.End R N) (@Invertible.invOf _ Module.End.instMul Module.End.instOne 2 _)
        (HSub.hSub (β := N) (HSub.hSub (α := N) (β := N) ((Q : (a : M) → N) (x + y) : N) ((Q : (a : M) → N) x : N))
          ((Q : (a : M) → N) y : N)) =
      0 ↔
    (Q : (a : M) → N) (x + y) = HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)
simp_rw₃ :
  HSub.hSub (β := N) (HSub.hSub (α := N) (β := N) ((Q : (a : M) → N) (x + y) : N) ((Q : (a : M) → N) x : N))
        ((Q : (a : M) → N) y : N) =
      HSMul.hSMul (α := Module.End R N) (β := N) 2 0 ↔
    (Q : (a : M) → N) (x + y) = HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)
simp_rw₄ :
  HSub.hSub (β := N) (HSub.hSub (α := N) (β := N) ((Q : (a : M) → N) (x + y) : N) ((Q : (a : M) → N) x : N))
        ((Q : (a : M) → N) y : N) =
      0 ↔
    (Q : (a : M) → N) (x + y) = HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)
simp_rw₅ :
  HSub.hSub (α := N) ((Q : (a : M) → N) (x + y) : N)
        (HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)) =
      0 ↔
    (Q : (a : M) → N) (x + y) = HAdd.hAdd (α := N) (β := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) y : N)
⊢ LinearMap.IsOrtho.{u_3, u_3, u_3, u_5, u_4, u_4} (R := R) (R₁ := R) (R₂ := R) (M := N) (I₁ := RingHom.id R) (I₂ :=
      RingHom.id R) ((associated : (a : QuadraticMap R M N) → BilinMap R M N) Q) x y ↔
    Q.IsOrtho x y

Tactic:
simp_rw [isOrtho_def, LinearMap.isOrtho_def, associated_apply, invOf_smul_eq_iff,
    smul_zero, sub_sub, sub_eq_zero]

Premises used: sub_eq_zero, QuadraticMap.associated_apply, QuadraticMap.isOrtho_def, smul_zero, sub_sub, invOf_smul_eq_iff, LinearMap.isOrtho_def
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
N : Type u_5
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
Q : QuadraticMap R M N
⊢ ¬Q.Anisotropic ↔ ∃ (x : M), x ≠ 0 ∧ Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)

Tactic:
simp only [Anisotropic, not_forall, exists_prop, and_comm]

Premises used: QuadraticMap.Anisotropic, and_comm, exists_prop, Classical.not_forall
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
N : Type u_5
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : AddCommMonoid N
inst_3 : Module R M
inst_4 : Module R N
Q : QuadraticMap R M N
h : Q.Anisotropic
x : M
⊢ Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N) ↔ x = 0

Tactic:
⟨h x, fun h => h.symm ▸ map_zero Q⟩

Premises used: Eq.rec, map_zero, Iff.intro, Eq.symm
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
inst_3 : Invertible (α := R) 2
Q : QuadraticMap R M R
hB : Q.Anisotropic
x : M
hx :
  ∀ (y : M),
    Eq.{u_3 + 1} (α := R)
      (((((((associated'.{u_3, u_4, u_3} (R := R) (M := M) (N := R) : QuadraticMap R M R →ₗ[ℤ] BilinMap R M R) :
                        (a : QuadraticMap R M R) → BilinMap R M R)
                      Q :
                    BilinMap R M R) :
                  (a : M) → M →ₗ[R] R)
                x :
              M →ₗ[R] R) :
            (a : M) → R)
          y :
        R)
      (0 : R)
rw :
  Eq.{u_3 + 1} (α := R) ((Q : (a : M) → R) x : R)
    (((((((associated'.{u_3, u_4, u_3} (R := R) (M := M) (N := R) : QuadraticMap R M R →ₗ[ℤ] BilinMap R M R) :
                      (a : QuadraticMap R M R) → BilinMap R M R)
                    Q :
                  BilinMap R M R) :
                (a : M) → M →ₗ[R] R)
              x :
            M →ₗ[R] R) :
          (a : M) → R)
        x :
      R)
⊢ Eq.{u_3 + 1} (α := R) ((Q : (a : M) → R) x : R) (0 : R)

Tactic:
rw [← hx x]
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
inst_3 : Invertible (α := R) 2
Q : QuadraticMap R M R
hB : Q.Anisotropic
x : M
hx :
  ∀ (y : M),
    Eq.{u_3 + 1} (α := R)
      (((((((associated'.{u_3, u_4, u_3} (R := R) (M := M) (N := R) : QuadraticMap R M R →ₗ[ℤ] BilinMap R M R) :
                        (a : QuadraticMap R M R) → BilinMap R M R)
                      Q :
                    BilinMap R M R) :
                  (a : M) → M →ₗ[R] R)
                x :
              M →ₗ[R] R) :
            (a : M) → R)
          y :
        R)
      (0 : R)
⊢ Eq.{u_3 + 1} (α := R) ((Q : (a : M) → R) x : R)
    (((((((associated'.{u_3, u_4, u_3} (R := R) (M := M) (N := R) : QuadraticMap R M R →ₗ[ℤ] BilinMap R M R) :
                      (a : QuadraticMap R M R) → BilinMap R M R)
                    Q :
                  BilinMap R M R) :
                (a : M) → M →ₗ[R] R)
              x :
            M →ₗ[R] R) :
          (a : M) → R)
        x :
      R)

Tactic:
(associated_eq_self_apply _ _ x).symm

Premises used: QuadraticMap.associated_eq_self_apply, Eq.symm
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
inst_3 : Invertible (α := R) 2
Q : QuadraticMap R M R
hB : Q.Anisotropic
x : M
hx :
  ∀ (y : M),
    Eq.{u_3 + 1} (α := R)
      (((((((associated'.{u_3, u_4, u_3} (R := R) (M := M) (N := R) : QuadraticMap R M R →ₗ[ℤ] BilinMap R M R) :
                        (a : QuadraticMap R M R) → BilinMap R M R)
                      Q :
                    BilinMap R M R) :
                  (a : M) → M →ₗ[R] R)
                x :
              M →ₗ[R] R) :
            (a : M) → R)
          y :
        R)
      (0 : R)
⊢ Eq.{u_3 + 1} (α := R) ((Q : (a : M) → R) x : R)
    (((((((associated'.{u_3, u_4, u_3} (R := R) (M := M) (N := R) : QuadraticMap R M R →ₗ[ℤ] BilinMap R M R) :
                      (a : QuadraticMap R M R) → BilinMap R M R)
                    Q :
                  BilinMap R M R) :
                (a : M) → M →ₗ[R] R)
              x :
            M →ₗ[R] R) :
          (a : M) → R)
        x :
      R)

Tactic:
exact (associated_eq_self_apply _ _ x).symm

Premises used: QuadraticMap.associated_eq_self_apply, Eq.symm
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
inst : AddCommMonoid M
inst_1 : PartialOrder N
inst_2 : AddCommMonoid N
R : Type u_8
inst_3 : CommSemiring R
inst_4 : PartialOrder R
inst_5 : Module R M
inst_6 : Module R N
inst_7 : PosSMulStrictMono R N
Q : QuadraticMap R M N
h : Q.PosDef
a : R
a_pos : 0 < a
⊢ (a • Q).PosDef

Tactic:
fun x hx => smul_pos a_pos (h x hx)

Premises used: QuadraticMap.PosDef, smul_pos
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
⊢ LE.le.{u_5} (α := N) (0 : N) ((Q : (a : M) → N) x : N)

Tactic:
(eq_or_ne x 0).elim (fun h => h.symm ▸ (map_zero Q).symm.le) fun h => (hQ _ h).le

Premises used: Eq.rec, map_zero, LT.lt.le, Eq.le, eq_or_ne, Or.elim, OfNat.ofNat, Eq.symm
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
hQx : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
hx : ¬x = 0
⊢ LT.lt.{u_5} (α := N) (0 : N) ((Q : (a : M) → N) x : N)

Tactic:
have := hQ _ hx
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
hQx : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
hx : ¬x = 0
this : LT.lt.{u_5} (α := N) (0 : N) ((Q : (a : M) → N) x : N)
⊢ LT.lt.{u_5} (α := N) 0 0

Tactic:
rw [hQx] at this
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
hQx : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
hx : ¬x = 0
this : LT.lt.{u_5} (α := N) 0 0
⊢ LT.lt.{u_5} (α := N) 0 0

Tactic:
this
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
hQx : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
hx : ¬x = 0
this : LT.lt.{u_5} (α := N) 0 0
⊢ LT.lt.{u_5} (α := N) 0 0

Tactic:
exact this
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
h : x = 0
⊢ LE.le.{u_5} (α := N) ((Q : (a : M) → N) x : N) (0 : N)

Tactic:
simp [h]
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
refine : ∀ (h : LE.le.{u_5} (α := N) ((Q : (a : M) → N) x : N) (0 : N)), x = 0
⊢ LE.le.{u_5} (α := N) ((Q : (a : M) → N) x : N) (0 : N) ↔ x = 0

Tactic:
refine ⟨fun h ↦ ?_, fun h ↦ by simp [h]⟩
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
h : LE.le.{u_5} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
⊢ Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)

Tactic:
have : Q x = 0 := le_antisymm h (hQ.nonneg x)
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
hQ : Q.PosDef
x : M
h : LE.le.{u_5} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
this : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
rwa : x = x
x₁ : M
a : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
rwa₁ : x = x
x₂ : M
a₁ a₂ a₃ : Eq.{u_5 + 1} (α := N) ((Q : (a : M) → N) x : N) (0 : N)
⊢ x = 0

Tactic:
rwa [← hQ.anisotropic]

Premises used: QuadraticMap.PosDef.anisotropic
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
h : ∀ (x : M), LE.le.{u_5} (α := N) (0 : N) ((Q : (a : M) → N) x : N)
h0 : Q.Anisotropic
⊢ Q.PosDef

Tactic:
fun x hx => lt_of_le_of_ne (h x) (Ne.symm fun hQx => hx <| h0 _ hQx)

Premises used: Ne.symm, QuadraticMap.PosDef, lt_of_le_of_ne
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
Q : QuadraticMap R₂ M N
⊢ Q.PosDef ↔ (∀ (x : M), LE.le.{u_5} (α := N) (0 : N) ((Q : (a : M) → N) x : N)) ∧ Q.Anisotropic

Tactic:
⟨fun h => ⟨h.nonneg, h.anisotropic⟩, fun ⟨n, a⟩ => posDef_of_nonneg n a⟩

Premises used: QuadraticMap.PosDef, QuadraticMap.posDef_of_nonneg, QuadraticMap.PosDef.nonneg, QuadraticMap.PosDef.anisotropic, _private.0.QuadraticMap.posDef_iff_nonneg.match_1, And.intro, Iff.intro
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
N : Type u_5
R₂ : Type u
inst : CommSemiring R₂
inst_1 : AddCommMonoid M
inst_2 : Module R₂ M
inst_3 : PartialOrder N
inst_4 : AddCommMonoid N
inst_5 : Module R₂ N
inst_6 : AddLeftStrictMono N
Q Q' : QuadraticMap R₂ M N
hQ : Q.PosDef
hQ' : Q'.PosDef
⊢ (Q + Q').PosDef

Tactic:
fun x hx => add_pos (hQ x hx) (hQ' x hx)

Premises used: add_pos, QuadraticMap.PosDef
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
M : Type u_4
A : Type u_7
inst : AddCommMonoid M
R : Type u_9
inst_1 : CommSemiring R
inst_2 : Module R M
inst_3 : Semiring A
inst_4 : LinearOrder A
inst_5 : IsStrictOrderedRing A
inst_6 : ExistsAddOfLE A
inst_7 : Module R A
inst_8 : SMulCommClass R A A
inst_9 : IsScalarTower R A A
f : M →ₗ[R] A
hf : f.ker = ⊥
⊢ (linMulLin f f).PosDef

Tactic:
fun _x hx => mul_self_pos.2 fun h => hx <| LinearMap.ker_eq_bot'.mp hf _ h

Premises used: Iff.mpr, QuadraticMap.PosDef, LinearMap.ker_eq_bot', mul_self_pos, Iff.mp
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
a : R
Q : QuadraticForm R (n → R)
⊢ (a • Q).toMatrix' = a • Q.toMatrix'

Tactic:
simp [toMatrix']

Premises used: QuadraticForm.toMatrix'
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
Q : QuadraticForm R (n → R)
a : ∀ (i j : n), Q.toMatrix'.transpose i j = Q.toMatrix' i j
⊢ Q.toMatrix'.IsSymm

Tactic:
ext i j
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
m : Type w
inst_4 : DecidableEq m
inst_5 : Fintype m
Q : QuadraticForm R (m → R)
f : (n → R) →ₗ[R] m → R
⊢ toMatrix' (QuadraticMap.comp Q f) =
    HMul.hMul (β := Matrix m n R) (((LinearMap.toMatrix' : (a : (n → R) →ₗ[R] m → R) → Matrix m n R) f)ᵀ * Q.toMatrix')
      ((LinearMap.toMatrix' : (a : (n → R) →ₗ[R] m → R) → Matrix m n R) f : Matrix m n R)

Tactic:
simp only [QuadraticMap.associated_comp, LinearMap.toMatrix₂'_compl₁₂, toMatrix']

Premises used: LinearMap.toMatrix₂'_compl₁₂, QuadraticForm.toMatrix', QuadraticMap.associated_comp
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
Q : QuadraticForm R (n → R)
⊢ Eq (α := Matrix n n R)
    ((LinearMap.toMatrix₂ (Pi.basisFun R n) (Pi.basisFun R n) : (a : (n → R) →ₗ[R] (n → R) →ₗ[R] R) → Matrix n n R)
        (((QuadraticMap.associated (R := R) (M := n → R) (N := R) :
              QuadraticMap R (n → R) R →ₗ[R] BilinMap R (n → R) R) :
            (a : QuadraticMap R (n → R) R) → BilinMap R (n → R) R)
          Q) :
      Matrix n n R)
    (((LinearMap.toMatrix₂' R : ((n → R) →ₗ[R] (n → R) →ₗ[R] R) ≃ₗ[R] Matrix n n R) :
          (a : (n → R) →ₗ[R] (n → R) →ₗ[R] R) → Matrix n n R)
        (((QuadraticMap.associated (R := R) (M := n → R) (N := R) :
              QuadraticMap R (n → R) R →ₗ[R] BilinMap R (n → R) R) :
            (a : QuadraticMap R (n → R) R) → BilinMap R (n → R) R)
          Q) :
      Matrix n n R)

Tactic:
LinearEquiv.congr_arg rfl

Premises used: Function.update, Pi.single, dite, LinearEquiv.congr_arg, rfl
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
Q : QuadraticForm R (n → R)
⊢ Eq (α := Matrix n n R)
    ((LinearMap.toMatrix₂ (Pi.basisFun R n) (Pi.basisFun R n) : (a : (n → R) →ₗ[R] (n → R) →ₗ[R] R) → Matrix n n R)
        (((QuadraticMap.associated (R := R) (M := n → R) (N := R) :
              QuadraticMap R (n → R) R →ₗ[R] BilinMap R (n → R) R) :
            (a : QuadraticMap R (n → R) R) → BilinMap R (n → R) R)
          Q) :
      Matrix n n R)
    (((LinearMap.toMatrix₂' R : ((n → R) →ₗ[R] (n → R) →ₗ[R] R) ≃ₗ[R] Matrix n n R) :
          (a : (n → R) →ₗ[R] (n → R) →ₗ[R] R) → Matrix n n R)
        (((QuadraticMap.associated (R := R) (M := n → R) (N := R) :
              QuadraticMap R (n → R) R →ₗ[R] BilinMap R (n → R) R) :
            (a : QuadraticMap R (n → R) R) → BilinMap R (n → R) R)
          Q) :
      Matrix n n R)

Tactic:
exact LinearEquiv.congr_arg rfl

Premises used: LinearEquiv.congr_arg, rfl
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
N : Type u_5
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
inst_4 : AddCommGroup N
inst_5 : Module R N
b : Basis n R N
a : R
Q : QuadraticForm R N
⊢ toMatrix b (a • Q) = a • toMatrix b Q

Tactic:
simp [toMatrix]

Premises used: QuadraticForm.toMatrix
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
N : Type u_5
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
inst_4 : AddCommGroup N
inst_5 : Module R N
b : Basis n R N
Q : QuadraticForm R N
a : ∀ (i j : n), (toMatrix b Q).transpose i j = toMatrix b Q i j
⊢ (toMatrix b Q).IsSymm

Tactic:
ext i j
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
N : Type u_5
P : Type u_6
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
inst_4 : AddCommGroup N
inst_5 : Module R N
b : Basis n R N
m : Type w
inst_6 : DecidableEq m
inst_7 : Fintype m
inst_8 : AddCommGroup P
inst_9 : Module R P
b' : Basis m R P
Q : QuadraticForm R P
f : N →ₗ[R] P
⊢ toMatrix b (QuadraticMap.comp Q f) =
    HMul.hMul (β := Matrix m n R) (((LinearMap.toMatrix b b' : (a : N →ₗ[R] P) → Matrix m n R) f)ᵀ * toMatrix b' Q)
      ((LinearMap.toMatrix b b' : (a : N →ₗ[R] P) → Matrix m n R) f : Matrix m n R)

Tactic:
simp only [QuadraticMap.associated_comp, LinearMap.toMatrix₂_compl₁₂ b' b', toMatrix]

Premises used: QuadraticForm.toMatrix, LinearMap.toMatrix₂_compl₁₂, QuadraticMap.associated_comp
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
Q : QuadraticForm R (n → R)
a : R
⊢ (a • Q).discr' = a ^ Fintype.card n * Q.discr'

Tactic:
simp [discr', toMatrix'_smul]

Premises used: QuadraticForm.discr', QuadraticForm.toMatrix'_smul
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
Q : QuadraticForm R (n → R)
f : (n → R) →ₗ[R] n → R
⊢ discr' (QuadraticMap.comp Q f) =
    HMul.hMul (α := R)
        (Matrix.det.{u_3, w} (n := n) ((LinearMap.toMatrix' : (a : (n → R) →ₗ[R] n → R) → Matrix n n R) f))
        (Matrix.det.{u_3, w} (n := n) ((LinearMap.toMatrix' : (a : (n → R) →ₗ[R] n → R) → Matrix n n R) f)) *
      Q.discr'

Tactic:
simp [mul_left_comm, toMatrix'_comp, mul_comm, discr']

Premises used: QuadraticForm.discr', mul_left_comm, QuadraticForm.toMatrix'_comp, mul_comm
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
N : Type u_5
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
inst_4 : AddCommGroup N
inst_5 : Module R N
b : Basis n R N
Q : QuadraticForm R N
a : R
⊢ discr b (a • Q) = a ^ Fintype.card n * discr b Q

Tactic:
simp [discr, toMatrix_smul]

Premises used: QuadraticForm.discr, QuadraticForm.toMatrix_smul
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
N : Type u_5
P : Type u_6
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
inst_4 : AddCommGroup N
inst_5 : Module R N
b : Basis n R N
inst_6 : AddCommGroup P
inst_7 : Module R P
b' : Basis n R P
Q : QuadraticForm R P
f : N →ₗ[R] P
⊢ discr b (QuadraticMap.comp Q f) =
    HMul.hMul (α := R) (Matrix.det.{u_3, w} (n := n) ((LinearMap.toMatrix b b' : (a : N →ₗ[R] P) → Matrix n n R) f))
        (Matrix.det.{u_3, w} (n := n) ((LinearMap.toMatrix b b' : (a : N →ₗ[R] P) → Matrix n n R) f)) *
      discr b' Q

Tactic:
simp [mul_left_comm, toMatrix_comp b b', mul_comm, discr]

Premises used: QuadraticForm.discr, mul_left_comm, QuadraticForm.toMatrix_comp, mul_comm
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
n : Type w
inst : Fintype n
inst_1 : DecidableEq n
inst_2 : CommRing R
inst_3 : Invertible (α := R) 2
Q : QuadraticForm R (n → R)
rw : Matrix.det.{u_3, w} (n := n) (toMatrix (N := n → R) (Pi.basisFun R n) Q) = Q.discr'
rw₁ : Matrix.det.{u_3, w} (n := n) (toMatrix (N := n → R) (Pi.basisFun R n) Q) = Q.toMatrix'.det
rw₂ rw₃ : Q.toMatrix'.det = Q.toMatrix'.det
⊢ discr (N := n → R) (n := n) (Pi.basisFun R n) Q = Q.discr'

Tactic:
rw [discr, discr', toMatrix_eq_toMatrix']

Premises used: QuadraticForm.discr, QuadraticForm.discr', QuadraticForm.toMatrix_eq_toMatrix'
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
inst : CommSemiring R
inst_1 : AddCommMonoid M
inst_2 : Module R M
B : BilinForm R M
hB : (BilinMap.toQuadraticMap B).Anisotropic
⊢ SeparatingLeft B

Tactic:
fun x hx => hB _ (hx x)

Premises used: LinearMap.SeparatingLeft
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
htwo : Invertible (α := R) 2
B : BilinForm R M
hB₁ : B ≠ 0
hB₂ : IsSymm B
⊢ IsSymm B

Tactic:
hB₂
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basic
Goal:
R : Type u_3
M : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : Module R M
htwo : Invertible (α := R) 2
B : BilinForm R M
hB₁ : B ≠ 0
hB₂ : IsSymm B
lift :
  ∀ (Q : QuadraticMap R M R)
    (hB₁ :
      Ne (α := BilinForm R M)
        (((QuadraticMap.associatedHom.{0, u_3, u_4, u_3} ℕ (R := R) (M := M) (N := R) :
                QuadraticMap R M R →ₗ[ℕ] BilinMap R M R) :
              (a : QuadraticMap R M R) → BilinMap R M R)
            Q :
          BilinMap R M R)
        (0 : BilinForm R M)),
    ∃ (x : M),
      ¬IsOrtho.{u_3, u_3, u_3, u_3, u_4, u_4} (R := R) (R₁ := R) (R₂ := R) (M := R) (I₁ := RingHom.id R) (I₂ :=
          RingHom.id R)
          (((QuadraticMap.associatedHom.{0, u_3, u_4, u_3} ℕ (R := R) (M := M) (N := R) :
                QuadraticMap R M R →ₗ[ℕ] BilinMap R M R) :
              (a : QuadraticMap R M R) → BilinMap R M R)
            Q)
          x x
⊢ ∃ (x : M), ¬IsOrtho B x x

Tactic:
lift B to QuadraticForm R M using hB₂ with Q

Premises used: QuadraticForm