Theorem: _private.Mathlib.Algebra.Lie.Semisimple.Basic.0.LieAlgebra.IsSemisimple.finitelyAtomistic
File: Mathlib/Algebra/Lie/Semisimple/Basic.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
⊢ ∀ (s : Finset (LieIdeal R L)), ↑s ⊆ {I | IsAtom I} → ∀ I ≤ s.sup id, ∃ t ⊆ s, I = t.sup id
state_after: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI : I ≤ s.sup id
⊢ ∃ t ⊆ s, I = t.sup id
tactic: intro s hs I hI
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI : I ≤ s.sup id
⊢ ∃ t ⊆ s, I = t.sup id
state_after: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI : I ≤ s.sup id
S : Set (LieIdeal R L) := {I | IsAtom I}
⊢ ∃ t ⊆ s, I = t.sup id
tactic: let S := {I : LieIdeal R L | IsAtom I}
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI : I ≤ s.sup id
S : Set (LieIdeal R L) := {I | IsAtom I}
⊢ ∃ t ⊆ s, I = t.sup id
state_after: case inl
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
S : Set (LieIdeal R L) := {I | IsAtom I}
hI : s.sup id ≤ s.sup id
⊢ ∃ t ⊆ s, s.sup id = t.sup id

case inr
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI✝ : I ≤ s.sup id
S : Set (LieIdeal R L) := {I | IsAtom I}
hI : I < s.sup id
⊢ ∃ t ⊆ s, I = t.sup id
tactic: obtain rfl | hI := hI.eq_or_lt
state_before: case inr
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI✝ : I ≤ s.sup id
S : Set (LieIdeal R L) := {I | IsAtom I}
hI : I < s.sup id
⊢ ∃ t ⊆ s, I = t.sup id
state_after: case inr.intro.intro
R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
s : Finset (LieIdeal R L)
hs : ↑s ⊆ {I | IsAtom I}
I : LieIdeal R L
hI✝ : I ≤ s.sup id
S : Set (LieIdeal R L) := {I | IsAtom I}
hI : I < s.sup id
J : LieIdeal R L
hJs : J ∈ s
hJI : ¬J ≤ I
⊢ ∃ t ⊆ s, I = t.sup id
tactic: obtain ⟨J, hJs, hJI⟩ : ∃ J ∈ s, ¬ J ≤ I := by
    by_contra! H
    exact hI.ne (le_antisymm hI.le (s.sup_le H))
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : IsSemisimple R L
x : (s : Finset (LieIdeal R L)) ×' (_ : ↑s ⊆ {I | IsAtom I}) ×' (I : LieIdeal R L) ×' I ≤ s.sup id
a✝⁶ :
  ∀ (y : (s : Finset (LieIdeal R L)) ×' (_ : ↑s ⊆ {I | IsAtom I}) ×' (I : LieIdeal R L) ×' I ≤ s.sup id),
    (invImage (fun x => PSigma.casesOn x fun s a => PSigma.casesOn a fun a I => PSigma.casesOn I fun I a => s.card)
            instWellFoundedRelationOfSizeOf).1
        y x →
      ∃ t ⊆ y.1, y.2.2.1 = t.sup id
s : Finset (LieIdeal R L)
a✝⁵ : (_ : ↑s ⊆ {I | IsAtom I}) ×' (I : LieIdeal R L) ×' I ≤ s.sup id
a✝⁴ :
  ∀ (y : (s : Finset (LieIdeal R L)) ×' (_ : ↑s ⊆ {I | IsAtom I}) ×' (I : LieIdeal R L) ×' I ≤ s.sup id),
    (invImage (fun x => PSigma.casesOn x fun s a => PSigma.casesOn a fun a I => PSigma.casesOn I fun I a => s.card)
            instWellFoundedRelationOfSizeOf).1
        y ⟨s, a✝⁵⟩ →
      ∃ t ⊆ y.1, y.2.2.1 = t.sup id
a✝³ : ↑s ⊆ {I | IsAtom I}
I✝ : (I : LieIdeal R L) ×' I ≤ s.sup id
a✝² :
  ∀ (y : (s : Finset (LieIdeal R L)) ×' (_ : ↑s ⊆ {I | IsAtom I}) ×' (I : LieIdeal R L) ×' I ≤ s.sup id),
    (invImage (fun x => PSigma.casesOn x fun s a => PSigma.casesOn a fun a I => PSigma.casesOn I fun I a => s.card)
            instWellFoundedRelationOfSizeOf).1
        y ⟨s, ⟨a✝³, I✝⟩⟩ →
      ∃ t ⊆ y.1, y.2.2.1 = t.sup id
I : LieIdeal R L
a✝¹ : I ≤ s.sup id
a✝ :
  ∀ (y : (s : Finset (LieIdeal R L)) ×' (_ : ↑s ⊆ {I | IsAtom I}) ×' (I : LieIdeal R L) ×' I ≤ s.sup id),
    (invImage (fun x => PSigma.casesOn x fun s a => PSigma.casesOn a fun a I => PSigma.casesOn I fun I a => s.card)
            instWellFoundedRelationOfSizeOf).1
        y ⟨s, ⟨a✝³, ⟨I, a✝¹⟩⟩⟩ →
      ∃ t ⊆ y.1, y.2.2.1 = t.sup id
S : Set (LieIdeal R L) := {I | IsAtom I}
hI : I < s.sup id
J : LieIdeal R L
h✝ : J ∈ s ∧ ¬J ≤ I
hJs : J ∈ s
hJI : ¬J ≤ I
s' : Finset (LieIdeal R L) := s.erase J
hs' : s' ⊂ s
hs'S : ↑s' ⊆ S
K : LieIdeal R L := s'.sup id
this : I ≤ K
⊢ (invImage (fun x => PSigma.casesOn x fun s a => PSigma.casesOn a fun a I => PSigma.casesOn I fun I a => s.card)
        instWellFoundedRelationOfSizeOf).1
    ⟨s', ⟨hs'S, ⟨I, this⟩⟩⟩ ⟨s, ⟨a✝³, ⟨I, a✝¹⟩⟩⟩
state_after: no goals
tactic: exact Finset.card_lt_card hs'