awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (hypothesis)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
h₁ :
  Eq.{u_4 + 1} (α := N)
    ((fun (n : N) ↦ P.pairing j i • n)
      (HSMul.hSMul (β := N) (m * m * lsq i + m * n * (P.pairing i j * lsq j) + n * n * lsq j)
        ((P.coroot : (a : ι) → N) k : N)))
    ((fun (n : N) ↦ P.pairing j i • n)
      (HSMul.hSMul (β := N) (m • lsq i) ((P.coroot : (a : ι) → N) i : N) +
        HSMul.hSMul (β := N) (n • lsq j) ((P.coroot : (a : ι) → N) j : N)))
⊢ HSMul.hSMul (β := N) (m * m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
have h₅ : HSMul.hSMul (β := N) (P.pairing j i * (m * m * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (P.pairing j i * (m * n * (P.pairing i j * lsq j))) ((P.coroot : (a : ι) → N) k : N) +
    HSMul.hSMul (β := N) (P.pairing j i * (n * n * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
  HSMul.hSMul (β := N) (P.pairing j i * (m * lsq i)) ((P.coroot : (a : ι) → N) i : N) +
    HSMul.hSMul (β := N) (P.pairing j i * (n * lsq j)) ((P.coroot : (a : ι) → N) j : N)
Tactic: simp only [add_smul, smul_add, ← mul_smul, smul_eq_mul] at h₁
Cleared hypotheses: h₁
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (goal)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
h₁ :
  HSMul.hSMul (β := N) (P.pairing j i * (m * m * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (P.pairing j i * (m * n * (P.pairing i j * lsq j))) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (P.pairing j i * (n * n * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (P.pairing j i * (m * lsq i)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (P.pairing j i * (n * lsq j)) ((P.coroot : (a : ι) → N) j : N)
⊢ HSMul.hSMul (β := N) (m * m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
have h : HSMul.hSMul (β := N) (m * m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
    HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
  HSMul.hSMul (β := N) (P.pairing j i * (m * m * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (P.pairing j i * (m * n * (P.pairing i j * lsq j))) ((P.coroot : (a : ι) → N) k : N) +
    HSMul.hSMul (β := N) (P.pairing j i * (n * n * lsq j)) ((P.coroot : (a : ι) → N) k : N)
Tactic: convert! h₁ using 1
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (hypothesis)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₁ :
  HSMul.hSMul (β := N) (lsq k) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m • lsq i) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n • lsq j) ((P.coroot : (a : ι) → N) j : N)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
⊢ HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
      ((P.coroot : (a : ι) → N) k : N) =
    m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
      n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N)
have h₅ : HSMul.hSMul (β := N) (m * m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
    HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
  HSMul.hSMul (β := N) (m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) i : N) +
    HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
Tactic: replace h₁ :
      (m * m * (P.pairing j i * lsq i)) • P.coroot k +
      (m * n * (P.pairing j i * P.pairing i j * lsq j)) • P.coroot k +
      (n * n * (P.pairing j i * lsq j)) • P.coroot k =
        (m * (P.pairing j i * lsq i)) • P.coroot i +
        (n * (P.pairing j i * lsq j)) • P.coroot j := by
    rw [h₂, h₃] at h₁
    replace h₁ := congr_arg (fun n ↦ P.pairing j i • n) h₁
    simp only [add_smul, smul_add, ← mul_smul, smul_eq_mul] at h₁
    convert! h₁ using 1
    · module
    · ring_nf
Cleared hypotheses: h₁
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (hypothesis)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
h₁ :
  HSMul.hSMul (β := N) (m * m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * (P.pairing j i * lsq i)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
⊢ HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
      ((P.coroot : (a : ι) → N) k : N) =
    m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
      n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N)
have h₅ : HSMul.hSMul (β := N) (m * m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
    HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
  HSMul.hSMul (β := N) (m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) i : N) +
    HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
Tactic: simp only [h₄] at h₁
Cleared hypotheses: h₁
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (goal)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
h₁ :
  HSMul.hSMul (β := N) (m * m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
⊢ HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
      ((P.coroot : (a : ι) → N) k : N) =
    m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
      n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N)
have a : Eq.{u_4 + 1} (α := N)
  ((fun (x : N) ↦ lsq j • x)
    (HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
      ((P.coroot : (a : ι) → N) k : N)))
  ((fun (x : N) ↦ lsq j • x)
    (m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
      n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N)))
Tactic: apply smul_right_injective _ (r := lsq j) (RootPairing.IsAnisotropic.rootForm_root_ne_zero j)
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (goal)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
h₁ :
  HSMul.hSMul (β := N) (m * m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
⊢ lsq j •
      HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
        ((P.coroot : (a : ι) → N) k : N) =
    lsq j •
      (m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
        n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N))
have h : lsq j •
    HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
      ((P.coroot : (a : ι) → N) k : N) =
  HSMul.hSMul (β := N) (m * m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
    HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N)
Tactic: convert! h₁ using 1
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (goal)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
inst_6 : P.IsAnisotropic
inst_7 : IsDomain R
inst_8 : IsTorsionFree R N
i j k : ι
m n : R
hk :
  HSMul.hSMul (β := M) m ((P.root : (a : ι) → M) i : M) + HSMul.hSMul (β := M) n ((P.root : (a : ι) → M) j : M) =
    (P.root : (a : ι) → M) k
B : P.InvariantForm := P.toInvariantForm
lsq : (i : ι) → R :=
  fun (i : ι) ↦
    (((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
      ((P.root : (a : ι) → M) i : M)
hlsq :
  ∀ (i : ι),
    lsq i =
      (((P.RootForm : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
        ((P.root : (a : ι) → M) i : M)
h₂ :
  lsq k =
    m * m * lsq i +
        m * n *
          HMul.hMul (α := R) (β := R) (2 : R)
            ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
                ((P.root : (a : ι) → M) j : M) :
              R) +
      n * n * lsq j
h₃ :
  HMul.hMul (α := R) (β := R) (2 : R)
      ((((B.form : (a : M) → M →ₗ[R] R) ((P.root : (a : ι) → M) i) : M →ₗ[R] R) : (a : M) → R)
          ((P.root : (a : ι) → M) j : M) :
        R) =
    P.pairing i j * lsq j
h₄ : P.pairing j i * lsq i = P.pairing i j * lsq j
h₁ :
  HSMul.hSMul (β := N) (m * m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) i : N) +
      HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
h :
  lsq j •
      HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
        ((P.coroot : (a : ι) → N) k : N) =
    HSMul.hSMul (β := N) (m * m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
        HSMul.hSMul (β := N) (m * n * (P.pairing j i * P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) k : N) +
      HSMul.hSMul (β := N) (n * n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) k : N)
⊢ lsq j •
      HSMul.hSMul (β := N) (m * m * P.pairing i j + m * n * (P.pairing i j * P.pairing j i) + n * n * P.pairing j i)
        ((P.coroot : (a : ι) → N) k : N) =
    lsq j •
      (m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
        n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N))
have h₅ : lsq j •
    (m • HSMul.hSMul (β := N) (P.pairing i j) ((P.coroot : (a : ι) → N) i : N) +
      n • HSMul.hSMul (β := N) (P.pairing j i) ((P.coroot : (a : ι) → N) j : N)) =
  HSMul.hSMul (β := N) (m * (P.pairing i j * lsq j)) ((P.coroot : (a : ι) → N) i : N) +
    HSMul.hSMul (β := N) (n * (P.pairing j i * lsq j)) ((P.coroot : (a : ι) → N) j : N)
Tactic: convert! h₁ using 1
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (goal)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
S : Type u_5
inst_6 : CommRing S
inst_7 : IsDomain R
inst_8 : IsDomain S
inst_9 : Algebra S R
inst_10 : FaithfulSMul S R
inst_11 : P.IsValuedIn S
inst_12 : Module S M
inst_13 : IsScalarTower S R M
inst_14 : Module S N
inst_15 : IsScalarTower S R N
inst_16 : P.IsAnisotropic
⊢ finrank.{u_5, u_4} S ↥(LinearMap.range (M := ↥(P.rootSpan S)) (P.PolarizationIn S)) =
    finrank.{u_5, u_4} S ↥(P.corootSpan S)
have apply : finrank.{u_5, u_4} S ↥(P.corootSpan S) ≤
  finrank.{u_5, u_4} S ↥(LinearMap.range (M := ↥(P.rootSpan S)) (P.PolarizationIn S))
Tactic: apply (Submodule.finrank_mono (P.range_polarizationIn_le_span_coroot S)).antisymm
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (hypothesis)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
S : Type u_5
inst_6 : CommRing S
inst_7 : IsDomain R
inst_8 : IsDomain S
inst_9 : Algebra S R
inst_10 : FaithfulSMul S R
inst_11 : P.IsValuedIn S
inst_12 : Module S M
inst_13 : IsScalarTower S R M
inst_14 : Module S N
inst_15 : IsScalarTower S R N
inst_16 : P.IsAnisotropic
⊢ finrank.{u_5, u_4} S ↥(P.corootSpan S) ≤
    finrank.{u_5, u_4} S ↥(LinearMap.range (M := ↥(P.rootSpan S)) (P.PolarizationIn S))
have this : IsReflexive R N
Tactic: have : IsReflexive R N := .of_isPerfPair P.flip.toLinearMap
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Finite.Nondegenerate (hypothesis)
Goal:
ι : Type u_1
R : Type u_2
M : Type u_3
N : Type u_4
inst : Fintype ι
inst_1 : AddCommGroup M
inst_2 : AddCommGroup N
inst_3 : CommRing R
inst_4 : Module R M
inst_5 : Module R N
P : RootPairing ι R M N
S : Type u_5
inst_6 : CommRing S
inst_7 : IsDomain R
inst_8 : IsDomain S
inst_9 : Algebra S R
inst_10 : FaithfulSMul S R
inst_11 : P.IsValuedIn S
inst_12 : Module S M
inst_13 : IsScalarTower S R M
inst_14 : Module S N
inst_15 : IsScalarTower S R N
inst_16 : P.IsAnisotropic
this : IsReflexive R N
⊢ finrank.{u_5, u_4} S ↥(P.corootSpan S) ≤
    finrank.{u_5, u_4} S ↥(LinearMap.range (M := ↥(P.rootSpan S)) (P.PolarizationIn S))
have this₁ : IsTorsionFree S N
Tactic: have : Module.IsTorsionFree S N := .trans_faithfulSMul S R N