Theorem: LieAlgebra.abelian_radical_iff_solvable_is_abelian
File: Mathlib/Algebra/Lie/Semisimple/Basic.lean

tactic: constructor
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
⊢ IsLieAbelian ↥↑(radical R L) ↔ ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I
state_after: case mp
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
⊢ IsLieAbelian ↥↑(radical R L) → ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I

case mpr
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
⊢ (∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I) → IsLieAbelian ↥↑(radical R L)

tactic: rintro h₁ I h₂
state_before: case mp
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
⊢ IsLieAbelian ↥↑(radical R L) → ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I
state_after: case mp
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h₁ : IsLieAbelian ↥↑(radical R L)
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ IsLieAbelian ↥↑I

tactic: rw [LieIdeal.solvable_iff_le_radical] at h₂
state_before: case mp
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h₁ : IsLieAbelian ↥↑(radical R L)
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ IsLieAbelian ↥↑I
state_after: case mp
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h₁ : IsLieAbelian ↥↑(radical R L)
I : LieIdeal R L
h₂ : I ≤ radical R L
⊢ IsLieAbelian ↥↑I

tactic: exact (LieIdeal.inclusion_injective h₂).isLieAbelian h₁
state_before: case mp
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h₁ : IsLieAbelian ↥↑(radical R L)
I : LieIdeal R L
h₂ : I ≤ radical R L
⊢ IsLieAbelian ↥↑I
state_after: no goals

tactic: intro h
state_before: case mpr
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
⊢ (∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I) → IsLieAbelian ↥↑(radical R L)
state_after: case mpr
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I
⊢ IsLieAbelian ↥↑(radical R L)

tactic: apply h
state_before: case mpr
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I
⊢ IsLieAbelian ↥↑(radical R L)
state_after: case mpr.a
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I
⊢ IsSolvable R ↥↑(radical R L)

tactic: infer_instance
state_before: case mpr.a
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsNoetherian R L
h : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → IsLieAbelian ↥↑I
⊢ IsSolvable R ↥↑(radical R L)
state_after: no goals