Theorem: LieAlgebra.engel_isBot_of_isMin.lieCharpoly_coeff_natDegree
File: Mathlib/Algebra/Lie/CartanExists.lean

tactic: rw [← mul_one j, lieCharpoly, coeff_map]
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ ((LieAlgebra.engel_isBot_of_isMin.lieCharpoly R M x y).coeff i).natDegree ≤ j
state_after: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ (↑(MvPolynomial.aeval fun i => C (((chooseBasis R L).repr y) i) * X + C (((chooseBasis R L).repr x) i))
        (((↑φ).polyCharpoly (chooseBasis R L)).coeff i)).natDegree ≤
    j * 1

tactic: apply MvPolynomial.aeval_natDegree_le
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ (↑(MvPolynomial.aeval fun i => C (((chooseBasis R L).repr y) i) * X + C (((chooseBasis R L).repr x) i))
        (((↑φ).polyCharpoly (chooseBasis R L)).coeff i)).natDegree ≤
    j * 1
state_after: case hF
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ (((↑φ).polyCharpoly (chooseBasis R L)).coeff i).totalDegree ≤ j

case hf
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ ∀ (i : ChooseBasisIndex R L), (C (((chooseBasis R L).repr y) i) * X + C (((chooseBasis R L).repr x) i)).natDegree ≤ 1

tactic: intro k
state_before: case hf
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ ∀ (i : ChooseBasisIndex R L), (C (((chooseBasis R L).repr y) i) * X + C (((chooseBasis R L).repr x) i)).natDegree ≤ 1
state_after: case hf
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ (C (((chooseBasis R L).repr y) k) * X + C (((chooseBasis R L).repr x) k)).natDegree ≤ 1

tactic: apply Polynomial.natDegree_add_le_of_degree_le
state_before: case hf
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ (C (((chooseBasis R L).repr y) k) * X + C (((chooseBasis R L).repr x) k)).natDegree ≤ 1
state_after: case hf.hp
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ (C (((chooseBasis R L).repr y) k) * X).natDegree ≤ 1

case hf.hq
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ (C (((chooseBasis R L).repr x) k)).natDegree ≤ 1

tactic: apply (polyCharpoly_coeff_isHomogeneous φ (chooseBasis R L) _ _ hij).totalDegree_le
state_before: case hF
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
⊢ (((↑φ).polyCharpoly (chooseBasis R L)).coeff i).totalDegree ≤ j
state_after: no goals

tactic: apply (Polynomial.natDegree_C_mul_le _ _).trans
state_before: case hf.hp
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ (C (((chooseBasis R L).repr y) k) * X).natDegree ≤ 1
state_after: case hf.hp
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ X.natDegree ≤ 1

tactic: simp only [natDegree_X, le_rfl]
state_before: case hf.hp
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ X.natDegree ≤ 1
state_after: no goals

tactic: simp only [natDegree_C, zero_le]
state_before: case hf.hq
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁴ : Field K
inst✝¹³ : CommRing R
inst✝¹² : Nontrivial R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra K L
inst✝⁹ : LieAlgebra R L
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : LieRingModule L M
inst✝⁵ : LieModule R L M
inst✝⁴ : Module.Finite K L
inst✝³ : Module.Finite R L
inst✝² : Module.Free R L
inst✝¹ : Module.Finite R M
inst✝ : Module.Free R M
x y : L
i j : ℕ
hij : i + j = finrank R M
k : ChooseBasisIndex R L
⊢ (C (((chooseBasis R L).repr x) k)).natDegree ≤ 1
state_after: no goals