awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := M → M) (Function.comp (β := M) (⇑f.inv.weightMap : (a : M) → M) (⇑(↑f : P.End).weightMap : (a : M) → M))
    _root_.id
have h : Eq (α := M → M) (⇑(f.inv.weightMap ∘ₗ (↑f : P.End).weightMap) : (a : M) → M) _root_.id
Tactic: simp only [← @LinearMap.coe_comp]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := M → M) (⇑(f.inv.weightMap ∘ₗ (↑f : P.End).weightMap) : (a : M) → M) _root_.id
have h : Eq (α := M → M) (⇑(f.inv * (↑f : P.End)).weightMap : (a : M) → M) _root_.id
Tactic: rw [← Hom.weightMap_mul, f.inv_val, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := M → M) (⇑(f.inv * (↑f : P.End)).weightMap : (a : M) → M) _root_.id
⊢ Eq (α := M → M) (⇑(f.inv.weightMap ∘ₗ (↑f : P.End).weightMap) : (a : M) → M) _root_.id
have h₁ : Eq.{u_3 + 1} (α := M → M)
  (⇑(Hom.weightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (N := N) (ι₂ := ι) (N₂ := N) (P := P) (Q := P) 1) :
    (a : M) → M)
  _root_.id
Tactic: rw [← Hom.weightMap_mul, f.inv_val, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := M → M) (⇑(f.inv * (↑f : P.End)).weightMap : (a : M) → M) _root_.id
h₁ :
  Eq.{u_3 + 1} (α := M → M)
    (⇑(Hom.weightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (N := N) (ι₂ := ι) (N₂ := N) (P := P) (Q := P) 1) :
      (a : M) → M)
    _root_.id
⊢ Eq (α := M → M) (⇑(f.inv.weightMap ∘ₗ (↑f : P.End).weightMap) : (a : M) → M) _root_.id
have h₂ : Eq.{u_3 + 1} (α := M → M) (⇑LinearMap.id : (a : M) → M) _root_.id
Tactic: rw [← Hom.weightMap_mul, f.inv_val, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := M → M) (⇑(f.inv * (↑f : P.End)).weightMap : (a : M) → M) _root_.id
h₁ :
  Eq.{u_3 + 1} (α := M → M)
    (⇑(Hom.weightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (N := N) (ι₂ := ι) (N₂ := N) (P := P) (Q := P) 1) :
      (a : M) → M)
    _root_.id
h₂ : Eq.{u_3 + 1} (α := M → M) (⇑LinearMap.id : (a : M) → M) _root_.id
⊢ Eq (α := M → M) (⇑(f.inv.weightMap ∘ₗ (↑f : P.End).weightMap) : (a : M) → M) _root_.id
have h₃ : Eq.{u_3 + 1} (α := M → M) _root_.id _root_.id
Tactic: rw [← Hom.weightMap_mul, f.inv_val, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ RightInverse (α := M) (β := M) (⇑f.inv.weightMap : (a : M) → M) (⇑(↑f : P.End).weightMap : (a : M) → M)
have h : Eq (α := M → M) (Function.comp (β := M) (⇑(↑f : P.End).weightMap : (a : M) → M) (⇑f.inv.weightMap : (a : M) → M))
  _root_.id
Tactic: refine rightInverse_iff_comp.mpr ?_
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := M → M) (Function.comp (β := M) (⇑(↑f : P.End).weightMap : (a : M) → M) (⇑f.inv.weightMap : (a : M) → M))
    _root_.id
have h : Eq (α := M → M) (⇑((↑f : P.End).weightMap ∘ₗ f.inv.weightMap) : (a : M) → M) _root_.id
Tactic: simp only [← @LinearMap.coe_comp]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := M → M) (⇑((↑f : P.End).weightMap ∘ₗ f.inv.weightMap) : (a : M) → M) _root_.id
have h : Eq (α := M → M) (⇑((↑f : P.End) * f.inv).weightMap : (a : M) → M) _root_.id
Tactic: rw [← Hom.weightMap_mul, f.val_inv, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := M → M) (⇑((↑f : P.End) * f.inv).weightMap : (a : M) → M) _root_.id
⊢ Eq (α := M → M) (⇑((↑f : P.End).weightMap ∘ₗ f.inv.weightMap) : (a : M) → M) _root_.id
have h₁ : Eq.{u_3 + 1} (α := M → M)
  (⇑(Hom.weightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (N := N) (ι₂ := ι) (N₂ := N) (P := P) (Q := P) 1) :
    (a : M) → M)
  _root_.id
Tactic: rw [← Hom.weightMap_mul, f.val_inv, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := M → M) (⇑((↑f : P.End) * f.inv).weightMap : (a : M) → M) _root_.id
h₁ :
  Eq.{u_3 + 1} (α := M → M)
    (⇑(Hom.weightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (N := N) (ι₂ := ι) (N₂ := N) (P := P) (Q := P) 1) :
      (a : M) → M)
    _root_.id
⊢ Eq (α := M → M) (⇑((↑f : P.End).weightMap ∘ₗ f.inv.weightMap) : (a : M) → M) _root_.id
have h₂ : Eq.{u_3 + 1} (α := M → M) (⇑LinearMap.id : (a : M) → M) _root_.id
Tactic: rw [← Hom.weightMap_mul, f.val_inv, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := M → M) (⇑((↑f : P.End) * f.inv).weightMap : (a : M) → M) _root_.id
h₁ :
  Eq.{u_3 + 1} (α := M → M)
    (⇑(Hom.weightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (N := N) (ι₂ := ι) (N₂ := N) (P := P) (Q := P) 1) :
      (a : M) → M)
    _root_.id
h₂ : Eq.{u_3 + 1} (α := M → M) (⇑LinearMap.id : (a : M) → M) _root_.id
⊢ Eq (α := M → M) (⇑((↑f : P.End).weightMap ∘ₗ f.inv.weightMap) : (a : M) → M) _root_.id
have h₃ : Eq.{u_3 + 1} (α := M → M) _root_.id _root_.id
Tactic: rw [← Hom.weightMap_mul, f.val_inv, Hom.weightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Bijective (α := N) (β := N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
have refine : ∃ (g : N → N),
  LeftInverse g (⇑(↑f : P.End).coweightMap : (a : N) → N) ∧ RightInverse g (⇑(↑f : P.End).coweightMap : (a : N) → N)
Tactic: refine bijective_iff_has_inverse.mpr ?_
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ ∃ (g : N → N),
    LeftInverse g (⇑(↑f : P.End).coweightMap : (a : N) → N) ∧ RightInverse g (⇑(↑f : P.End).coweightMap : (a : N) → N)
have h : LeftInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N) ∧
  RightInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
Tactic: use f.inv.coweightMap
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ LeftInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N) ∧
    RightInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
have h : LeftInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
Tactic: constructor
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : LeftInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
⊢ LeftInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N) ∧
    RightInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
have h₁ : RightInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
Tactic: constructor
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ LeftInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
have h : Eq (α := N → N) (Function.comp (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N))
  _root_.id
Tactic: refine leftInverse_iff_comp.mpr ?_
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := N → N) (Function.comp (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N))
    _root_.id
have h : Eq (α := N → N) (⇑(f.inv.coweightMap ∘ₗ (↑f : P.End).coweightMap) : (a : N) → N) _root_.id
Tactic: simp only [← @LinearMap.coe_comp]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := N → N) (⇑(f.inv.coweightMap ∘ₗ (↑f : P.End).coweightMap) : (a : N) → N) _root_.id
have h : Eq (α := N → N) (⇑((↑f : P.End) * f.inv).coweightMap : (a : N) → N) _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.val_inv, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := N → N) (⇑((↑f : P.End) * f.inv).coweightMap : (a : N) → N) _root_.id
⊢ Eq (α := N → N) (⇑(f.inv.coweightMap ∘ₗ (↑f : P.End).coweightMap) : (a : N) → N) _root_.id
have h₁ : Eq.{u_4 + 1} (α := N → N)
  (⇑(Hom.coweightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (M := M) (ι₂ := ι) (M₂ := M) (P := P) (Q := P) 1) :
    (a : N) → N)
  _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.val_inv, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := N → N) (⇑((↑f : P.End) * f.inv).coweightMap : (a : N) → N) _root_.id
h₁ :
  Eq.{u_4 + 1} (α := N → N)
    (⇑(Hom.coweightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (M := M) (ι₂ := ι) (M₂ := M) (P := P) (Q := P) 1) :
      (a : N) → N)
    _root_.id
⊢ Eq (α := N → N) (⇑(f.inv.coweightMap ∘ₗ (↑f : P.End).coweightMap) : (a : N) → N) _root_.id
have h₂ : Eq.{u_4 + 1} (α := N → N) (⇑LinearMap.id : (a : N) → N) _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.val_inv, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := N → N) (⇑((↑f : P.End) * f.inv).coweightMap : (a : N) → N) _root_.id
h₁ :
  Eq.{u_4 + 1} (α := N → N)
    (⇑(Hom.coweightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (M := M) (ι₂ := ι) (M₂ := M) (P := P) (Q := P) 1) :
      (a : N) → N)
    _root_.id
h₂ : Eq.{u_4 + 1} (α := N → N) (⇑LinearMap.id : (a : N) → N) _root_.id
⊢ Eq (α := N → N) (⇑(f.inv.coweightMap ∘ₗ (↑f : P.End).coweightMap) : (a : N) → N) _root_.id
have h₃ : Eq.{u_4 + 1} (α := N → N) _root_.id _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.val_inv, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ RightInverse (α := N) (β := N) (⇑f.inv.coweightMap : (a : N) → N) (⇑(↑f : P.End).coweightMap : (a : N) → N)
have h : Eq (α := N → N) (Function.comp (β := N) (⇑(↑f : P.End).coweightMap : (a : N) → N) (⇑f.inv.coweightMap : (a : N) → N))
  _root_.id
Tactic: refine rightInverse_iff_comp.mpr ?_
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := N → N) (Function.comp (β := N) (⇑(↑f : P.End).coweightMap : (a : N) → N) (⇑f.inv.coweightMap : (a : N) → N))
    _root_.id
have h : Eq (α := N → N) (⇑((↑f : P.End).coweightMap ∘ₗ f.inv.coweightMap) : (a : N) → N) _root_.id
Tactic: simp only [← @LinearMap.coe_comp]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
⊢ Eq (α := N → N) (⇑((↑f : P.End).coweightMap ∘ₗ f.inv.coweightMap) : (a : N) → N) _root_.id
have h : Eq (α := N → N) (⇑(f.inv * (↑f : P.End)).coweightMap : (a : N) → N) _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.inv_val, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := N → N) (⇑(f.inv * (↑f : P.End)).coweightMap : (a : N) → N) _root_.id
⊢ Eq (α := N → N) (⇑((↑f : P.End).coweightMap ∘ₗ f.inv.coweightMap) : (a : N) → N) _root_.id
have h₁ : Eq.{u_4 + 1} (α := N → N)
  (⇑(Hom.coweightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (M := M) (ι₂ := ι) (M₂ := M) (P := P) (Q := P) 1) :
    (a : N) → N)
  _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.inv_val, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := N → N) (⇑(f.inv * (↑f : P.End)).coweightMap : (a : N) → N) _root_.id
h₁ :
  Eq.{u_4 + 1} (α := N → N)
    (⇑(Hom.coweightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (M := M) (ι₂ := ι) (M₂ := M) (P := P) (Q := P) 1) :
      (a : N) → N)
    _root_.id
⊢ Eq (α := N → N) (⇑((↑f : P.End).coweightMap ∘ₗ f.inv.coweightMap) : (a : N) → N) _root_.id
have h₂ : Eq.{u_4 + 1} (α := N → N) (⇑LinearMap.id : (a : N) → N) _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.inv_val, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f : P.Endˣ
h : Eq (α := N → N) (⇑(f.inv * (↑f : P.End)).coweightMap : (a : N) → N) _root_.id
h₁ :
  Eq.{u_4 + 1} (α := N → N)
    (⇑(Hom.coweightMap.{u_1, u_2, u_3, u_4, u_1, u_3, u_4} (ι := ι) (M := M) (ι₂ := ι) (M₂ := M) (P := P) (Q := P) 1) :
      (a : N) → N)
    _root_.id
h₂ : Eq.{u_4 + 1} (α := N → N) (⇑LinearMap.id : (a : N) → N) _root_.id
⊢ Eq (α := N → N) (⇑((↑f : P.End).coweightMap ∘ₗ f.inv.coweightMap) : (a : N) → N) _root_.id
have h₃ : Eq.{u_4 + 1} (α := N → N) _root_.id _root_.id
Tactic: rw [← Hom.coweightMap_mul, f.inv_val, Hom.coweightMap_one, LinearMap.id_coe]
-- Lean 4 proof step from Mathlib.LinearAlgebra.RootSystem.Hom (goal)
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
ι₂ : Type u_5
M₂ : Type u_6
N₂ : Type u_7
inst_5 : AddCommGroup M₂
inst_6 : Module R M₂
inst_7 : AddCommGroup N₂
inst_8 : Module R N₂
P_1 : RootPairing ι R M N
Q : RootPairing ι₂ R M₂ N₂
P : RootPairing ι R M N
f g : P.Aut
⊢ { val := (↑f : P.Hom P).comp (↑g : P.Hom P), inv := (↑(symm P P (comp f g)) : P.Hom P), val_inv := ⋯, inv_val := ⋯ } =
    { val := (↑f : P.Hom P), inv := (↑(symm P P f) : P.Hom P), val_inv := ⋯, inv_val := ⋯ : P.Endˣ } *
      { val := (↑g : P.Hom P), inv := (↑(symm P P g) : P.Hom P), val_inv := ⋯, inv_val := ⋯ : P.Endˣ }
have huv : ∀ (x : M),
  Eq (α := M)
    (((↑{ val := (↑f : P.Hom P).comp (↑g : P.Hom P), inv := (↑(symm P P (comp f g)) : P.Hom P), val_inv := sorry,
                  inv_val := sorry : P.Endˣ } :
              P.End).weightMap :
          (a : M) → M)
        x :
      M)
    (((↑({ val := (↑f : P.Hom P), inv := (↑(symm P P f) : P.Hom P), val_inv := sorry, inv_val := sorry : P.Endˣ } *
                  { val := (↑g : P.Hom P), inv := (↑(symm P P g) : P.Hom P), val_inv := sorry, inv_val := sorry : P.Endˣ }) :
              P.End).weightMap :
          (a : M) → M)
        x :
      M)
Tactic: ext