-- Module: Mathlib.LinearAlgebra.RootSystem.GeckConstruction.Basic
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 : Module R M
inst_3 : AddCommGroup N
inst_4 : Module R N
P : RootPairing ι R M N
inst_5 : P.IsCrystallographic
b : P.Base
inst_6 : Finite ι
inst_7 : IsDomain R
inst_8 : CharZero R
inst_9 : Fintype ι
i : ↥b.support
this : InvolutiveNeg ι := P.indexNeg
k l : ι
a :
  HAdd.hAdd (α := R)
      (∑ x : ↥b.support,
        HMul.hMul (α := R) (0 k x)
          (Matrix.fromBlocks (l := ↥b.support) (o := ι) 0
            ((Matrix.of : (a : ↥b.support → ι → R) → Matrix (↥b.support) ι R) fun (i' : ↥b.support) (j : ι) ↦
              if i' = i ∧ j = -(↑i : ι) then 1 else 0)
            ((Matrix.of : (a : ι → ↥b.support → R) → Matrix ι (↥b.support) R) fun (i' : ι) (j : ↥b.support) ↦
              if i' = (↑i : ι) then (↑|b.cartanMatrix i j| : R) else 0)
            ((Matrix.of : (a : ι → ι → R) → Matrix ι ι R) fun (i' j : ι) ↦
              if
                  (P.root : (a : ι) → M) i' =
                    HAdd.hAdd (α := M) (β := M) ((P.root : (a : ι) → M) (↑i : ι) : M)
                      ((P.root : (a : ι) → M) j : M) then
                HAdd.hAdd (α := R)
                  (↑(chainBotCoeff.{u_1, u_2, u_3, u_4} (R := R) (M := M) (N := N) (P := P) (↑i : ι) j) : R) 1
              else 0)
            (Sum.inl x) (Sum.inr l)))
      (∑ x : ι,
        if
            (P.root : (a : ι) → M) x =
              HAdd.hAdd (α := M) (β := M) ((P.root : (a : ι) → M) (↑i : ι) : M) ((P.root : (a : ι) → M) l : M) then
          (if -k = x then 1 else 0) *
            HAdd.hAdd (α := R)
              (↑(chainBotCoeff.{u_1, u_2, u_3, u_4} (R := R) (M := M) (N := N) (P := P) (↑i : ι) l) : R) 1
        else HMul.hMul (α := R) (if -k = x then 1 else 0) 0) =
    HAdd.hAdd (α := R)
      (∑ x : ↥b.support,
        HMul.hMul (α := R) (if -k = (↑i : ι) then (↑|b.cartanMatrix i x| : R) else 0)
          (Matrix.fromBlocks (l := ↥b.support) (o := ι) 1 0 0
            ((Matrix.of : (a : ι → ι → R) → Matrix ι ι R) fun (i j : ι) ↦ if i = -j then 1 else 0) (Sum.inl x)
            (Sum.inr l)))
      (∑ x : ι,
        if x = -l then
          (if
                (P.root : (a : ι) → M) k =
                  HSub.hSub (α := M) (β := M) ((P.root : (a : ι) → M) x : M) ((P.root : (a : ι) → M) (↑i : ι) : M) then
              HAdd.hAdd (α := R)
                (↑(chainTopCoeff.{u_1, u_2, u_3, u_4} (R := R) (M := M) (N := N) (P := P) (↑i : ι) x) : R) 1
            else 0) *
            1
        else
          (if
                (P.root : (a : ι) → M) k =
                  HSub.hSub (α := M) (β := M) ((P.root : (a : ι) → M) x : M) ((P.root : (a : ι) → M) (↑i : ι) : M) then
              HAdd.hAdd (α := R)
                (↑(chainTopCoeff.{u_1, u_2, u_3, u_4} (R := R) (M := M) (N := N) (P := P) (↑i : ι) x) : R) 1
            else 0) *
            0)
⊢ (ω b * e i) (Sum.inr k) (Sum.inr l) = (f i * ω b) (Sum.inr k) (Sum.inr l)

Tactic:
simp only [ω, e, f, Matrix.mul_apply, Fintype.sum_sum_type, Matrix.fromBlocks_apply₂₁,
      Matrix.fromBlocks_apply₂₂, Matrix.of_apply, mul_ite, ← neg_eq_iff_eq_neg (a := k)]

Premises used: Matrix.fromBlocks_apply₂₂, RootPairing.GeckConstruction.f, RootPairing.GeckConstruction.ω, Fintype.sum_sum_type, mul_ite, Matrix.mul_apply, neg_eq_iff_eq_neg, Matrix.fromBlocks_apply₂₁, Matrix.of_apply, RootPairing.GeckConstruction.e