Theorem: LieAlgebra.InvariantForm.orthogonal_disjoint
File: Mathlib/Algebra/Lie/InvariantForm.lean

tactic: rw [disjoint_iff, ← hI.lt_iff, lt_iff_le_and_ne]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
⊢ Disjoint I (orthogonal Φ hΦ_inv I)
state_after: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
⊢ I ⊓ orthogonal Φ hΦ_inv I ≤ I ∧ I ⊓ orthogonal Φ hΦ_inv I ≠ I

tactic: suffices ¬I ≤ orthogonal Φ hΦ_inv I by simpa
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
⊢ I ⊓ orthogonal Φ hΦ_inv I ≤ I ∧ I ⊓ orthogonal Φ hΦ_inv I ≠ I
state_after: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
⊢ ¬I ≤ orthogonal Φ hΦ_inv I

tactic: intro contra
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
⊢ ¬I ≤ orthogonal Φ hΦ_inv I
state_after: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
⊢ False

tactic: apply hI.1
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
⊢ False
state_after: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
⊢ I = ⊥

tactic: rw [eq_bot_iff, ← lie_eq_self_of_isAtom_of_nonabelian I hI (hL I hI),
    LieSubmodule.lieIdeal_oper_eq_span, LieSubmodule.lieSpan_le]
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
⊢ I = ⊥
state_after: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
⊢ {m | ∃ x n, ⁅↑x, ↑n⁆ = m} ⊆ ↑⊥

tactic: rintro _ ⟨x, y, rfl⟩
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
⊢ {m | ∃ x n, ⁅↑x, ↑n⁆ = m} ⊆ ↑⊥
state_after: case intro.intro
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
⊢ ⁅↑x, ↑y⁆ ∈ ↑⊥

tactic: simp only [LieSubmodule.bot_coe, Set.mem_singleton_iff]
state_before: case intro.intro
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
⊢ ⁅↑x, ↑y⁆ ∈ ↑⊥
state_after: case intro.intro
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
⊢ ⁅↑x, ↑y⁆ = 0

tactic: apply hΦ_nondeg
state_before: case intro.intro
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
⊢ ⁅↑x, ↑y⁆ = 0
state_after: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
⊢ ∀ (n : L), (Φ ⁅↑x, ↑y⁆) n = 0

tactic: intro z
state_before: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
⊢ ∀ (n : L), (Φ ⁅↑x, ↑y⁆) n = 0
state_after: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
z : L
⊢ (Φ ⁅↑x, ↑y⁆) z = 0

tactic: rw [hΦ_inv, neg_eq_zero]
state_before: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
z : L
⊢ (Φ ⁅↑x, ↑y⁆) z = 0
state_after: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
z : L
⊢ (Φ ↑y) ⁅↑x, z⁆ = 0

tactic: have hyz : ⁅(x : L), z⁆ ∈ I := lie_mem_left _ _ _ _ _ x.2
state_before: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
z : L
⊢ (Φ ↑y) ⁅↑x, z⁆ = 0
state_after: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
z : L
hyz : ⁅↑x, z⁆ ∈ I
⊢ (Φ ↑y) ⁅↑x, z⁆ = 0

tactic: exact contra hyz y y.2
state_before: case intro.intro.a
R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
contra : I ≤ orthogonal Φ hΦ_inv I
x : ↥I
y : ↥I
z : L
hyz : ⁅↑x, z⁆ ∈ I
⊢ (Φ ↑y) ⁅↑x, z⁆ = 0
state_after: no goals

tactic: simpa
state_before: R : Type u_1
L : Type u_2
M : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : LieRing L
inst✝³ : LieAlgebra R L
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : LieRingModule L M
Φ✝ : LinearMap.BilinForm R M
hΦ_nondeg✝ : Φ✝.Nondegenerate
hΦ_inv✝ : LinearMap.BilinForm.lieInvariant L Φ✝
Φ : LinearMap.BilinForm R L
hΦ_nondeg : Φ.Nondegenerate
hΦ_inv : LinearMap.BilinForm.lieInvariant L Φ
hL : ∀ (I : LieIdeal R L), IsAtom I → ¬IsLieAbelian ↥↑I
I : LieIdeal R L
hI : IsAtom I
this : ¬I ≤ orthogonal Φ hΦ_inv I
⊢ I ⊓ orthogonal Φ hΦ_inv I ≤ I ∧ I ⊓ orthogonal Φ hΦ_inv I ≠ I
state_after: no goals