awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : DecidableEq ι
Q : QuadraticMap R M N
f : ι →₀ R
g : ι → R → M
⊢ (Q : (a : M) → N) (f.sum g) =
    HAdd.hAdd (α := N) (f.sum fun (i : ι) (r : R) ↦ (Q : (a : M) → N) (g i r))
      (∑ p ∈ f.support.sym2 with ¬p.IsDiag,
        polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N) (Sym2.map (fun (i : ι) ↦ g i ((f : (a : ι) → R) i)) p))

Tactic:
Q.map_sum _ _

Premises used: Finsupp.sum, QuadraticMap.map_sum
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : DecidableEq ι
Q : QuadraticMap R M N
g : ι → M
l : ι →₀ R
simp_rw :
  HAdd.hAdd (α := N) (l.sum fun (i : ι) (r : R) ↦ r • HSMul.hSMul (β := N) r ((Q : (a : M) → N) (g i) : N))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N)
          (Sym2.map (fun (i : ι) ↦ HSMul.hSMul.{u_2, u_3, u_3} (α := R) ((l : (a : ι) → R) i : R) (g i)) p)) =
    HAdd.hAdd (α := N) ((l * l).sum fun (i : ι) (a : R) ↦ HSMul.hSMul (β := N) a (((⇑Q : (a : M) → N) ∘ g) i))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) (Sym2.mul (Sym2.map (⇑l : (a : ι) → R) p))
          (polarSym2 (⇑Q : (a : M) → N) (Sym2.map g p)))
⊢ (Q : (a : M) → N) ((linearCombination R g : (a : ι →₀ R) → M) l : M) =
    HAdd.hAdd (α := N) (β := N) ((linearCombination R ((⇑Q : (a : M) → N) ∘ g) : (a : ι →₀ R) → N) (l * l) : N)
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
          HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) (Sym2.mul (Sym2.map (⇑l : (a : ι) → R) p))
            (polarSym2 (⇑Q : (a : M) → N) (Sym2.map g p)) :
        N)

Tactic:
simp_rw [linearCombination_apply, map_finsuppSum, Q.map_smul, mul_smul]

Premises used: QuadraticMap.map_smul, QuadraticMap.map_finsuppSum, Finsupp.linearCombination_apply, SemigroupAction.mul_smul
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : DecidableEq ι
Q : QuadraticMap R M N
g : ι → M
l : ι →₀ R
⊢ ∀ i ∈ l.support, HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) 0 (((⇑Q : (a : M) → N) ∘ g) i) = 0

Tactic:
simp
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : DecidableEq ι
Q : QuadraticMap R M N
g : ι → M
l : ι →₀ R
rw :
  HAdd.hAdd (α := N) (l.sum fun (i : ι) (r : R) ↦ r • HSMul.hSMul (β := N) r ((Q : (a : M) → N) (g i) : N))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N)
          (Sym2.map (fun (i : ι) ↦ HSMul.hSMul.{u_2, u_3, u_3} (α := R) ((l : (a : ι) → R) i : R) (g i)) p)) =
    HAdd.hAdd (α := N)
      (∑ x ∈ l.support,
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) ((l * l : (a : ι) → R) x : R) (((⇑Q : (a : M) → N) ∘ g) x))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) (Sym2.mul (Sym2.map (⇑l : (a : ι) → R) p))
          (polarSym2 (⇑Q : (a : M) → N) (Sym2.map g p)))
⊢ HAdd.hAdd (α := N) (l.sum fun (i : ι) (r : R) ↦ r • HSMul.hSMul (β := N) r ((Q : (a : M) → N) (g i) : N))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N)
          (Sym2.map (fun (i : ι) ↦ HSMul.hSMul.{u_2, u_3, u_3} (α := R) ((l : (a : ι) → R) i : R) (g i)) p)) =
    HAdd.hAdd (α := N) ((l * l).sum fun (i : ι) (a : R) ↦ HSMul.hSMul (β := N) a (((⇑Q : (a : M) → N) ∘ g) i))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) (Sym2.mul (Sym2.map (⇑l : (a : ι) → R) p))
          (polarSym2 (⇑Q : (a : M) → N) (Sym2.map g p)))

Tactic:
rw [(l * l).sum_of_support_subset support_mul_subset_left _ <| by simp]

Premises used: HMul.hMul, Finsupp.support_mul_subset_left, Finsupp.sum_of_support_subset
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : DecidableEq ι
Q : QuadraticMap R M N
g : ι → M
l : ι →₀ R
⊢ HAdd.hAdd (α := N) (l.sum fun (i : ι) (r : R) ↦ r • HSMul.hSMul (β := N) r ((Q : (a : M) → N) (g i) : N))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N)
          (Sym2.map (fun (i : ι) ↦ HSMul.hSMul.{u_2, u_3, u_3} (α := R) ((l : (a : ι) → R) i : R) (g i)) p)) =
    HAdd.hAdd (α := N)
      (∑ x ∈ l.support,
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) ((l * l : (a : ι) → R) x : R) (((⇑Q : (a : M) → N) ∘ g) x))
      (∑ p ∈ l.support.sym2 with ¬p.IsDiag,
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N) (Sym2.mul (Sym2.map (⇑l : (a : ι) → R) p))
          (polarSym2 (⇑Q : (a : M) → N) (Sym2.map g p)))

Tactic:
simp [Finsupp.sum, ← polarSym2_map_smul, mul_smul]

Premises used: Finsupp.sum, QuadraticMap.polarSym2_map_smul, SemigroupAction.mul_smul
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : DecidableEq ι
Q : QuadraticMap R M N
bm : Basis ι R M
x : M
rw :
  Eq.{u_4 + 1} (α := N)
    ((Q : (a : M) → N)
        ((linearCombination R (⇑bm : (a : ι) → M) : (a : ι →₀ R) → M) ((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : M) :
      N)
    ((Q : (a : M) → N) x : N)
rw₁ rw₂ : Eq.{u_4 + 1} (α := N) ((Q : (a : M) → N) x : N) ((Q : (a : M) → N) x : N)
⊢ HAdd.hAdd (α := N) (β := N)
      ((linearCombination R
              (Function.comp.{u_1 + 1, u_3 + 1, u_4 + 1} (β := M) (⇑Q : (a : M) → N) (⇑bm : (a : ι) → M)) :
            (a : ι →₀ R) → N)
          (HMul.hMul (α := ι →₀ R) (β := ι →₀ R) ((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R)
            ((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R)) :
        N)
      (∑ p ∈ Finset.sym2 (support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x)) with ¬p.IsDiag,
          HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N)
            (Sym2.mul (Sym2.map (⇑((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) p))
            (polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N) (Sym2.map (⇑bm : (a : ι) → M) p)) :
        N) =
    (Q : (a : M) → N) x

Tactic:
rw [← apply_linearCombination, Basis.linearCombination_repr]

Premises used: Module.Basis.linearCombination_repr, QuadraticMap.apply_linearCombination
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
Q : QuadraticMap R M N
bm : Basis ι R M
i j : ι
⊢ Eq.{u_4 + 1} (α := N)
    ((((Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)
    (if i = j then (Q : (a : M) → N) ((bm : (a : ι) → M) i : M)
      else
        if i < j then
          polar.{u_3, u_4} (M := M) ((⇑Q : (a : M) → N) : (a : M) → N) ((bm : (a : ι) → M) i : M)
            ((bm : (a : ι) → M) j : M)
        else 0 :
      N)

Tactic:
simp [toBilin]

Premises used: QuadraticMap.toBilin
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
Q : QuadraticMap R M N
bm : Basis ι R M
H : ∀ (x : M), Eq.{u_4 + 1} (α := N) (((Q.toBilin bm).toQuadraticMap : (a : M) → N) x : N) ((Q : (a : M) → N) x : N)
⊢ (Q.toBilin bm).toQuadraticMap = Q

Tactic:
ext x
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
Q : QuadraticMap R M N
bm : Basis ι R M
x : M
H :
  Eq.{u_4 + 1} (α := N)
    (((Q.toBilin bm : (a : M) → M →ₗ[R] N)
            (∑ a ∈ Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x),
              HSMul.hSMul.{u_2, u_3, u_3} (α := R) (β := M)
                ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) a : R) ((bm : (a : ι) → M) a : M)) :
          (a : M) → N)
        (∑ a ∈ Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x),
          HSMul.hSMul.{u_2, u_3, u_3} (α := R) (β := M)
            ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) a : R) ((bm : (a : ι) → M) a : M)) :
      N)
    ((Q : (a : M) → N)
        (∑ a ∈ Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x),
          HSMul.hSMul.{u_2, u_3, u_3} (α := R) (β := M)
            ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) a : R) ((bm : (a : ι) → M) a : M)) :
      N)
⊢ Eq.{u_4 + 1} (α := N) (((Q.toBilin bm).toQuadraticMap : (a : M) → N) x : N) ((Q : (a : M) → N) x : N)

Tactic:
rw [← bm.linearCombination_repr x, LinearMap.BilinMap.toQuadraticMap_apply,
      Finsupp.linearCombination_apply, Finsupp.sum]

Premises used: Finsupp.sum, Finsupp.linearCombination_apply, Module.Basis.linearCombination_repr, LinearMap.BilinMap.toQuadraticMap_apply
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
Q : QuadraticMap R M N
bm : Basis ι R M
x : M
⊢ HAdd.hAdd (α := N)
      (∑ x_1 ∈ Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x),
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) x_1 : R)
          (HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N)
            ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) x_1 : R)
            ((Q : (a : M) → N) ((bm : (a : ι) → M) x_1 : M) : N)))
      (∑ x_1 ∈ Finset.offDiag (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x)) with x_1.1 < x_1.2,
        polar (⇑Q : (a : M) → N)
          (HSMul.hSMul.{u_2, u_3, u_3} (α := R) (β := M)
            ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) x_1.1 : R) ((bm : (a : ι) → M) x_1.1 : M))
          (HSMul.hSMul.{u_2, u_3, u_3} (α := R) (β := M)
            ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) x_1.2 : R) ((bm : (a : ι) → M) x_1.2 : M))) =
    HAdd.hAdd (α := N)
      (∑ x_1 ∈ Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x),
        HSMul.hSMul.{u_2, u_4, u_4} (α := R) ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) x_1 : R)
          (HSMul.hSMul.{u_2, u_4, u_4} (α := R) (β := N)
            ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) x_1 : R)
            ((Q : (a : M) → N) ((bm : (a : ι) → M) x_1 : M) : N)))
      (∑ i ∈ Finset.offDiag (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x)) with i.1 < i.2,
        polarSym2.{u_3, u_4} (M := M) (⇑Q : (a : M) → N)
          (Sym2.map
            (fun (a : ι) ↦
              HSMul.hSMul.{u_2, u_3, u_3} (α := R) (β := M)
                ((((bm.repr : (a : M) → ι →₀ R) x : ι →₀ R) : (a : ι) → R) a : R) ((bm : (a : ι) → M) a : M))
            s(i.1, i.2)))

Tactic:
rfl
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
Q : QuadraticMap R M N
bm : Basis ι R M
x_1 : M
x : ι × ι
hx :
  Membership.mem (γ := Finset (ι × ι))
    (Finset.offDiag (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x_1))) x
⊢ Membership.mem (γ := Finset ι) (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x_1)) x.1 ∧
    Membership.mem (γ := Finset ι) (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x_1)) x.2 ∧
      x.1 ≠ x.2

Tactic:
rw [Finset.mem_offDiag] at hx

Premises used: Finset.mem_offDiag
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
Q : QuadraticMap R M N
bm : Basis ι R M
x_1 : M
x : ι × ι
hx :
  Membership.mem (γ := Finset ι) (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x_1)) x.1 ∧
    Membership.mem (γ := Finset ι) (Finsupp.support.{u_1, u_2} (M := R) ((bm.repr : (a : M) → ι →₀ R) x_1)) x.2 ∧
      x.1 ≠ x.2
⊢ ¬x.1 = x.2

Tactic:
simpa using hx.2.2

Premises used: And.right
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : Free R M
Q : QuadraticMap R M N
obtain : ∀ (ι : Type u_3) (b : Basis ι R M), ∃ (a : BilinMap R M N), a.toQuadraticMap = Q
⊢ ∃ (a : BilinMap R M N), a.toQuadraticMap = Q

Tactic:
obtain ⟨ι, b⟩ := Module.Free.exists_basis (R := R) (M := M)

Premises used: Module.Free.exists_basis
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : Free R M
Q : QuadraticMap R M N
ι : Type u_3
b : Basis ι R M
this : LinearOrder ι := IsWellOrder.linearOrder WellOrderingRel
⊢ ∃ (a : BilinMap R M N), a.toQuadraticMap = Q

Tactic:
⟨_, toQuadraticMap_toBilin _ b⟩

Premises used: QuadraticMap.toQuadraticMap_toBilin, Exists.intro
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
R : Type u_2
M : Type u_3
N : Type u_4
inst : CommRing R
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : Module R M
inst_4 : Module R N
inst_5 : Free R M
Q : QuadraticMap R M N
ι : Type u_3
b : Basis ι R M
this : LinearOrder ι := IsWellOrder.linearOrder WellOrderingRel
⊢ ∃ (a : BilinMap R M N), a.toQuadraticMap = Q

Tactic:
exact ⟨_, toQuadraticMap_toBilin _ b⟩
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
bm : Basis ι R M
Q₁ Q₂ : QuadraticMap R M N
⊢ (Q₁ + Q₂).toBilin bm = Q₁.toBilin bm + Q₂.toBilin bm

Tactic:
bm.ext fun i => bm.ext fun j => ?_

Premises used: Module.Basis.ext
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
bm : Basis ι R M
Q₁ Q₂ : QuadraticMap R M N
refine :
  ∀ (i j : ι),
    Eq.{u_4 + 1} (α := N)
      (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
      ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
⊢ (Q₁ + Q₂).toBilin bm = Q₁.toBilin bm + Q₂.toBilin bm

Tactic:
refine bm.ext fun i => bm.ext fun j => ?_

Premises used: Module.Basis.ext
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
bm : Basis ι R M
Q₁ Q₂ : QuadraticMap R M N
i j : ι
inl :
  ∀ (h : i < j),
    Eq.{u_4 + 1} (α := N)
      (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
      ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
inr :
  Eq.{u_4 + 1} (α := N)
    (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) i : M) :
      N)
    ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) i : M) :
      N)
inr₁ :
  ∀ (h : j < i),
    Eq.{u_4 + 1} (α := N)
      (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
      ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
⊢ Eq.{u_4 + 1} (α := N)
    (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)
    ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)

Tactic:
obtain h | rfl | h := lt_trichotomy i j

Premises used: rfl, lt_trichotomy
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
bm : Basis ι R M
Q₁ Q₂ : QuadraticMap R M N
i j : ι
h : i < j
⊢ Eq.{u_4 + 1} (α := N)
    (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)
    ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)

Tactic:
simp [h.ne, h, toBilin_apply, polar_add]

Premises used: QuadraticMap.polar_add, QuadraticMap.toBilin_apply, LT.lt.ne
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
bm : Basis ι R M
Q₁ Q₂ : QuadraticMap R M N
i : ι
⊢ Eq.{u_4 + 1} (α := N)
    (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) i : M) :
      N)
    ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) i : M) :
      N)

Tactic:
simp [toBilin_apply]

Premises used: QuadraticMap.toBilin_apply
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
bm : Basis ι R M
Q₁ Q₂ : QuadraticMap R M N
i j : ι
h : j < i
⊢ Eq.{u_4 + 1} (α := N)
    (((((Q₁ + Q₂).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)
    ((((Q₁.toBilin bm + Q₂.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)

Tactic:
simp [h.ne', h.not_gt, toBilin_apply]

Premises used: QuadraticMap.toBilin_apply, LT.lt.ne', LT.lt.not_gt
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
S : Type u_5
inst_6 : CommSemiring S
inst_7 : Algebra S R
inst_8 : Module S N
inst_9 : IsScalarTower S R N
bm : Basis ι R M
s : S
Q : QuadraticMap R M N
⊢ (s • Q).toBilin bm = s • Q.toBilin bm

Tactic:
bm.ext fun i => bm.ext fun j => ?_

Premises used: Module.Basis.ext
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
S : Type u_5
inst_6 : CommSemiring S
inst_7 : Algebra S R
inst_8 : Module S N
inst_9 : IsScalarTower S R N
bm : Basis ι R M
s : S
Q : QuadraticMap R M N
refine :
  ∀ (i j : ι),
    Eq.{u_4 + 1} (α := N)
      (((((s • Q).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
      ((((s • Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
⊢ (s • Q).toBilin bm = s • Q.toBilin bm

Tactic:
refine bm.ext fun i => bm.ext fun j => ?_

Premises used: Module.Basis.ext
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
S : Type u_5
inst_6 : CommSemiring S
inst_7 : Algebra S R
inst_8 : Module S N
inst_9 : IsScalarTower S R N
bm : Basis ι R M
s : S
Q : QuadraticMap R M N
i j : ι
inl :
  ∀ (h : i < j),
    Eq.{u_4 + 1} (α := N)
      (((((s • Q).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
      ((((s • Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
inr :
  Eq.{u_4 + 1} (α := N)
    (((((s • Q).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) i : M) :
      N)
    ((((s • Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) i : M) :
      N)
inr₁ :
  ∀ (h : j < i),
    Eq.{u_4 + 1} (α := N)
      (((((s • Q).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
      ((((s • Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
          ((bm : (a : ι) → M) j : M) :
        N)
⊢ Eq.{u_4 + 1} (α := N)
    (((((s • Q).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)
    ((((s • Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)

Tactic:
obtain h | rfl | h := lt_trichotomy i j

Premises used: rfl, lt_trichotomy
-- Module: Mathlib.LinearAlgebra.QuadraticForm.Basis
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : LinearOrder ι
inst_1 : CommRing R
inst_2 : AddCommGroup M
inst_3 : AddCommGroup N
inst_4 : Module R M
inst_5 : Module R N
S : Type u_5
inst_6 : CommSemiring S
inst_7 : Algebra S R
inst_8 : Module S N
inst_9 : IsScalarTower S R N
bm : Basis ι R M
s : S
Q : QuadraticMap R M N
i j : ι
h : i < j
⊢ Eq.{u_4 + 1} (α := N)
    (((((s • Q).toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)
    ((((s • Q.toBilin bm : (a : M) → M →ₗ[R] N) ((bm : (a : ι) → M) i) : M →ₗ[R] N) : (a : M) → N)
        ((bm : (a : ι) → M) j : M) :
      N)

Tactic:
simp [h.ne, h, toBilin_apply, polar_smul]

Premises used: QuadraticMap.polar_smul, QuadraticMap.toBilin_apply, LT.lt.ne