algebra.lie.submoduleMathlib.Algebra.Lie.Submodule

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -558,7 +558,7 @@ instance : CompleteLattice (LieSubmodule R L M) :=
     le := (· ≤ ·)
     lt := (· < ·)
     bot := ⊥
-    bot_le := fun N _ h => by rw [mem_bot] at h ; rw [h]; exact N.zero_mem'
+    bot_le := fun N _ h => by rw [mem_bot] at h; rw [h]; exact N.zero_mem'
     top := ⊤
     le_top := fun _ _ _ => trivial
     inf := (· ⊓ ·)
@@ -631,7 +631,7 @@ theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 := by rw [eq_bot_i
 instance subsingleton_of_bot : Subsingleton (LieSubmodule R L ↥(⊥ : LieSubmodule R L M)) :=
   by
   apply subsingleton_of_bot_eq_top
-  ext ⟨x, hx⟩; change x ∈ ⊥ at hx ; rw [LieSubmodule.mem_bot] at hx ; subst hx
+  ext ⟨x, hx⟩; change x ∈ ⊥ at hx; rw [LieSubmodule.mem_bot] at hx; subst hx
   simp only [true_iff_iff, eq_self_iff_true, Submodule.mk_eq_zero, LieSubmodule.mem_bot]
 #align lie_submodule.subsingleton_of_bot LieSubmodule.subsingleton_of_bot
 -/
@@ -789,7 +789,7 @@ theorem lieSpan_le {N} : lieSpan R L s ≤ N ↔ s ⊆ N :=
   by
   constructor
   · exact subset.trans subset_lie_span
-  · intro hs m hm; rw [mem_lie_span] at hm ; exact hm _ hs
+  · intro hs m hm; rw [mem_lie_span] at hm; exact hm _ hs
 #align lie_submodule.lie_span_le LieSubmodule.lieSpan_le
 -/
 
@@ -890,7 +890,7 @@ def map : LieSubmodule R L M' :=
     lie_mem := fun x m' h => by
       rcases h with ⟨m, hm, hfm⟩; use⁅x, m⁆; constructor
       · apply N.lie_mem hm
-      · norm_cast at hfm ; simp [hfm] }
+      · norm_cast at hfm; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
 -/
 
@@ -1077,7 +1077,7 @@ theorem comap_map_le : I ≤ comap f (map f I) := by rw [← map_le_iff_le_comap
 
 #print LieIdeal.map_mono /-
 @[mono]
-theorem map_mono : Monotone (map f) := fun I₁ I₂ h => by rw [SetLike.le_def] at h ;
+theorem map_mono : Monotone (map f) := fun I₁ I₂ h => by rw [SetLike.le_def] at h;
   apply LieSubmodule.lieSpan_mono (Set.image_subset (⇑f) h)
 #align lie_ideal.map_mono LieIdeal.map_mono
 -/
@@ -1108,7 +1108,7 @@ same as ideals of `L` contained in `I`. -/
 instance subsingleton_of_bot : Subsingleton (LieIdeal R (⊥ : LieIdeal R L)) :=
   by
   apply subsingleton_of_bot_eq_top
-  ext ⟨x, hx⟩; change x ∈ ⊥ at hx ; rw [LieSubmodule.mem_bot] at hx ; subst hx
+  ext ⟨x, hx⟩; change x ∈ ⊥ at hx; rw [LieSubmodule.mem_bot] at hx; subst hx
   simp only [true_iff_iff, eq_self_iff_true, Submodule.mk_eq_zero, LieSubmodule.mem_bot]
 #align lie_ideal.subsingleton_of_bot LieIdeal.subsingleton_of_bot
 -/
@@ -1220,7 +1220,7 @@ theorem mem_idealRange {x : L} : f x ∈ idealRange f :=
 @[simp]
 theorem mem_idealRange_iff (h : IsIdealMorphism f) {y : L'} : y ∈ idealRange f ↔ ∃ x : L, f x = y :=
   by
-  rw [f.is_ideal_morphism_def] at h 
+  rw [f.is_ideal_morphism_def] at h
   rw [← LieSubmodule.mem_coe, ← LieIdeal.coe_toSubalgebra, h, f.range_coe, Set.mem_range]
 #align lie_hom.mem_ideal_range_iff LieHom.mem_idealRange_iff
 -/
@@ -1229,7 +1229,7 @@ theorem mem_idealRange_iff (h : IsIdealMorphism f) {y : L'} : y ∈ idealRange f
 theorem le_ker_iff : I ≤ f.ker ↔ ∀ x, x ∈ I → f x = 0 :=
   by
   constructor <;> intro h x hx
-  · specialize h hx; rw [mem_ker] at h ; exact h
+  · specialize h hx; rw [mem_ker] at h; exact h
   · rw [mem_ker]; apply h x hx
 #align lie_hom.le_ker_iff LieHom.le_ker_iff
 -/
@@ -1260,7 +1260,7 @@ theorem range_eq_top : f.range = ⊤ ↔ Function.Surjective f :=
 @[simp]
 theorem idealRange_eq_top_of_surjective (h : Function.Surjective f) : f.idealRange = ⊤ :=
   by
-  rw [← f.range_eq_top] at h 
+  rw [← f.range_eq_top] at h
   rw [ideal_range_eq_lie_span_range, h, ← LieSubalgebra.coe_to_submodule, ←
     LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.top_coeSubmodule,
     LieSubalgebra.top_coe_submodule, LieSubmodule.coe_lieSpan_submodule_eq_iff]
@@ -1314,7 +1314,7 @@ theorem coe_map_of_surjective (h : Function.Surjective f) :
 theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y ∈ I.map f) :
     ∃ x : I, f x = y :=
   by
-  rw [← LieSubmodule.mem_coeSubmodule, coe_map_of_surjective h₁, Submodule.mem_map] at h₂ 
+  rw [← LieSubmodule.mem_coeSubmodule, coe_map_of_surjective h₁, Submodule.mem_map] at h₂
   obtain ⟨x, hx, rfl⟩ := h₂
   use⟨x, hx⟩
   rfl
@@ -1324,8 +1324,8 @@ theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y
 #print LieIdeal.bot_of_map_eq_bot /-
 theorem bot_of_map_eq_bot {I : LieIdeal R L} (h₁ : Function.Injective f) (h₂ : I.map f = ⊥) :
     I = ⊥ := by
-  rw [← f.ker_eq_bot] at h₁ ; change comap f ⊥ = ⊥ at h₁ 
-  rw [eq_bot_iff, map_le_iff_le_comap, h₁] at h₂ 
+  rw [← f.ker_eq_bot] at h₁; change comap f ⊥ = ⊥ at h₁
+  rw [eq_bot_iff, map_le_iff_le_comap, h₁] at h₂
   rw [eq_bot_iff]; exact h₂
 #align lie_ideal.bot_of_map_eq_bot LieIdeal.bot_of_map_eq_bot
 -/
@@ -1367,7 +1367,7 @@ theorem map_sup_ker_eq_map : LieIdeal.map f (I ⊔ f.ker) = LieIdeal.map f I :=
     exact le_antisymm this (LieIdeal.map_mono le_sup_left)
   apply LieSubmodule.lieSpan_mono
   rintro x ⟨y, hy₁, hy₂⟩; rw [← hy₂]
-  erw [LieSubmodule.mem_sup] at hy₁ ; obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁; rw [← hy]
+  erw [LieSubmodule.mem_sup] at hy₁; obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁; rw [← hy]
   rw [f.coe_to_linear_map, f.map_add, f.mem_ker.mp hz₂, add_zero]; exact ⟨z₁, hz₁, rfl⟩
 #align lie_ideal.map_sup_ker_eq_map LieIdeal.map_sup_ker_eq_map
 -/
@@ -1378,7 +1378,7 @@ theorem map_comap_eq (h : f.IsIdealMorphism) : map f (comap f J) = f.idealRange
   by
   apply le_antisymm
   · rw [le_inf_iff]; exact ⟨f.map_le_ideal_range _, map_comap_le⟩
-  · rw [f.is_ideal_morphism_def] at h 
+  · rw [f.is_ideal_morphism_def] at h
     rw [← SetLike.coe_subset_coe, LieSubmodule.inf_coe, ← coe_to_subalgebra, h]
     rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂ ⊢; exact mem_map h₂
 #align lie_ideal.map_comap_eq LieIdeal.map_comap_eq
Diff
@@ -724,30 +724,31 @@ theorem incl_eq_val : (N.incl : N → M) = Subtype.val :=
 
 variable {N N'} (h : N ≤ N')
 
-#print LieSubmodule.homOfLe /-
+#print LieSubmodule.inclusion /-
 /-- Given two nested Lie submodules `N ⊆ N'`, the inclusion `N ↪ N'` is a morphism of Lie modules.-/
-def homOfLe : N →ₗ⁅R,L⁆ N' :=
-  { Submodule.ofLe (show N.toSubmodule ≤ N'.toSubmodule from h) with map_lie' := fun x m => rfl }
-#align lie_submodule.hom_of_le LieSubmodule.homOfLe
+def inclusion : N →ₗ⁅R,L⁆ N' :=
+  { Submodule.inclusion (show N.toSubmodule ≤ N'.toSubmodule from h) with
+    map_lie' := fun x m => rfl }
+#align lie_submodule.hom_of_le LieSubmodule.inclusion
 -/
 
-#print LieSubmodule.coe_homOfLe /-
+#print LieSubmodule.coe_inclusion /-
 @[simp]
-theorem coe_homOfLe (m : N) : (homOfLe h m : M) = m :=
+theorem coe_inclusion (m : N) : (inclusion h m : M) = m :=
   rfl
-#align lie_submodule.coe_hom_of_le LieSubmodule.coe_homOfLe
+#align lie_submodule.coe_hom_of_le LieSubmodule.coe_inclusion
 -/
 
-#print LieSubmodule.homOfLe_apply /-
-theorem homOfLe_apply (m : N) : homOfLe h m = ⟨m.1, h m.2⟩ :=
+#print LieSubmodule.inclusion_apply /-
+theorem inclusion_apply (m : N) : inclusion h m = ⟨m.1, h m.2⟩ :=
   rfl
-#align lie_submodule.hom_of_le_apply LieSubmodule.homOfLe_apply
+#align lie_submodule.hom_of_le_apply LieSubmodule.inclusion_apply
 -/
 
-#print LieSubmodule.homOfLe_injective /-
-theorem homOfLe_injective : Function.Injective (homOfLe h) := fun x y => by
+#print LieSubmodule.inclusion_injective /-
+theorem inclusion_injective : Function.Injective (inclusion h) := fun x y => by
   simp only [hom_of_le_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe, Subtype.val_eq_coe]
-#align lie_submodule.hom_of_le_injective LieSubmodule.homOfLe_injective
+#align lie_submodule.hom_of_le_injective LieSubmodule.inclusion_injective
 -/
 
 end InclusionMaps
@@ -1329,31 +1330,33 @@ theorem bot_of_map_eq_bot {I : LieIdeal R L} (h₁ : Function.Injective f) (h₂
 #align lie_ideal.bot_of_map_eq_bot LieIdeal.bot_of_map_eq_bot
 -/
 
-#print LieIdeal.homOfLe /-
+#print LieIdeal.inclusion /-
 /-- Given two nested Lie ideals `I₁ ⊆ I₂`, the inclusion `I₁ ↪ I₂` is a morphism of Lie algebras. -/
-def homOfLe {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : I₁ →ₗ⁅R⁆ I₂ :=
-  { Submodule.ofLe (show I₁.toSubmodule ≤ I₂.toSubmodule from h) with map_lie' := fun x y => rfl }
-#align lie_ideal.hom_of_le LieIdeal.homOfLe
+def inclusion {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : I₁ →ₗ⁅R⁆ I₂ :=
+  { Submodule.inclusion (show I₁.toSubmodule ≤ I₂.toSubmodule from h) with
+    map_lie' := fun x y => rfl }
+#align lie_ideal.hom_of_le LieIdeal.inclusion
 -/
 
-#print LieIdeal.coe_homOfLe /-
+#print LieIdeal.coe_inclusion /-
 @[simp]
-theorem coe_homOfLe {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : (homOfLe h x : L) = x :=
+theorem coe_inclusion {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : (inclusion h x : L) = x :=
   rfl
-#align lie_ideal.coe_hom_of_le LieIdeal.coe_homOfLe
+#align lie_ideal.coe_hom_of_le LieIdeal.coe_inclusion
 -/
 
-#print LieIdeal.homOfLe_apply /-
-theorem homOfLe_apply {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : homOfLe h x = ⟨x.1, h x.2⟩ :=
+#print LieIdeal.inclusion_apply /-
+theorem inclusion_apply {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) :
+    inclusion h x = ⟨x.1, h x.2⟩ :=
   rfl
-#align lie_ideal.hom_of_le_apply LieIdeal.homOfLe_apply
+#align lie_ideal.hom_of_le_apply LieIdeal.inclusion_apply
 -/
 
-#print LieIdeal.homOfLe_injective /-
-theorem homOfLe_injective {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : Function.Injective (homOfLe h) :=
-  fun x y => by
+#print LieIdeal.inclusion_injective /-
+theorem inclusion_injective {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) :
+    Function.Injective (inclusion h) := fun x y => by
   simp only [hom_of_le_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe, Subtype.val_eq_coe]
-#align lie_ideal.hom_of_le_injective LieIdeal.homOfLe_injective
+#align lie_ideal.hom_of_le_injective LieIdeal.inclusion_injective
 -/
 
 #print LieIdeal.map_sup_ker_eq_map /-
Diff
@@ -540,7 +540,6 @@ theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s
 #align lie_submodule.Inf_coe LieSubmodule.sInf_coe
 -/
 
-#print LieSubmodule.sInf_glb /-
 theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   by
   have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' := by intros; rfl
@@ -548,7 +547,6 @@ theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   simp only [Inf_coe]
   exact isGLB_biInf
 #align lie_submodule.Inf_glb LieSubmodule.sInf_glb
--/
 
 /-- The set of Lie submodules of a Lie module form a complete lattice.
 
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2021 Oliver Nash. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Oliver Nash
 -/
-import Mathbin.Algebra.Lie.Subalgebra
-import Mathbin.RingTheory.Noetherian
+import Algebra.Lie.Subalgebra
+import RingTheory.Noetherian
 
 #align_import algebra.lie.submodule from "leanprover-community/mathlib"@"af471b9e3ce868f296626d33189b4ce730fa4c00"
 
@@ -500,12 +500,12 @@ instance : Inf (LieSubmodule R L M) :=
     { (N ⊓ N' : Submodule R M) with
       lie_mem := fun x m h => mem_inter (N.lie_mem h.1) (N'.lie_mem h.2) }⟩
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:373:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 instance : InfSet (LieSubmodule R L M) :=
   ⟨fun S =>
     {
       sInf
-        "./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
+        "./././Mathport/Syntax/Translate/Expr.lean:373:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
       lie_mem := fun x m h =>
         by
         simp only [Submodule.mem_carrier, mem_Inter, Submodule.sInf_coe, mem_set_of_eq,
@@ -519,13 +519,13 @@ theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
 #align lie_submodule.inf_coe LieSubmodule.inf_coe
 -/
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:373:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 #print LieSubmodule.sInf_coe_toSubmodule /-
 @[simp]
 theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
     (↑(sInf S) : Submodule R M) =
       sInf
-        "./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
+        "./././Mathport/Syntax/Translate/Expr.lean:373:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
   rfl
 #align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_toSubmodule
 -/
Diff
@@ -365,7 +365,7 @@ theorem Submodule.exists_lieSubmodule_coe_eq_iff (p : Submodule R M) :
   by
   constructor
   · rintro ⟨N, rfl⟩ _ _; exact N.lie_mem
-  · intro h; use { p with lie_mem := h }; exact LieSubmodule.coe_toSubmodule_mk p _
+  · intro h; use{ p with lie_mem := h }; exact LieSubmodule.coe_toSubmodule_mk p _
 #align submodule.exists_lie_submodule_coe_eq_iff Submodule.exists_lieSubmodule_coe_eq_iff
 -/
 
@@ -889,7 +889,7 @@ of `M'`. -/
 def map : LieSubmodule R L M' :=
   { (N : Submodule R M).map (f : M →ₗ[R] M') with
     lie_mem := fun x m' h => by
-      rcases h with ⟨m, hm, hfm⟩; use ⁅x, m⁆; constructor
+      rcases h with ⟨m, hm, hfm⟩; use⁅x, m⁆; constructor
       · apply N.lie_mem hm
       · norm_cast at hfm ; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
@@ -1265,7 +1265,7 @@ theorem idealRange_eq_top_of_surjective (h : Function.Surjective f) : f.idealRan
   rw [ideal_range_eq_lie_span_range, h, ← LieSubalgebra.coe_to_submodule, ←
     LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.top_coeSubmodule,
     LieSubalgebra.top_coe_submodule, LieSubmodule.coe_lieSpan_submodule_eq_iff]
-  use ⊤
+  use⊤
   exact LieSubmodule.top_coeSubmodule
 #align lie_hom.ideal_range_eq_top_of_surjective LieHom.idealRange_eq_top_of_surjective
 -/
@@ -1303,7 +1303,7 @@ theorem coe_map_of_surjective (h : Function.Surjective f) :
         obtain ⟨z₁, rfl⟩ := h x
         simp only [LieHom.coe_toLinearMap, SetLike.mem_coe, Set.mem_image,
           LieSubmodule.mem_coeSubmodule, Submodule.mem_carrier, Submodule.map_coe]
-        use ⁅z₁, z₂⁆
+        use⁅z₁, z₂⁆
         exact ⟨I.lie_mem hz₂, f.map_lie z₁ z₂⟩ }
   erw [LieSubmodule.coe_lieSpan_submodule_eq_iff]
   use J
@@ -1317,7 +1317,7 @@ theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y
   by
   rw [← LieSubmodule.mem_coeSubmodule, coe_map_of_surjective h₁, Submodule.mem_map] at h₂ 
   obtain ⟨x, hx, rfl⟩ := h₂
-  use ⟨x, hx⟩
+  use⟨x, hx⟩
   rfl
 #align lie_ideal.mem_map_of_surjective LieIdeal.mem_map_of_surjective
 -/
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Oliver Nash. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Oliver Nash
-
-! This file was ported from Lean 3 source module algebra.lie.submodule
-! leanprover-community/mathlib commit af471b9e3ce868f296626d33189b4ce730fa4c00
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Lie.Subalgebra
 import Mathbin.RingTheory.Noetherian
 
+#align_import algebra.lie.submodule from "leanprover-community/mathlib"@"af471b9e3ce868f296626d33189b4ce730fa4c00"
+
 /-!
 # Lie submodules of a Lie algebra
 
Diff
@@ -48,11 +48,13 @@ variable [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M]
 
 variable [LieRingModule L M] [LieModule R L M]
 
+#print LieSubmodule /-
 /-- A Lie submodule of a Lie module is a submodule that is closed under the Lie bracket.
 This is a sufficient condition for the subset itself to form a Lie module. -/
 structure LieSubmodule extends Submodule R M where
   lie_mem : ∀ {x : L} {m : M}, m ∈ carrier → ⁅x, m⁆ ∈ carrier
 #align lie_submodule LieSubmodule
+-/
 
 attribute [nolint doc_blame] LieSubmodule.toSubmodule
 
@@ -79,76 +81,103 @@ instance : Zero (LieSubmodule R L M) :=
 instance : Inhabited (LieSubmodule R L M) :=
   ⟨0⟩
 
+#print LieSubmodule.coeSubmodule /-
 instance coeSubmodule : Coe (LieSubmodule R L M) (Submodule R M) :=
   ⟨toSubmodule⟩
 #align lie_submodule.coe_submodule LieSubmodule.coeSubmodule
+-/
 
 @[simp]
 theorem toSubmodule_eq_coe : N.toSubmodule = N :=
   rfl
 #align lie_submodule.to_submodule_eq_coe LieSubmodule.toSubmodule_eq_coe
 
+#print LieSubmodule.coe_toSubmodule /-
 @[norm_cast]
 theorem coe_toSubmodule : ((N : Submodule R M) : Set M) = N :=
   rfl
 #align lie_submodule.coe_to_submodule LieSubmodule.coe_toSubmodule
+-/
 
+#print LieSubmodule.mem_carrier /-
 @[simp]
 theorem mem_carrier {x : M} : x ∈ N.carrier ↔ x ∈ (N : Set M) :=
   Iff.rfl
 #align lie_submodule.mem_carrier LieSubmodule.mem_carrier
+-/
 
+#print LieSubmodule.mem_mk_iff /-
 @[simp]
 theorem mem_mk_iff (S : Set M) (h₁ h₂ h₃ h₄) {x : M} :
     x ∈ (⟨S, h₁, h₂, h₃, h₄⟩ : LieSubmodule R L M) ↔ x ∈ S :=
   Iff.rfl
 #align lie_submodule.mem_mk_iff LieSubmodule.mem_mk_iff
+-/
 
+#print LieSubmodule.mem_coeSubmodule /-
 @[simp]
 theorem mem_coeSubmodule {x : M} : x ∈ (N : Submodule R M) ↔ x ∈ N :=
   Iff.rfl
 #align lie_submodule.mem_coe_submodule LieSubmodule.mem_coeSubmodule
+-/
 
+#print LieSubmodule.mem_coe /-
 theorem mem_coe {x : M} : x ∈ (N : Set M) ↔ x ∈ N :=
   Iff.rfl
 #align lie_submodule.mem_coe LieSubmodule.mem_coe
+-/
 
+#print LieSubmodule.zero_mem /-
 @[simp]
 protected theorem zero_mem : (0 : M) ∈ N :=
   zero_mem N
 #align lie_submodule.zero_mem LieSubmodule.zero_mem
+-/
 
+#print LieSubmodule.mk_eq_zero /-
 @[simp]
 theorem mk_eq_zero {x} (h : x ∈ N) : (⟨x, h⟩ : N) = 0 ↔ x = 0 :=
   Subtype.ext_iff_val
 #align lie_submodule.mk_eq_zero LieSubmodule.mk_eq_zero
+-/
 
+#print LieSubmodule.coe_toSet_mk /-
 @[simp]
 theorem coe_toSet_mk (S : Set M) (h₁ h₂ h₃ h₄) :
     ((⟨S, h₁, h₂, h₃, h₄⟩ : LieSubmodule R L M) : Set M) = S :=
   rfl
 #align lie_submodule.coe_to_set_mk LieSubmodule.coe_toSet_mk
+-/
 
+#print LieSubmodule.coe_toSubmodule_mk /-
 @[simp]
 theorem coe_toSubmodule_mk (p : Submodule R M) (h) :
     (({ p with lie_mem := h } : LieSubmodule R L M) : Submodule R M) = p := by cases p; rfl
 #align lie_submodule.coe_to_submodule_mk LieSubmodule.coe_toSubmodule_mk
+-/
 
+#print LieSubmodule.coeSubmodule_injective /-
 theorem coeSubmodule_injective :
     Function.Injective (toSubmodule : LieSubmodule R L M → Submodule R M) := fun x y h => by
   cases x; cases y; congr; injection h
 #align lie_submodule.coe_submodule_injective LieSubmodule.coeSubmodule_injective
+-/
 
+#print LieSubmodule.ext /-
 @[ext]
 theorem ext (h : ∀ m, m ∈ N ↔ m ∈ N') : N = N' :=
   SetLike.ext h
 #align lie_submodule.ext LieSubmodule.ext
+-/
 
+#print LieSubmodule.coe_toSubmodule_eq_iff /-
 @[simp]
 theorem coe_toSubmodule_eq_iff : (N : Submodule R M) = (N' : Submodule R M) ↔ N = N' :=
   coeSubmodule_injective.eq_iff
 #align lie_submodule.coe_to_submodule_eq_iff LieSubmodule.coe_toSubmodule_eq_iff
+-/
 
+#print LieSubmodule.copy /-
 /-- Copy of a lie_submodule with a new `carrier` equal to the old one. Useful to fix definitional
 equalities. -/
 protected def copy (s : Set M) (hs : s = ↑N) : LieSubmodule R L M
@@ -159,15 +188,20 @@ protected def copy (s : Set M) (hs : s = ↑N) : LieSubmodule R L M
   smul_mem' := hs.symm ▸ N.smul_mem'
   lie_mem _ _ := hs.symm ▸ N.lie_mem
 #align lie_submodule.copy LieSubmodule.copy
+-/
 
+#print LieSubmodule.coe_copy /-
 @[simp]
 theorem coe_copy (S : LieSubmodule R L M) (s : Set M) (hs : s = ↑S) : (S.copy s hs : Set M) = s :=
   rfl
 #align lie_submodule.coe_copy LieSubmodule.coe_copy
+-/
 
+#print LieSubmodule.copy_eq /-
 theorem copy_eq (S : LieSubmodule R L M) (s : Set M) (hs : s = ↑S) : S.copy s hs = S :=
   SetLike.coe_injective hs
 #align lie_submodule.copy_eq LieSubmodule.copy_eq
+-/
 
 instance : LieRingModule L N
     where
@@ -176,10 +210,12 @@ instance : LieRingModule L N
   lie_add := by intro x m n; apply SetCoe.ext; apply lie_add
   leibniz_lie := by intro x y m; apply SetCoe.ext; apply leibniz_lie
 
+#print LieSubmodule.module' /-
 instance module' {S : Type _} [Semiring S] [SMul S R] [Module S M] [IsScalarTower S R M] :
     Module S N :=
   N.toSubmodule.module'
 #align lie_submodule.module' LieSubmodule.module'
+-/
 
 instance : Module R N :=
   N.toSubmodule.Module
@@ -193,35 +229,47 @@ instance : LieModule R L N
   lie_smul := by intro t x y; apply SetCoe.ext; apply lie_smul
   smul_lie := by intro t x y; apply SetCoe.ext; apply smul_lie
 
+#print LieSubmodule.coe_zero /-
 @[simp, norm_cast]
 theorem coe_zero : ((0 : N) : M) = (0 : M) :=
   rfl
 #align lie_submodule.coe_zero LieSubmodule.coe_zero
+-/
 
+#print LieSubmodule.coe_add /-
 @[simp, norm_cast]
 theorem coe_add (m m' : N) : (↑(m + m') : M) = (m : M) + (m' : M) :=
   rfl
 #align lie_submodule.coe_add LieSubmodule.coe_add
+-/
 
+#print LieSubmodule.coe_neg /-
 @[simp, norm_cast]
 theorem coe_neg (m : N) : (↑(-m) : M) = -(m : M) :=
   rfl
 #align lie_submodule.coe_neg LieSubmodule.coe_neg
+-/
 
+#print LieSubmodule.coe_sub /-
 @[simp, norm_cast]
 theorem coe_sub (m m' : N) : (↑(m - m') : M) = (m : M) - (m' : M) :=
   rfl
 #align lie_submodule.coe_sub LieSubmodule.coe_sub
+-/
 
+#print LieSubmodule.coe_smul /-
 @[simp, norm_cast]
 theorem coe_smul (t : R) (m : N) : (↑(t • m) : M) = t • (m : M) :=
   rfl
 #align lie_submodule.coe_smul LieSubmodule.coe_smul
+-/
 
+#print LieSubmodule.coe_bracket /-
 @[simp, norm_cast]
 theorem coe_bracket (x : L) (m : N) : (↑⁅x, m⁆ : M) = ⁅x, ↑m⁆ :=
   rfl
 #align lie_submodule.coe_bracket LieSubmodule.coe_bracket
+-/
 
 end LieSubmodule
 
@@ -295,11 +343,13 @@ instance LieIdeal.lieRingModule {R L : Type _} [CommRing R] [LieRing L] [LieAlge
 #align lie_ideal.lie_ring_module LieIdeal.lieRingModule
 -/
 
+#print LieIdeal.coe_bracket_of_module /-
 @[simp]
 theorem LieIdeal.coe_bracket_of_module {R L : Type _} [CommRing R] [LieRing L] [LieAlgebra R L]
     (I : LieIdeal R L) [LieRingModule L M] (x : I) (m : M) : ⁅x, m⁆ = ⁅(↑x : L), m⁆ :=
   LieSubalgebra.coe_bracket_of_module (I : LieSubalgebra R L) x m
 #align lie_ideal.coe_bracket_of_module LieIdeal.coe_bracket_of_module
+-/
 
 #print LieIdeal.lieModule /-
 /-- Transfer the `lie_module` instance from the coercion `lie_ideal → lie_subalgebra`. -/
@@ -312,6 +362,7 @@ end LieIdeal
 
 variable {R M}
 
+#print Submodule.exists_lieSubmodule_coe_eq_iff /-
 theorem Submodule.exists_lieSubmodule_coe_eq_iff (p : Submodule R M) :
     (∃ N : LieSubmodule R L M, ↑N = p) ↔ ∀ (x : L) (m : M), m ∈ p → ⁅x, m⁆ ∈ p :=
   by
@@ -319,6 +370,7 @@ theorem Submodule.exists_lieSubmodule_coe_eq_iff (p : Submodule R M) :
   · rintro ⟨N, rfl⟩ _ _; exact N.lie_mem
   · intro h; use { p with lie_mem := h }; exact LieSubmodule.coe_toSubmodule_mk p _
 #align submodule.exists_lie_submodule_coe_eq_iff Submodule.exists_lieSubmodule_coe_eq_iff
+-/
 
 namespace LieSubalgebra
 
@@ -356,6 +408,7 @@ theorem exists_lieIdeal_coe_eq_iff : (∃ I : LieIdeal R L, ↑I = K) ↔ ∀ x
 #align lie_subalgebra.exists_lie_ideal_coe_eq_iff LieSubalgebra.exists_lieIdeal_coe_eq_iff
 -/
 
+#print LieSubalgebra.exists_nested_lieIdeal_coe_eq_iff /-
 theorem exists_nested_lieIdeal_coe_eq_iff {K' : LieSubalgebra R L} (h : K ≤ K') :
     (∃ I : LieIdeal R K', ↑I = ofLe h) ↔ ∀ x y : L, x ∈ K' → y ∈ K → ⁅x, y⁆ ∈ K :=
   by
@@ -364,6 +417,7 @@ theorem exists_nested_lieIdeal_coe_eq_iff {K' : LieSubalgebra R L} (h : K ≤ K'
   · intro h' x y hx hy; exact h' ⟨x, hx⟩ ⟨y, h hy⟩ hy
   · rintro h' ⟨x, hx⟩ ⟨y, hy⟩ hy'; exact h' x y hx hy'
 #align lie_subalgebra.exists_nested_lie_ideal_coe_eq_iff LieSubalgebra.exists_nested_lieIdeal_coe_eq_iff
+-/
 
 end LieSubalgebra
 
@@ -383,50 +437,66 @@ section LatticeStructure
 
 open Set
 
+#print LieSubmodule.coe_injective /-
 theorem coe_injective : Function.Injective (coe : LieSubmodule R L M → Set M) :=
   SetLike.coe_injective
 #align lie_submodule.coe_injective LieSubmodule.coe_injective
+-/
 
+#print LieSubmodule.coeSubmodule_le_coeSubmodule /-
 @[simp, norm_cast]
 theorem coeSubmodule_le_coeSubmodule : (N : Submodule R M) ≤ N' ↔ N ≤ N' :=
   Iff.rfl
 #align lie_submodule.coe_submodule_le_coe_submodule LieSubmodule.coeSubmodule_le_coeSubmodule
+-/
 
 instance : Bot (LieSubmodule R L M) :=
   ⟨0⟩
 
+#print LieSubmodule.bot_coe /-
 @[simp]
 theorem bot_coe : ((⊥ : LieSubmodule R L M) : Set M) = {0} :=
   rfl
 #align lie_submodule.bot_coe LieSubmodule.bot_coe
+-/
 
+#print LieSubmodule.bot_coeSubmodule /-
 @[simp]
 theorem bot_coeSubmodule : ((⊥ : LieSubmodule R L M) : Submodule R M) = ⊥ :=
   rfl
 #align lie_submodule.bot_coe_submodule LieSubmodule.bot_coeSubmodule
+-/
 
+#print LieSubmodule.mem_bot /-
 @[simp]
 theorem mem_bot (x : M) : x ∈ (⊥ : LieSubmodule R L M) ↔ x = 0 :=
   mem_singleton_iff
 #align lie_submodule.mem_bot LieSubmodule.mem_bot
+-/
 
 instance : Top (LieSubmodule R L M) :=
   ⟨{ (⊤ : Submodule R M) with lie_mem := fun x m h => mem_univ ⁅x, m⁆ }⟩
 
+#print LieSubmodule.top_coe /-
 @[simp]
 theorem top_coe : ((⊤ : LieSubmodule R L M) : Set M) = univ :=
   rfl
 #align lie_submodule.top_coe LieSubmodule.top_coe
+-/
 
+#print LieSubmodule.top_coeSubmodule /-
 @[simp]
 theorem top_coeSubmodule : ((⊤ : LieSubmodule R L M) : Submodule R M) = ⊤ :=
   rfl
 #align lie_submodule.top_coe_submodule LieSubmodule.top_coeSubmodule
+-/
 
+#print LieSubmodule.mem_top /-
 @[simp]
 theorem mem_top (x : M) : x ∈ (⊤ : LieSubmodule R L M) :=
   mem_univ x
 #align lie_submodule.mem_top LieSubmodule.mem_top
+-/
 
 instance : Inf (LieSubmodule R L M) :=
   ⟨fun N N' =>
@@ -445,12 +515,15 @@ instance : InfSet (LieSubmodule R L M) :=
           forall_apply_eq_imp_iff₂, exists_imp] at *
         intro N hN; apply N.lie_mem (h N hN) }⟩
 
+#print LieSubmodule.inf_coe /-
 @[simp]
 theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
   rfl
 #align lie_submodule.inf_coe LieSubmodule.inf_coe
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+#print LieSubmodule.sInf_coe_toSubmodule /-
 @[simp]
 theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
     (↑(sInf S) : Submodule R M) =
@@ -458,7 +531,9 @@ theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
         "./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
   rfl
 #align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_toSubmodule
+-/
 
+#print LieSubmodule.sInf_coe /-
 @[simp]
 theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s ∈ S, (s : Set M) :=
   by
@@ -466,7 +541,9 @@ theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s
   ext m
   simpa only [mem_Inter, mem_set_of_eq, forall_apply_eq_imp_iff₂, exists_imp]
 #align lie_submodule.Inf_coe LieSubmodule.sInf_coe
+-/
 
+#print LieSubmodule.sInf_glb /-
 theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   by
   have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' := by intros; rfl
@@ -474,6 +551,7 @@ theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   simp only [Inf_coe]
   exact isGLB_biInf
 #align lie_submodule.Inf_glb LieSubmodule.sInf_glb
+-/
 
 /-- The set of Lie submodules of a Lie module form a complete lattice.
 
@@ -502,11 +580,14 @@ instance : AddCommMonoid (LieSubmodule R L M)
   add_zero _ := sup_bot_eq
   add_comm _ _ := sup_comm
 
+#print LieSubmodule.add_eq_sup /-
 @[simp]
 theorem add_eq_sup : N + N' = N ⊔ N' :=
   rfl
 #align lie_submodule.add_eq_sup LieSubmodule.add_eq_sup
+-/
 
+#print LieSubmodule.sup_coe_toSubmodule /-
 @[norm_cast, simp]
 theorem sup_coe_toSubmodule :
     (↑(N ⊔ N') : Submodule R M) = (N : Submodule R M) ⊔ (N' : Submodule R M) :=
@@ -522,32 +603,43 @@ theorem sup_coe_toSubmodule :
       coe_submodule_le_coe_submodule, and_self_iff, le_sup_left, le_sup_right]
   · simp
 #align lie_submodule.sup_coe_to_submodule LieSubmodule.sup_coe_toSubmodule
+-/
 
+#print LieSubmodule.inf_coe_toSubmodule /-
 @[norm_cast, simp]
 theorem inf_coe_toSubmodule :
     (↑(N ⊓ N') : Submodule R M) = (N : Submodule R M) ⊓ (N' : Submodule R M) :=
   rfl
 #align lie_submodule.inf_coe_to_submodule LieSubmodule.inf_coe_toSubmodule
+-/
 
+#print LieSubmodule.mem_inf /-
 @[simp]
 theorem mem_inf (x : M) : x ∈ N ⊓ N' ↔ x ∈ N ∧ x ∈ N' := by
   rw [← mem_coe_submodule, ← mem_coe_submodule, ← mem_coe_submodule, inf_coe_to_submodule,
     Submodule.mem_inf]
 #align lie_submodule.mem_inf LieSubmodule.mem_inf
+-/
 
+#print LieSubmodule.mem_sup /-
 theorem mem_sup (x : M) : x ∈ N ⊔ N' ↔ ∃ y ∈ N, ∃ z ∈ N', y + z = x := by
   rw [← mem_coe_submodule, sup_coe_to_submodule, Submodule.mem_sup]; exact Iff.rfl
 #align lie_submodule.mem_sup LieSubmodule.mem_sup
+-/
 
+#print LieSubmodule.eq_bot_iff /-
 theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 := by rw [eq_bot_iff]; exact Iff.rfl
 #align lie_submodule.eq_bot_iff LieSubmodule.eq_bot_iff
+-/
 
+#print LieSubmodule.subsingleton_of_bot /-
 instance subsingleton_of_bot : Subsingleton (LieSubmodule R L ↥(⊥ : LieSubmodule R L M)) :=
   by
   apply subsingleton_of_bot_eq_top
   ext ⟨x, hx⟩; change x ∈ ⊥ at hx ; rw [LieSubmodule.mem_bot] at hx ; subst hx
   simp only [true_iff_iff, eq_self_iff_true, Submodule.mk_eq_zero, LieSubmodule.mem_bot]
 #align lie_submodule.subsingleton_of_bot LieSubmodule.subsingleton_of_bot
+-/
 
 instance : IsModularLattice (LieSubmodule R L M)
     where sup_inf_le_assoc_of_le N₁ N₂ N₃ :=
@@ -557,6 +649,7 @@ instance : IsModularLattice (LieSubmodule R L M)
 
 variable (R L M)
 
+#print LieSubmodule.wellFounded_of_noetherian /-
 theorem wellFounded_of_noetherian [IsNoetherian R M] :
     WellFounded ((· > ·) : LieSubmodule R L M → LieSubmodule R L M → Prop) :=
   let f :
@@ -566,7 +659,9 @@ theorem wellFounded_of_noetherian [IsNoetherian R M] :
       map_rel' := fun N N' h => h }
   RelHomClass.wellFounded f (isNoetherian_iff_wellFounded.mp inferInstance)
 #align lie_submodule.well_founded_of_noetherian LieSubmodule.wellFounded_of_noetherian
+-/
 
+#print LieSubmodule.subsingleton_iff /-
 @[simp]
 theorem subsingleton_iff : Subsingleton (LieSubmodule R L M) ↔ Subsingleton M :=
   have h : Subsingleton (LieSubmodule R L M) ↔ Subsingleton (Submodule R M) := by
@@ -574,17 +669,21 @@ theorem subsingleton_iff : Subsingleton (LieSubmodule R L M) ↔ Subsingleton M
       top_coe_submodule, bot_coe_submodule]
   h.trans <| Submodule.subsingleton_iff R
 #align lie_submodule.subsingleton_iff LieSubmodule.subsingleton_iff
+-/
 
+#print LieSubmodule.nontrivial_iff /-
 @[simp]
 theorem nontrivial_iff : Nontrivial (LieSubmodule R L M) ↔ Nontrivial M :=
   not_iff_not.mp
     ((not_nontrivial_iff_subsingleton.trans <| subsingleton_iff R L M).trans
       not_nontrivial_iff_subsingleton.symm)
 #align lie_submodule.nontrivial_iff LieSubmodule.nontrivial_iff
+-/
 
 instance [Nontrivial M] : Nontrivial (LieSubmodule R L M) :=
   (nontrivial_iff R L M).mpr ‹_›
 
+#print LieSubmodule.nontrivial_iff_ne_bot /-
 theorem nontrivial_iff_ne_bot {N : LieSubmodule R L M} : Nontrivial N ↔ N ≠ ⊥ :=
   by
   constructor <;> contrapose!
@@ -595,49 +694,66 @@ theorem nontrivial_iff_ne_bot {N : LieSubmodule R L M} : Nontrivial N ↔ N ≠
     rintro ⟨h⟩ m hm
     simpa using h ⟨m, hm⟩ ⟨_, N.zero_mem⟩
 #align lie_submodule.nontrivial_iff_ne_bot LieSubmodule.nontrivial_iff_ne_bot
+-/
 
 variable {R L M}
 
 section InclusionMaps
 
+#print LieSubmodule.incl /-
 /-- The inclusion of a Lie submodule into its ambient space is a morphism of Lie modules. -/
 def incl : N →ₗ⁅R,L⁆ M :=
   { Submodule.subtype (N : Submodule R M) with map_lie' := fun x m => rfl }
 #align lie_submodule.incl LieSubmodule.incl
+-/
 
+#print LieSubmodule.incl_coe /-
 @[simp]
 theorem incl_coe : (N.incl : N →ₗ[R] M) = (N : Submodule R M).Subtype :=
   rfl
 #align lie_submodule.incl_coe LieSubmodule.incl_coe
+-/
 
+#print LieSubmodule.incl_apply /-
 @[simp]
 theorem incl_apply (m : N) : N.incl m = m :=
   rfl
 #align lie_submodule.incl_apply LieSubmodule.incl_apply
+-/
 
+#print LieSubmodule.incl_eq_val /-
 theorem incl_eq_val : (N.incl : N → M) = Subtype.val :=
   rfl
 #align lie_submodule.incl_eq_val LieSubmodule.incl_eq_val
+-/
 
 variable {N N'} (h : N ≤ N')
 
+#print LieSubmodule.homOfLe /-
 /-- Given two nested Lie submodules `N ⊆ N'`, the inclusion `N ↪ N'` is a morphism of Lie modules.-/
 def homOfLe : N →ₗ⁅R,L⁆ N' :=
   { Submodule.ofLe (show N.toSubmodule ≤ N'.toSubmodule from h) with map_lie' := fun x m => rfl }
 #align lie_submodule.hom_of_le LieSubmodule.homOfLe
+-/
 
+#print LieSubmodule.coe_homOfLe /-
 @[simp]
 theorem coe_homOfLe (m : N) : (homOfLe h m : M) = m :=
   rfl
 #align lie_submodule.coe_hom_of_le LieSubmodule.coe_homOfLe
+-/
 
+#print LieSubmodule.homOfLe_apply /-
 theorem homOfLe_apply (m : N) : homOfLe h m = ⟨m.1, h m.2⟩ :=
   rfl
 #align lie_submodule.hom_of_le_apply LieSubmodule.homOfLe_apply
+-/
 
+#print LieSubmodule.homOfLe_injective /-
 theorem homOfLe_injective : Function.Injective (homOfLe h) := fun x y => by
   simp only [hom_of_le_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe, Subtype.val_eq_coe]
 #align lie_submodule.hom_of_le_injective LieSubmodule.homOfLe_injective
+-/
 
 end InclusionMaps
 
@@ -645,40 +761,55 @@ section LieSpan
 
 variable (R L) (s : Set M)
 
+#print LieSubmodule.lieSpan /-
 /-- The `lie_span` of a set `s ⊆ M` is the smallest Lie submodule of `M` that contains `s`. -/
 def lieSpan : LieSubmodule R L M :=
   sInf {N | s ⊆ N}
 #align lie_submodule.lie_span LieSubmodule.lieSpan
+-/
 
 variable {R L s}
 
+#print LieSubmodule.mem_lieSpan /-
 theorem mem_lieSpan {x : M} : x ∈ lieSpan R L s ↔ ∀ N : LieSubmodule R L M, s ⊆ N → x ∈ N := by
   change x ∈ (lie_span R L s : Set M) ↔ _; erw [Inf_coe]; exact mem_Inter₂
 #align lie_submodule.mem_lie_span LieSubmodule.mem_lieSpan
+-/
 
+#print LieSubmodule.subset_lieSpan /-
 theorem subset_lieSpan : s ⊆ lieSpan R L s := by intro m hm; erw [mem_lie_span]; intro N hN;
   exact hN hm
 #align lie_submodule.subset_lie_span LieSubmodule.subset_lieSpan
+-/
 
+#print LieSubmodule.submodule_span_le_lieSpan /-
 theorem submodule_span_le_lieSpan : Submodule.span R s ≤ lieSpan R L s := by rw [Submodule.span_le];
   apply subset_lie_span
 #align lie_submodule.submodule_span_le_lie_span LieSubmodule.submodule_span_le_lieSpan
+-/
 
+#print LieSubmodule.lieSpan_le /-
 theorem lieSpan_le {N} : lieSpan R L s ≤ N ↔ s ⊆ N :=
   by
   constructor
   · exact subset.trans subset_lie_span
   · intro hs m hm; rw [mem_lie_span] at hm ; exact hm _ hs
 #align lie_submodule.lie_span_le LieSubmodule.lieSpan_le
+-/
 
+#print LieSubmodule.lieSpan_mono /-
 theorem lieSpan_mono {t : Set M} (h : s ⊆ t) : lieSpan R L s ≤ lieSpan R L t := by rw [lie_span_le];
   exact subset.trans h subset_lie_span
 #align lie_submodule.lie_span_mono LieSubmodule.lieSpan_mono
+-/
 
+#print LieSubmodule.lieSpan_eq /-
 theorem lieSpan_eq : lieSpan R L (N : Set M) = N :=
   le_antisymm (lieSpan_le.mpr rfl.Subset) subset_lieSpan
 #align lie_submodule.lie_span_eq LieSubmodule.lieSpan_eq
+-/
 
+#print LieSubmodule.coe_lieSpan_submodule_eq_iff /-
 theorem coe_lieSpan_submodule_eq_iff {p : Submodule R M} :
     (lieSpan R L (p : Set M) : Submodule R M) = p ↔ ∃ N : LieSubmodule R L M, ↑N = p :=
   by
@@ -686,9 +817,11 @@ theorem coe_lieSpan_submodule_eq_iff {p : Submodule R M} :
   · intro x m hm; rw [← h, mem_coe_submodule]; exact lie_mem _ (subset_lie_span hm)
   · rw [← coe_to_submodule_mk p h, coe_to_submodule, coe_to_submodule_eq_iff, lie_span_eq]
 #align lie_submodule.coe_lie_span_submodule_eq_iff LieSubmodule.coe_lieSpan_submodule_eq_iff
+-/
 
 variable (R L M)
 
+#print LieSubmodule.gi /-
 /-- `lie_span` forms a Galois insertion with the coercion from `lie_submodule` to `set`. -/
 protected def gi : GaloisInsertion (lieSpan R L : Set M → LieSubmodule R L M) coe
     where
@@ -697,30 +830,41 @@ protected def gi : GaloisInsertion (lieSpan R L : Set M → LieSubmodule R L M)
   le_l_u s := subset_lieSpan
   choice_eq s h := rfl
 #align lie_submodule.gi LieSubmodule.gi
+-/
 
+#print LieSubmodule.span_empty /-
 @[simp]
 theorem span_empty : lieSpan R L (∅ : Set M) = ⊥ :=
   (LieSubmodule.gi R L M).gc.l_bot
 #align lie_submodule.span_empty LieSubmodule.span_empty
+-/
 
+#print LieSubmodule.span_univ /-
 @[simp]
 theorem span_univ : lieSpan R L (Set.univ : Set M) = ⊤ :=
   eq_top_iff.2 <| SetLike.le_def.2 <| subset_lieSpan
 #align lie_submodule.span_univ LieSubmodule.span_univ
+-/
 
+#print LieSubmodule.lieSpan_eq_bot_iff /-
 theorem lieSpan_eq_bot_iff : lieSpan R L s = ⊥ ↔ ∀ m ∈ s, m = (0 : M) := by
   rw [_root_.eq_bot_iff, lie_span_le, bot_coe, subset_singleton_iff]
 #align lie_submodule.lie_span_eq_bot_iff LieSubmodule.lieSpan_eq_bot_iff
+-/
 
 variable {M}
 
+#print LieSubmodule.span_union /-
 theorem span_union (s t : Set M) : lieSpan R L (s ∪ t) = lieSpan R L s ⊔ lieSpan R L t :=
   (LieSubmodule.gi R L M).gc.l_sup
 #align lie_submodule.span_union LieSubmodule.span_union
+-/
 
+#print LieSubmodule.span_iUnion /-
 theorem span_iUnion {ι} (s : ι → Set M) : lieSpan R L (⋃ i, s i) = ⨆ i, lieSpan R L (s i) :=
   (LieSubmodule.gi R L M).gc.l_iSup
 #align lie_submodule.span_Union LieSubmodule.span_iUnion
+-/
 
 end LieSpan
 
@@ -742,6 +886,7 @@ namespace LieSubmodule
 
 variable (f : M →ₗ⁅R,L⁆ M') (N N₂ : LieSubmodule R L M) (N' : LieSubmodule R L M')
 
+#print LieSubmodule.map /-
 /-- A morphism of Lie modules `f : M → M'` pushes forward Lie submodules of `M` to Lie submodules
 of `M'`. -/
 def map : LieSubmodule R L M' :=
@@ -751,62 +896,83 @@ def map : LieSubmodule R L M' :=
       · apply N.lie_mem hm
       · norm_cast at hfm ; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
+-/
 
+#print LieSubmodule.coeSubmodule_map /-
 @[simp]
 theorem coeSubmodule_map : (N.map f : Submodule R M') = (N : Submodule R M).map (f : M →ₗ[R] M') :=
   rfl
 #align lie_submodule.coe_submodule_map LieSubmodule.coeSubmodule_map
+-/
 
+#print LieSubmodule.comap /-
 /-- A morphism of Lie modules `f : M → M'` pulls back Lie submodules of `M'` to Lie submodules of
 `M`. -/
 def comap : LieSubmodule R L M :=
   { (N' : Submodule R M').comap (f : M →ₗ[R] M') with
     lie_mem := fun x m h => by suffices ⁅x, f m⁆ ∈ N' by simp [this]; apply N'.lie_mem h }
 #align lie_submodule.comap LieSubmodule.comap
+-/
 
+#print LieSubmodule.coeSubmodule_comap /-
 @[simp]
 theorem coeSubmodule_comap :
     (N'.comap f : Submodule R M) = (N' : Submodule R M').comap (f : M →ₗ[R] M') :=
   rfl
 #align lie_submodule.coe_submodule_comap LieSubmodule.coeSubmodule_comap
+-/
 
 variable {f N N₂ N'}
 
+#print LieSubmodule.map_le_iff_le_comap /-
 theorem map_le_iff_le_comap : map f N ≤ N' ↔ N ≤ comap f N' :=
   Set.image_subset_iff
 #align lie_submodule.map_le_iff_le_comap LieSubmodule.map_le_iff_le_comap
+-/
 
 variable (f)
 
+#print LieSubmodule.gc_map_comap /-
 theorem gc_map_comap : GaloisConnection (map f) (comap f) := fun N N' => map_le_iff_le_comap
 #align lie_submodule.gc_map_comap LieSubmodule.gc_map_comap
+-/
 
 variable {f}
 
+#print LieSubmodule.map_sup /-
 @[simp]
 theorem map_sup : (N ⊔ N₂).map f = N.map f ⊔ N₂.map f :=
   (gc_map_comap f).l_sup
 #align lie_submodule.map_sup LieSubmodule.map_sup
+-/
 
+#print LieSubmodule.mem_map /-
 theorem mem_map (m' : M') : m' ∈ N.map f ↔ ∃ m, m ∈ N ∧ f m = m' :=
   Submodule.mem_map
 #align lie_submodule.mem_map LieSubmodule.mem_map
+-/
 
+#print LieSubmodule.mem_comap /-
 @[simp]
 theorem mem_comap {m : M} : m ∈ comap f N' ↔ f m ∈ N' :=
   Iff.rfl
 #align lie_submodule.mem_comap LieSubmodule.mem_comap
+-/
 
+#print LieSubmodule.comap_incl_eq_top /-
 theorem comap_incl_eq_top : N₂.comap N.incl = ⊤ ↔ N ≤ N₂ := by
   simpa only [← LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.coeSubmodule_comap,
     LieSubmodule.incl_coe, LieSubmodule.top_coeSubmodule, Submodule.comap_subtype_eq_top]
 #align lie_submodule.comap_incl_eq_top LieSubmodule.comap_incl_eq_top
+-/
 
+#print LieSubmodule.comap_incl_eq_bot /-
 theorem comap_incl_eq_bot : N₂.comap N.incl = ⊥ ↔ N ⊓ N₂ = ⊥ := by
   simpa only [_root_.eq_bot_iff, ← LieSubmodule.coe_toSubmodule_eq_iff,
     LieSubmodule.coeSubmodule_comap, LieSubmodule.incl_coe, LieSubmodule.bot_coeSubmodule, ←
     Submodule.disjoint_iff_comap_eq_bot, disjoint_iff]
 #align lie_submodule.comap_incl_eq_bot LieSubmodule.comap_incl_eq_bot
+-/
 
 end LieSubmodule
 
@@ -859,9 +1025,11 @@ theorem comap_coeSubmodule :
 #align lie_ideal.comap_coe_submodule LieIdeal.comap_coeSubmodule
 -/
 
+#print LieIdeal.map_le /-
 theorem map_le : map f I ≤ J ↔ f '' I ⊆ J :=
   LieSubmodule.lieSpan_le
 #align lie_ideal.map_le LieIdeal.map_le
+-/
 
 variable {f I I₂ J}
 
@@ -878,9 +1046,11 @@ theorem mem_comap {x : L} : x ∈ comap f J ↔ f x ∈ J :=
 #align lie_ideal.mem_comap LieIdeal.mem_comap
 -/
 
+#print LieIdeal.map_le_iff_le_comap /-
 theorem map_le_iff_le_comap : map f I ≤ J ↔ I ≤ comap f J := by rw [map_le];
   exact Set.image_subset_iff
 #align lie_ideal.map_le_iff_le_comap LieIdeal.map_le_iff_le_comap
+-/
 
 variable (f)
 
@@ -898,12 +1068,16 @@ theorem map_sup : (I ⊔ I₂).map f = I.map f ⊔ I₂.map f :=
 #align lie_ideal.map_sup LieIdeal.map_sup
 -/
 
+#print LieIdeal.map_comap_le /-
 theorem map_comap_le : map f (comap f J) ≤ J := by rw [map_le_iff_le_comap]; exact le_rfl
 #align lie_ideal.map_comap_le LieIdeal.map_comap_le
+-/
 
+#print LieIdeal.comap_map_le /-
 /-- See also `lie_ideal.map_comap_eq`. -/
 theorem comap_map_le : I ≤ comap f (map f I) := by rw [← map_le_iff_le_comap]; exact le_rfl
 #align lie_ideal.comap_map_le LieIdeal.comap_map_le
+-/
 
 #print LieIdeal.map_mono /-
 @[mono]
@@ -989,6 +1163,7 @@ theorem isIdealMorphism_def : f.IsIdealMorphism ↔ (f.idealRange : LieSubalgebr
 #align lie_hom.is_ideal_morphism_def LieHom.isIdealMorphism_def
 -/
 
+#print LieHom.isIdealMorphism_iff /-
 theorem isIdealMorphism_iff : f.IsIdealMorphism ↔ ∀ (x : L') (y : L), ∃ z : L, ⁅x, f y⁆ = f z :=
   by
   simp only [is_ideal_morphism_def, ideal_range_eq_lie_span_range, ←
@@ -1000,6 +1175,7 @@ theorem isIdealMorphism_iff : f.IsIdealMorphism ↔ ∀ (x : L') (y : L), ∃ z
   · intro h x y; obtain ⟨z, hz⟩ := h x (f y) y rfl; use z; exact hz.symm
   · intro h x y z hz; obtain ⟨w, hw⟩ := h x z; use w; rw [← hw, hz]
 #align lie_hom.is_ideal_morphism_iff LieHom.isIdealMorphism_iff
+-/
 
 #print LieHom.range_subset_idealRange /-
 theorem range_subset_idealRange : (f.range : Set L') ⊆ f.idealRange :=
@@ -1007,15 +1183,19 @@ theorem range_subset_idealRange : (f.range : Set L') ⊆ f.idealRange :=
 #align lie_hom.range_subset_ideal_range LieHom.range_subset_idealRange
 -/
 
+#print LieHom.map_le_idealRange /-
 theorem map_le_idealRange : I.map f ≤ f.idealRange :=
   by
   rw [f.ideal_range_eq_map]
   exact LieIdeal.map_mono le_top
 #align lie_hom.map_le_ideal_range LieHom.map_le_idealRange
+-/
 
+#print LieHom.ker_le_comap /-
 theorem ker_le_comap : f.ker ≤ J.comap f :=
   LieIdeal.comap_mono bot_le
 #align lie_hom.ker_le_comap LieHom.ker_le_comap
+-/
 
 #print LieHom.ker_coeSubmodule /-
 @[simp]
@@ -1049,12 +1229,14 @@ theorem mem_idealRange_iff (h : IsIdealMorphism f) {y : L'} : y ∈ idealRange f
 #align lie_hom.mem_ideal_range_iff LieHom.mem_idealRange_iff
 -/
 
+#print LieHom.le_ker_iff /-
 theorem le_ker_iff : I ≤ f.ker ↔ ∀ x, x ∈ I → f x = 0 :=
   by
   constructor <;> intro h x hx
   · specialize h hx; rw [mem_ker] at h ; exact h
   · rw [mem_ker]; apply h x hx
 #align lie_hom.le_ker_iff LieHom.le_ker_iff
+-/
 
 #print LieHom.ker_eq_bot /-
 theorem ker_eq_bot : f.ker = ⊥ ↔ Function.Injective f := by
@@ -1070,12 +1252,15 @@ theorem range_coeSubmodule : (f.range : Submodule R L') = (f : L →ₗ[R] L').r
 #align lie_hom.range_coe_submodule LieHom.range_coeSubmodule
 -/
 
+#print LieHom.range_eq_top /-
 theorem range_eq_top : f.range = ⊤ ↔ Function.Surjective f :=
   by
   rw [← LieSubalgebra.coe_to_submodule_eq_iff, range_coe_submodule, LieSubalgebra.top_coe_submodule]
   exact LinearMap.range_eq_top
 #align lie_hom.range_eq_top LieHom.range_eq_top
+-/
 
+#print LieHom.idealRange_eq_top_of_surjective /-
 @[simp]
 theorem idealRange_eq_top_of_surjective (h : Function.Surjective f) : f.idealRange = ⊤ :=
   by
@@ -1086,11 +1271,14 @@ theorem idealRange_eq_top_of_surjective (h : Function.Surjective f) : f.idealRan
   use ⊤
   exact LieSubmodule.top_coeSubmodule
 #align lie_hom.ideal_range_eq_top_of_surjective LieHom.idealRange_eq_top_of_surjective
+-/
 
+#print LieHom.isIdealMorphism_of_surjective /-
 theorem isIdealMorphism_of_surjective (h : Function.Surjective f) : f.IsIdealMorphism := by
   rw [is_ideal_morphism_def, f.ideal_range_eq_top_of_surjective h, f.range_eq_top.mpr h,
     LieIdeal.top_coe_lieSubalgebra]
 #align lie_hom.is_ideal_morphism_of_surjective LieHom.isIdealMorphism_of_surjective
+-/
 
 end LieHom
 
@@ -1105,6 +1293,7 @@ theorem map_eq_bot_iff : I.map f = ⊥ ↔ I ≤ f.ker := by rw [← le_bot_iff]
 #align lie_ideal.map_eq_bot_iff LieIdeal.map_eq_bot_iff
 -/
 
+#print LieIdeal.coe_map_of_surjective /-
 theorem coe_map_of_surjective (h : Function.Surjective f) :
     (I.map f : Submodule R L') = (I : Submodule R L).map (f : L →ₗ[R] L') :=
   by
@@ -1123,7 +1312,9 @@ theorem coe_map_of_surjective (h : Function.Surjective f) :
   use J
   apply LieSubmodule.coe_toSubmodule_mk
 #align lie_ideal.coe_map_of_surjective LieIdeal.coe_map_of_surjective
+-/
 
+#print LieIdeal.mem_map_of_surjective /-
 theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y ∈ I.map f) :
     ∃ x : I, f x = y :=
   by
@@ -1132,32 +1323,43 @@ theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y
   use ⟨x, hx⟩
   rfl
 #align lie_ideal.mem_map_of_surjective LieIdeal.mem_map_of_surjective
+-/
 
+#print LieIdeal.bot_of_map_eq_bot /-
 theorem bot_of_map_eq_bot {I : LieIdeal R L} (h₁ : Function.Injective f) (h₂ : I.map f = ⊥) :
     I = ⊥ := by
   rw [← f.ker_eq_bot] at h₁ ; change comap f ⊥ = ⊥ at h₁ 
   rw [eq_bot_iff, map_le_iff_le_comap, h₁] at h₂ 
   rw [eq_bot_iff]; exact h₂
 #align lie_ideal.bot_of_map_eq_bot LieIdeal.bot_of_map_eq_bot
+-/
 
+#print LieIdeal.homOfLe /-
 /-- Given two nested Lie ideals `I₁ ⊆ I₂`, the inclusion `I₁ ↪ I₂` is a morphism of Lie algebras. -/
 def homOfLe {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : I₁ →ₗ⁅R⁆ I₂ :=
   { Submodule.ofLe (show I₁.toSubmodule ≤ I₂.toSubmodule from h) with map_lie' := fun x y => rfl }
 #align lie_ideal.hom_of_le LieIdeal.homOfLe
+-/
 
+#print LieIdeal.coe_homOfLe /-
 @[simp]
 theorem coe_homOfLe {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : (homOfLe h x : L) = x :=
   rfl
 #align lie_ideal.coe_hom_of_le LieIdeal.coe_homOfLe
+-/
 
+#print LieIdeal.homOfLe_apply /-
 theorem homOfLe_apply {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : homOfLe h x = ⟨x.1, h x.2⟩ :=
   rfl
 #align lie_ideal.hom_of_le_apply LieIdeal.homOfLe_apply
+-/
 
+#print LieIdeal.homOfLe_injective /-
 theorem homOfLe_injective {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : Function.Injective (homOfLe h) :=
   fun x y => by
   simp only [hom_of_le_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe, Subtype.val_eq_coe]
 #align lie_ideal.hom_of_le_injective LieIdeal.homOfLe_injective
+-/
 
 #print LieIdeal.map_sup_ker_eq_map /-
 @[simp]
@@ -1274,66 +1476,90 @@ variable [AddCommGroup N] [Module R N] [LieRingModule L N] [LieModule R L N]
 
 variable (f : M →ₗ⁅R,L⁆ N)
 
+#print LieModuleHom.ker /-
 /-- The kernel of a morphism of Lie algebras, as an ideal in the domain. -/
 def ker : LieSubmodule R L M :=
   LieSubmodule.comap f ⊥
 #align lie_module_hom.ker LieModuleHom.ker
+-/
 
+#print LieModuleHom.ker_coeSubmodule /-
 @[simp]
 theorem ker_coeSubmodule : (f.ker : Submodule R M) = (f : M →ₗ[R] N).ker :=
   rfl
 #align lie_module_hom.ker_coe_submodule LieModuleHom.ker_coeSubmodule
+-/
 
+#print LieModuleHom.ker_eq_bot /-
 theorem ker_eq_bot : f.ker = ⊥ ↔ Function.Injective f := by
   rw [← LieSubmodule.coe_toSubmodule_eq_iff, ker_coe_submodule, LieSubmodule.bot_coeSubmodule,
     LinearMap.ker_eq_bot, coe_to_linear_map]
 #align lie_module_hom.ker_eq_bot LieModuleHom.ker_eq_bot
+-/
 
 variable {f}
 
+#print LieModuleHom.mem_ker /-
 @[simp]
 theorem mem_ker (m : M) : m ∈ f.ker ↔ f m = 0 :=
   Iff.rfl
 #align lie_module_hom.mem_ker LieModuleHom.mem_ker
+-/
 
+#print LieModuleHom.ker_id /-
 @[simp]
 theorem ker_id : (LieModuleHom.id : M →ₗ⁅R,L⁆ M).ker = ⊥ :=
   rfl
 #align lie_module_hom.ker_id LieModuleHom.ker_id
+-/
 
+#print LieModuleHom.comp_ker_incl /-
 @[simp]
 theorem comp_ker_incl : f.comp f.ker.incl = 0 := by ext ⟨m, hm⟩; exact (mem_ker m).mp hm
 #align lie_module_hom.comp_ker_incl LieModuleHom.comp_ker_incl
+-/
 
+#print LieModuleHom.le_ker_iff_map /-
 theorem le_ker_iff_map (M' : LieSubmodule R L M) : M' ≤ f.ker ↔ LieSubmodule.map f M' = ⊥ := by
   rw [ker, eq_bot_iff, LieSubmodule.map_le_iff_le_comap]
 #align lie_module_hom.le_ker_iff_map LieModuleHom.le_ker_iff_map
+-/
 
 variable (f)
 
+#print LieModuleHom.range /-
 /-- The range of a morphism of Lie modules `f : M → N` is a Lie submodule of `N`.
 See Note [range copy pattern]. -/
 def range : LieSubmodule R L N :=
   (LieSubmodule.map f ⊤).copy (Set.range f) Set.image_univ.symm
 #align lie_module_hom.range LieModuleHom.range
+-/
 
+#print LieModuleHom.coe_range /-
 @[simp]
 theorem coe_range : (f.range : Set N) = Set.range f :=
   rfl
 #align lie_module_hom.coe_range LieModuleHom.coe_range
+-/
 
+#print LieModuleHom.coeSubmodule_range /-
 @[simp]
 theorem coeSubmodule_range : (f.range : Submodule R N) = (f : M →ₗ[R] N).range :=
   rfl
 #align lie_module_hom.coe_submodule_range LieModuleHom.coeSubmodule_range
+-/
 
+#print LieModuleHom.mem_range /-
 @[simp]
 theorem mem_range (n : N) : n ∈ f.range ↔ ∃ m, f m = n :=
   Iff.rfl
 #align lie_module_hom.mem_range LieModuleHom.mem_range
+-/
 
+#print LieModuleHom.map_top /-
 theorem map_top : LieSubmodule.map f ⊤ = f.range := by ext; simp [LieSubmodule.mem_map]
 #align lie_module_hom.map_top LieModuleHom.map_top
+-/
 
 end LieModuleHom
 
@@ -1347,17 +1573,23 @@ variable [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M]
 
 variable (N : LieSubmodule R L M)
 
+#print LieSubmodule.ker_incl /-
 @[simp]
 theorem ker_incl : N.incl.ker = ⊥ := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.ker_incl LieSubmodule.ker_incl
+-/
 
+#print LieSubmodule.range_incl /-
 @[simp]
 theorem range_incl : N.incl.range = N := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.range_incl LieSubmodule.range_incl
+-/
 
+#print LieSubmodule.comap_incl_self /-
 @[simp]
 theorem comap_incl_self : comap N.incl N = ⊤ := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.comap_incl_self LieSubmodule.comap_incl_self
+-/
 
 end LieSubmodule
 
@@ -1367,6 +1599,7 @@ variable {R : Type u} {L : Type v}
 
 variable [CommRing R] [LieRing L] [LieAlgebra R L]
 
+#print LieSubalgebra.topEquiv /-
 /-- The natural equivalence between the 'top' Lie subalgebra and the enclosing Lie algebra.
 
 This is the Lie subalgebra version of `submodule.top_equiv`. -/
@@ -1377,11 +1610,14 @@ def LieSubalgebra.topEquiv : (⊤ : LieSubalgebra R L) ≃ₗ⁅R⁆ L :=
     left_inv := fun x => by ext; rfl
     right_inv := fun x => rfl }
 #align lie_subalgebra.top_equiv LieSubalgebra.topEquiv
+-/
 
+#print LieSubalgebra.topEquiv_apply /-
 @[simp]
 theorem LieSubalgebra.topEquiv_apply (x : (⊤ : LieSubalgebra R L)) : LieSubalgebra.topEquiv x = x :=
   rfl
 #align lie_subalgebra.top_equiv_apply LieSubalgebra.topEquiv_apply
+-/
 
 #print LieIdeal.topEquiv /-
 /-- The natural equivalence between the 'top' Lie ideal and the enclosing Lie algebra.
Diff
@@ -433,12 +433,12 @@ instance : Inf (LieSubmodule R L M) :=
     { (N ⊓ N' : Submodule R M) with
       lie_mem := fun x m h => mem_inter (N.lie_mem h.1) (N'.lie_mem h.2) }⟩
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 instance : InfSet (LieSubmodule R L M) :=
   ⟨fun S =>
     {
       sInf
-        "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
+        "./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
       lie_mem := fun x m h =>
         by
         simp only [Submodule.mem_carrier, mem_Inter, Submodule.sInf_coe, mem_set_of_eq,
@@ -450,12 +450,12 @@ theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
   rfl
 #align lie_submodule.inf_coe LieSubmodule.inf_coe
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 @[simp]
 theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
     (↑(sInf S) : Submodule R M) =
       sInf
-        "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
+        "./././Mathport/Syntax/Translate/Expr.lean:372:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
   rfl
 #align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_toSubmodule
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Oliver Nash
 
 ! This file was ported from Lean 3 source module algebra.lie.submodule
-! leanprover-community/mathlib commit 9822b65bfc4ac74537d77ae318d27df1df662471
+! leanprover-community/mathlib commit af471b9e3ce868f296626d33189b4ce730fa4c00
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.RingTheory.Noetherian
 /-!
 # Lie submodules of a Lie algebra
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file we define Lie submodules and Lie ideals, we construct the lattice structure on Lie
 submodules and we use it to define various important operations, notably the Lie span of a subset
 of a Lie module.
@@ -86,9 +89,9 @@ theorem toSubmodule_eq_coe : N.toSubmodule = N :=
 #align lie_submodule.to_submodule_eq_coe LieSubmodule.toSubmodule_eq_coe
 
 @[norm_cast]
-theorem coe_to_submodule : ((N : Submodule R M) : Set M) = N :=
+theorem coe_toSubmodule : ((N : Submodule R M) : Set M) = N :=
   rfl
-#align lie_submodule.coe_to_submodule LieSubmodule.coe_to_submodule
+#align lie_submodule.coe_to_submodule LieSubmodule.coe_toSubmodule
 
 @[simp]
 theorem mem_carrier {x : M} : x ∈ N.carrier ↔ x ∈ (N : Set M) :=
@@ -121,20 +124,20 @@ theorem mk_eq_zero {x} (h : x ∈ N) : (⟨x, h⟩ : N) = 0 ↔ x = 0 :=
 #align lie_submodule.mk_eq_zero LieSubmodule.mk_eq_zero
 
 @[simp]
-theorem coe_to_set_mk (S : Set M) (h₁ h₂ h₃ h₄) :
+theorem coe_toSet_mk (S : Set M) (h₁ h₂ h₃ h₄) :
     ((⟨S, h₁, h₂, h₃, h₄⟩ : LieSubmodule R L M) : Set M) = S :=
   rfl
-#align lie_submodule.coe_to_set_mk LieSubmodule.coe_to_set_mk
+#align lie_submodule.coe_to_set_mk LieSubmodule.coe_toSet_mk
 
 @[simp]
-theorem coe_to_submodule_mk (p : Submodule R M) (h) :
+theorem coe_toSubmodule_mk (p : Submodule R M) (h) :
     (({ p with lie_mem := h } : LieSubmodule R L M) : Submodule R M) = p := by cases p; rfl
-#align lie_submodule.coe_to_submodule_mk LieSubmodule.coe_to_submodule_mk
+#align lie_submodule.coe_to_submodule_mk LieSubmodule.coe_toSubmodule_mk
 
-theorem coe_submodule_injective :
+theorem coeSubmodule_injective :
     Function.Injective (toSubmodule : LieSubmodule R L M → Submodule R M) := fun x y h => by
   cases x; cases y; congr; injection h
-#align lie_submodule.coe_submodule_injective LieSubmodule.coe_submodule_injective
+#align lie_submodule.coe_submodule_injective LieSubmodule.coeSubmodule_injective
 
 @[ext]
 theorem ext (h : ∀ m, m ∈ N ↔ m ∈ N') : N = N' :=
@@ -142,9 +145,9 @@ theorem ext (h : ∀ m, m ∈ N ↔ m ∈ N') : N = N' :=
 #align lie_submodule.ext LieSubmodule.ext
 
 @[simp]
-theorem coe_to_submodule_eq_iff : (N : Submodule R M) = (N' : Submodule R M) ↔ N = N' :=
-  coe_submodule_injective.eq_iff
-#align lie_submodule.coe_to_submodule_eq_iff LieSubmodule.coe_to_submodule_eq_iff
+theorem coe_toSubmodule_eq_iff : (N : Submodule R M) = (N' : Submodule R M) ↔ N = N' :=
+  coeSubmodule_injective.eq_iff
+#align lie_submodule.coe_to_submodule_eq_iff LieSubmodule.coe_toSubmodule_eq_iff
 
 /-- Copy of a lie_submodule with a new `carrier` equal to the old one. Useful to fix definitional
 equalities. -/
@@ -226,53 +229,71 @@ section LieIdeal
 
 variable (L)
 
+#print LieIdeal /-
 /-- An ideal of a Lie algebra is a Lie submodule of the Lie algebra as a Lie module over itself. -/
 abbrev LieIdeal :=
   LieSubmodule R L L
 #align lie_ideal LieIdeal
+-/
 
+#print lie_mem_right /-
 theorem lie_mem_right (I : LieIdeal R L) (x y : L) (h : y ∈ I) : ⁅x, y⁆ ∈ I :=
   I.lie_mem h
 #align lie_mem_right lie_mem_right
+-/
 
+#print lie_mem_left /-
 theorem lie_mem_left (I : LieIdeal R L) (x y : L) (h : x ∈ I) : ⁅x, y⁆ ∈ I := by
   rw [← lie_skew, ← neg_lie]; apply lie_mem_right; assumption
 #align lie_mem_left lie_mem_left
+-/
 
+#print lieIdealSubalgebra /-
 /-- An ideal of a Lie algebra is a Lie subalgebra. -/
 def lieIdealSubalgebra (I : LieIdeal R L) : LieSubalgebra R L :=
   { I.toSubmodule with lie_mem' := by intro x y hx hy; apply lie_mem_right; exact hy }
 #align lie_ideal_subalgebra lieIdealSubalgebra
+-/
 
 instance : Coe (LieIdeal R L) (LieSubalgebra R L) :=
   ⟨fun I => lieIdealSubalgebra R L I⟩
 
+#print LieIdeal.coe_toSubalgebra /-
 @[norm_cast]
-theorem LieIdeal.coe_to_subalgebra (I : LieIdeal R L) : ((I : LieSubalgebra R L) : Set L) = I :=
+theorem LieIdeal.coe_toSubalgebra (I : LieIdeal R L) : ((I : LieSubalgebra R L) : Set L) = I :=
   rfl
-#align lie_ideal.coe_to_subalgebra LieIdeal.coe_to_subalgebra
+#align lie_ideal.coe_to_subalgebra LieIdeal.coe_toSubalgebra
+-/
 
+#print LieIdeal.coe_to_lieSubalgebra_to_submodule /-
 @[norm_cast]
 theorem LieIdeal.coe_to_lieSubalgebra_to_submodule (I : LieIdeal R L) :
     ((I : LieSubalgebra R L) : Submodule R L) = I :=
   rfl
 #align lie_ideal.coe_to_lie_subalgebra_to_submodule LieIdeal.coe_to_lieSubalgebra_to_submodule
+-/
 
+#print LieIdeal.lieRing /-
 /-- An ideal of `L` is a Lie subalgebra of `L`, so it is a Lie ring. -/
 instance LieIdeal.lieRing (I : LieIdeal R L) : LieRing I :=
   LieSubalgebra.lieRing R L ↑I
 #align lie_ideal.lie_ring LieIdeal.lieRing
+-/
 
+#print LieIdeal.lieAlgebra /-
 /-- Transfer the `lie_algebra` instance from the coercion `lie_ideal → lie_subalgebra`. -/
 instance LieIdeal.lieAlgebra (I : LieIdeal R L) : LieAlgebra R I :=
   LieSubalgebra.lieAlgebra R L ↑I
 #align lie_ideal.lie_algebra LieIdeal.lieAlgebra
+-/
 
+#print LieIdeal.lieRingModule /-
 /-- Transfer the `lie_module` instance from the coercion `lie_ideal → lie_subalgebra`. -/
 instance LieIdeal.lieRingModule {R L : Type _} [CommRing R] [LieRing L] [LieAlgebra R L]
     (I : LieIdeal R L) [LieRingModule L M] : LieRingModule I M :=
   LieSubalgebra.lieRingModule (I : LieSubalgebra R L)
 #align lie_ideal.lie_ring_module LieIdeal.lieRingModule
+-/
 
 @[simp]
 theorem LieIdeal.coe_bracket_of_module {R L : Type _} [CommRing R] [LieRing L] [LieAlgebra R L]
@@ -280,10 +301,12 @@ theorem LieIdeal.coe_bracket_of_module {R L : Type _} [CommRing R] [LieRing L] [
   LieSubalgebra.coe_bracket_of_module (I : LieSubalgebra R L) x m
 #align lie_ideal.coe_bracket_of_module LieIdeal.coe_bracket_of_module
 
+#print LieIdeal.lieModule /-
 /-- Transfer the `lie_module` instance from the coercion `lie_ideal → lie_subalgebra`. -/
 instance LieIdeal.lieModule (I : LieIdeal R L) : LieModule R I M :=
   LieSubalgebra.lieModule (I : LieSubalgebra R L)
 #align lie_ideal.lie_module LieIdeal.lieModule
+-/
 
 end LieIdeal
 
@@ -294,36 +317,44 @@ theorem Submodule.exists_lieSubmodule_coe_eq_iff (p : Submodule R M) :
   by
   constructor
   · rintro ⟨N, rfl⟩ _ _; exact N.lie_mem
-  · intro h; use { p with lie_mem := h }; exact LieSubmodule.coe_to_submodule_mk p _
+  · intro h; use { p with lie_mem := h }; exact LieSubmodule.coe_toSubmodule_mk p _
 #align submodule.exists_lie_submodule_coe_eq_iff Submodule.exists_lieSubmodule_coe_eq_iff
 
 namespace LieSubalgebra
 
 variable {L} (K : LieSubalgebra R L)
 
+#print LieSubalgebra.toLieSubmodule /-
 /-- Given a Lie subalgebra `K ⊆ L`, if we view `L` as a `K`-module by restriction, it contains
 a distinguished Lie submodule for the action of `K`, namely `K` itself. -/
 def toLieSubmodule : LieSubmodule R K L :=
   { (K : Submodule R L) with lie_mem := fun x y hy => K.lie_mem x.property hy }
 #align lie_subalgebra.to_lie_submodule LieSubalgebra.toLieSubmodule
+-/
 
+#print LieSubalgebra.coe_toLieSubmodule /-
 @[simp]
 theorem coe_toLieSubmodule : (K.toLieSubmodule : Submodule R L) = K := by rcases K with ⟨⟨⟩⟩; rfl
 #align lie_subalgebra.coe_to_lie_submodule LieSubalgebra.coe_toLieSubmodule
+-/
 
 variable {K}
 
+#print LieSubalgebra.mem_toLieSubmodule /-
 @[simp]
 theorem mem_toLieSubmodule (x : L) : x ∈ K.toLieSubmodule ↔ x ∈ K :=
   Iff.rfl
 #align lie_subalgebra.mem_to_lie_submodule LieSubalgebra.mem_toLieSubmodule
+-/
 
+#print LieSubalgebra.exists_lieIdeal_coe_eq_iff /-
 theorem exists_lieIdeal_coe_eq_iff : (∃ I : LieIdeal R L, ↑I = K) ↔ ∀ x y : L, y ∈ K → ⁅x, y⁆ ∈ K :=
   by
   simp only [← coe_to_submodule_eq_iff, LieIdeal.coe_to_lieSubalgebra_to_submodule,
     Submodule.exists_lieSubmodule_coe_eq_iff L]
   exact Iff.rfl
 #align lie_subalgebra.exists_lie_ideal_coe_eq_iff LieSubalgebra.exists_lieIdeal_coe_eq_iff
+-/
 
 theorem exists_nested_lieIdeal_coe_eq_iff {K' : LieSubalgebra R L} (h : K ≤ K') :
     (∃ I : LieIdeal R K', ↑I = ofLe h) ↔ ∀ x y : L, x ∈ K' → y ∈ K → ⁅x, y⁆ ∈ K :=
@@ -421,17 +452,17 @@ theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 @[simp]
-theorem sInf_coe_to_submodule (S : Set (LieSubmodule R L M)) :
+theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
     (↑(sInf S) : Submodule R M) =
       sInf
         "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
   rfl
-#align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_to_submodule
+#align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_toSubmodule
 
 @[simp]
 theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s ∈ S, (s : Set M) :=
   by
-  rw [← LieSubmodule.coe_to_submodule, Inf_coe_to_submodule, Submodule.sInf_coe]
+  rw [← LieSubmodule.coe_toSubmodule, Inf_coe_to_submodule, Submodule.sInf_coe]
   ext m
   simpa only [mem_Inter, mem_set_of_eq, forall_apply_eq_imp_iff₂, exists_imp]
 #align lie_submodule.Inf_coe LieSubmodule.sInf_coe
@@ -477,7 +508,7 @@ theorem add_eq_sup : N + N' = N ⊔ N' :=
 #align lie_submodule.add_eq_sup LieSubmodule.add_eq_sup
 
 @[norm_cast, simp]
-theorem sup_coe_to_submodule :
+theorem sup_coe_toSubmodule :
     (↑(N ⊔ N') : Submodule R M) = (N : Submodule R M) ⊔ (N' : Submodule R M) :=
   by
   have aux : ∀ (x : L) (m), m ∈ (N ⊔ N' : Submodule R M) → ⁅x, m⁆ ∈ (N ⊔ N' : Submodule R M) :=
@@ -490,13 +521,13 @@ theorem sup_coe_to_submodule :
     simp only [exists_prop, and_true_iff, mem_set_of_eq, eq_self_iff_true, coe_to_submodule_mk, ←
       coe_submodule_le_coe_submodule, and_self_iff, le_sup_left, le_sup_right]
   · simp
-#align lie_submodule.sup_coe_to_submodule LieSubmodule.sup_coe_to_submodule
+#align lie_submodule.sup_coe_to_submodule LieSubmodule.sup_coe_toSubmodule
 
 @[norm_cast, simp]
-theorem inf_coe_to_submodule :
+theorem inf_coe_toSubmodule :
     (↑(N ⊓ N') : Submodule R M) = (N : Submodule R M) ⊓ (N' : Submodule R M) :=
   rfl
-#align lie_submodule.inf_coe_to_submodule LieSubmodule.inf_coe_to_submodule
+#align lie_submodule.inf_coe_to_submodule LieSubmodule.inf_coe_toSubmodule
 
 @[simp]
 theorem mem_inf (x : M) : x ∈ N ⊓ N' ↔ x ∈ N ∧ x ∈ N' := by
@@ -616,7 +647,7 @@ variable (R L) (s : Set M)
 
 /-- The `lie_span` of a set `s ⊆ M` is the smallest Lie submodule of `M` that contains `s`. -/
 def lieSpan : LieSubmodule R L M :=
-  sInf { N | s ⊆ N }
+  sInf {N | s ⊆ N}
 #align lie_submodule.lie_span LieSubmodule.lieSpan
 
 variable {R L s}
@@ -718,7 +749,7 @@ def map : LieSubmodule R L M' :=
     lie_mem := fun x m' h => by
       rcases h with ⟨m, hm, hfm⟩; use ⁅x, m⁆; constructor
       · apply N.lie_mem hm
-      · norm_cast  at hfm ; simp [hfm] }
+      · norm_cast at hfm ; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
 
 @[simp]
@@ -767,12 +798,12 @@ theorem mem_comap {m : M} : m ∈ comap f N' ↔ f m ∈ N' :=
 #align lie_submodule.mem_comap LieSubmodule.mem_comap
 
 theorem comap_incl_eq_top : N₂.comap N.incl = ⊤ ↔ N ≤ N₂ := by
-  simpa only [← LieSubmodule.coe_to_submodule_eq_iff, LieSubmodule.coeSubmodule_comap,
+  simpa only [← LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.coeSubmodule_comap,
     LieSubmodule.incl_coe, LieSubmodule.top_coeSubmodule, Submodule.comap_subtype_eq_top]
 #align lie_submodule.comap_incl_eq_top LieSubmodule.comap_incl_eq_top
 
 theorem comap_incl_eq_bot : N₂.comap N.incl = ⊥ ↔ N ⊓ N₂ = ⊥ := by
-  simpa only [_root_.eq_bot_iff, ← LieSubmodule.coe_to_submodule_eq_iff,
+  simpa only [_root_.eq_bot_iff, ← LieSubmodule.coe_toSubmodule_eq_iff,
     LieSubmodule.coeSubmodule_comap, LieSubmodule.incl_coe, LieSubmodule.bot_coeSubmodule, ←
     Submodule.disjoint_iff_comap_eq_bot, disjoint_iff]
 #align lie_submodule.comap_incl_eq_bot LieSubmodule.comap_incl_eq_bot
@@ -783,11 +814,14 @@ namespace LieIdeal
 
 variable (f : L →ₗ⁅R⁆ L') (I I₂ : LieIdeal R L) (J : LieIdeal R L')
 
+#print LieIdeal.top_coe_lieSubalgebra /-
 @[simp]
 theorem top_coe_lieSubalgebra : ((⊤ : LieIdeal R L) : LieSubalgebra R L) = ⊤ :=
   rfl
 #align lie_ideal.top_coe_lie_subalgebra LieIdeal.top_coe_lieSubalgebra
+-/
 
+#print LieIdeal.map /-
 /-- A morphism of Lie algebras `f : L → L'` pushes forward Lie ideals of `L` to Lie ideals of `L'`.
 
 Note that unlike `lie_submodule.map`, we must take the `lie_span` of the image. Mathematically
@@ -796,7 +830,9 @@ this is because although `f` makes `L'` into a Lie module over `L`, in general t
 def map : LieIdeal R L' :=
   LieSubmodule.lieSpan R L' <| (I : Submodule R L).map (f : L →ₗ[R] L')
 #align lie_ideal.map LieIdeal.map
+-/
 
+#print LieIdeal.comap /-
 /-- A morphism of Lie algebras `f : L → L'` pulls back Lie ideals of `L'` to Lie ideals of `L`.
 
 Note that `f` makes `L'` into a Lie module over `L` (turning `f` into a morphism of Lie modules)
@@ -805,18 +841,23 @@ def comap : LieIdeal R L :=
   { (J : Submodule R L').comap (f : L →ₗ[R] L') with
     lie_mem := fun x y h => by suffices ⁅f x, f y⁆ ∈ J by simp [this]; apply J.lie_mem h }
 #align lie_ideal.comap LieIdeal.comap
+-/
 
+#print LieIdeal.map_coeSubmodule /-
 @[simp]
 theorem map_coeSubmodule (h : ↑(map f I) = f '' I) :
     (map f I : Submodule R L') = (I : Submodule R L).map (f : L →ₗ[R] L') := by
-  rw [SetLike.ext'_iff, LieSubmodule.coe_to_submodule, h, Submodule.map_coe]; rfl
+  rw [SetLike.ext'_iff, LieSubmodule.coe_toSubmodule, h, Submodule.map_coe]; rfl
 #align lie_ideal.map_coe_submodule LieIdeal.map_coeSubmodule
+-/
 
+#print LieIdeal.comap_coeSubmodule /-
 @[simp]
 theorem comap_coeSubmodule :
     (comap f J : Submodule R L) = (J : Submodule R L').comap (f : L →ₗ[R] L') :=
   rfl
 #align lie_ideal.comap_coe_submodule LieIdeal.comap_coeSubmodule
+-/
 
 theorem map_le : map f I ≤ J ↔ f '' I ⊆ J :=
   LieSubmodule.lieSpan_le
@@ -824,14 +865,18 @@ theorem map_le : map f I ≤ J ↔ f '' I ⊆ J :=
 
 variable {f I I₂ J}
 
+#print LieIdeal.mem_map /-
 theorem mem_map {x : L} (hx : x ∈ I) : f x ∈ map f I := by apply LieSubmodule.subset_lieSpan; use x;
   exact ⟨hx, rfl⟩
 #align lie_ideal.mem_map LieIdeal.mem_map
+-/
 
+#print LieIdeal.mem_comap /-
 @[simp]
 theorem mem_comap {x : L} : x ∈ comap f J ↔ f x ∈ J :=
   Iff.rfl
 #align lie_ideal.mem_comap LieIdeal.mem_comap
+-/
 
 theorem map_le_iff_le_comap : map f I ≤ J ↔ I ≤ comap f J := by rw [map_le];
   exact Set.image_subset_iff
@@ -839,15 +884,19 @@ theorem map_le_iff_le_comap : map f I ≤ J ↔ I ≤ comap f J := by rw [map_le
 
 variable (f)
 
+#print LieIdeal.gc_map_comap /-
 theorem gc_map_comap : GaloisConnection (map f) (comap f) := fun I I' => map_le_iff_le_comap
 #align lie_ideal.gc_map_comap LieIdeal.gc_map_comap
+-/
 
 variable {f}
 
+#print LieIdeal.map_sup /-
 @[simp]
 theorem map_sup : (I ⊔ I₂).map f = I.map f ⊔ I₂.map f :=
   (gc_map_comap f).l_sup
 #align lie_ideal.map_sup LieIdeal.map_sup
+-/
 
 theorem map_comap_le : map f (comap f J) ≤ J := by rw [map_le_iff_le_comap]; exact le_rfl
 #align lie_ideal.map_comap_le LieIdeal.map_comap_le
@@ -856,23 +905,30 @@ theorem map_comap_le : map f (comap f J) ≤ J := by rw [map_le_iff_le_comap]; e
 theorem comap_map_le : I ≤ comap f (map f I) := by rw [← map_le_iff_le_comap]; exact le_rfl
 #align lie_ideal.comap_map_le LieIdeal.comap_map_le
 
+#print LieIdeal.map_mono /-
 @[mono]
 theorem map_mono : Monotone (map f) := fun I₁ I₂ h => by rw [SetLike.le_def] at h ;
   apply LieSubmodule.lieSpan_mono (Set.image_subset (⇑f) h)
 #align lie_ideal.map_mono LieIdeal.map_mono
+-/
 
+#print LieIdeal.comap_mono /-
 @[mono]
 theorem comap_mono : Monotone (comap f) := fun J₁ J₂ h => by rw [← SetLike.coe_subset_coe] at h ⊢;
   exact Set.preimage_mono h
 #align lie_ideal.comap_mono LieIdeal.comap_mono
+-/
 
+#print LieIdeal.map_of_image /-
 theorem map_of_image (h : f '' I = J) : I.map f = J :=
   by
   apply le_antisymm
   · erw [LieSubmodule.lieSpan_le, Submodule.map_coe, h]
   · rw [← SetLike.coe_subset_coe, ← h]; exact LieSubmodule.subset_lieSpan
 #align lie_ideal.map_of_image LieIdeal.map_of_image
+-/
 
+#print LieIdeal.subsingleton_of_bot /-
 /-- Note that this is not a special case of `lie_submodule.subsingleton_of_bot`. Indeed, given
 `I : lie_ideal R L`, in general the two lattices `lie_ideal R I` and `lie_submodule R L I` are
 different (though the latter does naturally inject into the former).
@@ -885,6 +941,7 @@ instance subsingleton_of_bot : Subsingleton (LieIdeal R (⊥ : LieIdeal R L)) :=
   ext ⟨x, hx⟩; change x ∈ ⊥ at hx ; rw [LieSubmodule.mem_bot] at hx ; subst hx
   simp only [true_iff_iff, eq_self_iff_true, Submodule.mk_eq_zero, LieSubmodule.mem_bot]
 #align lie_ideal.subsingleton_of_bot LieIdeal.subsingleton_of_bot
+-/
 
 end LieIdeal
 
@@ -892,33 +949,45 @@ namespace LieHom
 
 variable (f : L →ₗ⁅R⁆ L') (I : LieIdeal R L) (J : LieIdeal R L')
 
+#print LieHom.ker /-
 /-- The kernel of a morphism of Lie algebras, as an ideal in the domain. -/
 def ker : LieIdeal R L :=
   LieIdeal.comap f ⊥
 #align lie_hom.ker LieHom.ker
+-/
 
+#print LieHom.idealRange /-
 /-- The range of a morphism of Lie algebras as an ideal in the codomain. -/
 def idealRange : LieIdeal R L' :=
   LieSubmodule.lieSpan R L' f.range
 #align lie_hom.ideal_range LieHom.idealRange
+-/
 
+#print LieHom.idealRange_eq_lieSpan_range /-
 theorem idealRange_eq_lieSpan_range : f.idealRange = LieSubmodule.lieSpan R L' f.range :=
   rfl
 #align lie_hom.ideal_range_eq_lie_span_range LieHom.idealRange_eq_lieSpan_range
+-/
 
+#print LieHom.idealRange_eq_map /-
 theorem idealRange_eq_map : f.idealRange = LieIdeal.map f ⊤ := by ext;
   simp only [ideal_range, range_eq_map]; rfl
 #align lie_hom.ideal_range_eq_map LieHom.idealRange_eq_map
+-/
 
+#print LieHom.IsIdealMorphism /-
 /-- The condition that the image of a morphism of Lie algebras is an ideal. -/
 def IsIdealMorphism : Prop :=
   (f.idealRange : LieSubalgebra R L') = f.range
 #align lie_hom.is_ideal_morphism LieHom.IsIdealMorphism
+-/
 
+#print LieHom.isIdealMorphism_def /-
 @[simp]
 theorem isIdealMorphism_def : f.IsIdealMorphism ↔ (f.idealRange : LieSubalgebra R L') = f.range :=
   Iff.rfl
 #align lie_hom.is_ideal_morphism_def LieHom.isIdealMorphism_def
+-/
 
 theorem isIdealMorphism_iff : f.IsIdealMorphism ↔ ∀ (x : L') (y : L), ∃ z : L, ⁅x, f y⁆ = f z :=
   by
@@ -932,9 +1001,11 @@ theorem isIdealMorphism_iff : f.IsIdealMorphism ↔ ∀ (x : L') (y : L), ∃ z
   · intro h x y z hz; obtain ⟨w, hw⟩ := h x z; use w; rw [← hw, hz]
 #align lie_hom.is_ideal_morphism_iff LieHom.isIdealMorphism_iff
 
+#print LieHom.range_subset_idealRange /-
 theorem range_subset_idealRange : (f.range : Set L') ⊆ f.idealRange :=
   LieSubmodule.subset_lieSpan
 #align lie_hom.range_subset_ideal_range LieHom.range_subset_idealRange
+-/
 
 theorem map_le_idealRange : I.map f ≤ f.idealRange :=
   by
@@ -946,29 +1017,37 @@ theorem ker_le_comap : f.ker ≤ J.comap f :=
   LieIdeal.comap_mono bot_le
 #align lie_hom.ker_le_comap LieHom.ker_le_comap
 
+#print LieHom.ker_coeSubmodule /-
 @[simp]
 theorem ker_coeSubmodule : (ker f : Submodule R L) = (f : L →ₗ[R] L').ker :=
   rfl
 #align lie_hom.ker_coe_submodule LieHom.ker_coeSubmodule
+-/
 
+#print LieHom.mem_ker /-
 @[simp]
 theorem mem_ker {x : L} : x ∈ ker f ↔ f x = 0 :=
   show x ∈ (f.ker : Submodule R L) ↔ _ by
     simp only [ker_coe_submodule, LinearMap.mem_ker, coe_to_linear_map]
 #align lie_hom.mem_ker LieHom.mem_ker
+-/
 
+#print LieHom.mem_idealRange /-
 theorem mem_idealRange {x : L} : f x ∈ idealRange f :=
   by
   rw [ideal_range_eq_map]
   exact LieIdeal.mem_map (LieSubmodule.mem_top x)
 #align lie_hom.mem_ideal_range LieHom.mem_idealRange
+-/
 
+#print LieHom.mem_idealRange_iff /-
 @[simp]
 theorem mem_idealRange_iff (h : IsIdealMorphism f) {y : L'} : y ∈ idealRange f ↔ ∃ x : L, f x = y :=
   by
   rw [f.is_ideal_morphism_def] at h 
-  rw [← LieSubmodule.mem_coe, ← LieIdeal.coe_to_subalgebra, h, f.range_coe, Set.mem_range]
+  rw [← LieSubmodule.mem_coe, ← LieIdeal.coe_toSubalgebra, h, f.range_coe, Set.mem_range]
 #align lie_hom.mem_ideal_range_iff LieHom.mem_idealRange_iff
+-/
 
 theorem le_ker_iff : I ≤ f.ker ↔ ∀ x, x ∈ I → f x = 0 :=
   by
@@ -977,15 +1056,19 @@ theorem le_ker_iff : I ≤ f.ker ↔ ∀ x, x ∈ I → f x = 0 :=
   · rw [mem_ker]; apply h x hx
 #align lie_hom.le_ker_iff LieHom.le_ker_iff
 
+#print LieHom.ker_eq_bot /-
 theorem ker_eq_bot : f.ker = ⊥ ↔ Function.Injective f := by
-  rw [← LieSubmodule.coe_to_submodule_eq_iff, ker_coe_submodule, LieSubmodule.bot_coeSubmodule,
+  rw [← LieSubmodule.coe_toSubmodule_eq_iff, ker_coe_submodule, LieSubmodule.bot_coeSubmodule,
     LinearMap.ker_eq_bot, coe_to_linear_map]
 #align lie_hom.ker_eq_bot LieHom.ker_eq_bot
+-/
 
+#print LieHom.range_coeSubmodule /-
 @[simp]
-theorem range_coe_submodule : (f.range : Submodule R L') = (f : L →ₗ[R] L').range :=
+theorem range_coeSubmodule : (f.range : Submodule R L') = (f : L →ₗ[R] L').range :=
   rfl
-#align lie_hom.range_coe_submodule LieHom.range_coe_submodule
+#align lie_hom.range_coe_submodule LieHom.range_coeSubmodule
+-/
 
 theorem range_eq_top : f.range = ⊤ ↔ Function.Surjective f :=
   by
@@ -998,7 +1081,7 @@ theorem idealRange_eq_top_of_surjective (h : Function.Surjective f) : f.idealRan
   by
   rw [← f.range_eq_top] at h 
   rw [ideal_range_eq_lie_span_range, h, ← LieSubalgebra.coe_to_submodule, ←
-    LieSubmodule.coe_to_submodule_eq_iff, LieSubmodule.top_coeSubmodule,
+    LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.top_coeSubmodule,
     LieSubalgebra.top_coe_submodule, LieSubmodule.coe_lieSpan_submodule_eq_iff]
   use ⊤
   exact LieSubmodule.top_coeSubmodule
@@ -1015,10 +1098,12 @@ namespace LieIdeal
 
 variable {f : L →ₗ⁅R⁆ L'} {I : LieIdeal R L} {J : LieIdeal R L'}
 
+#print LieIdeal.map_eq_bot_iff /-
 @[simp]
 theorem map_eq_bot_iff : I.map f = ⊥ ↔ I ≤ f.ker := by rw [← le_bot_iff];
   exact LieIdeal.map_le_iff_le_comap
 #align lie_ideal.map_eq_bot_iff LieIdeal.map_eq_bot_iff
+-/
 
 theorem coe_map_of_surjective (h : Function.Surjective f) :
     (I.map f : Submodule R L') = (I : Submodule R L).map (f : L →ₗ[R] L') :=
@@ -1036,7 +1121,7 @@ theorem coe_map_of_surjective (h : Function.Surjective f) :
         exact ⟨I.lie_mem hz₂, f.map_lie z₁ z₂⟩ }
   erw [LieSubmodule.coe_lieSpan_submodule_eq_iff]
   use J
-  apply LieSubmodule.coe_to_submodule_mk
+  apply LieSubmodule.coe_toSubmodule_mk
 #align lie_ideal.coe_map_of_surjective LieIdeal.coe_map_of_surjective
 
 theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y ∈ I.map f) :
@@ -1074,6 +1159,7 @@ theorem homOfLe_injective {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : Funct
   simp only [hom_of_le_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe, Subtype.val_eq_coe]
 #align lie_ideal.hom_of_le_injective LieIdeal.homOfLe_injective
 
+#print LieIdeal.map_sup_ker_eq_map /-
 @[simp]
 theorem map_sup_ker_eq_map : LieIdeal.map f (I ⊔ f.ker) = LieIdeal.map f I :=
   by
@@ -1084,7 +1170,9 @@ theorem map_sup_ker_eq_map : LieIdeal.map f (I ⊔ f.ker) = LieIdeal.map f I :=
   erw [LieSubmodule.mem_sup] at hy₁ ; obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁; rw [← hy]
   rw [f.coe_to_linear_map, f.map_add, f.mem_ker.mp hz₂, add_zero]; exact ⟨z₁, hz₁, rfl⟩
 #align lie_ideal.map_sup_ker_eq_map LieIdeal.map_sup_ker_eq_map
+-/
 
+#print LieIdeal.map_comap_eq /-
 @[simp]
 theorem map_comap_eq (h : f.IsIdealMorphism) : map f (comap f J) = f.idealRange ⊓ J :=
   by
@@ -1094,62 +1182,81 @@ theorem map_comap_eq (h : f.IsIdealMorphism) : map f (comap f J) = f.idealRange
     rw [← SetLike.coe_subset_coe, LieSubmodule.inf_coe, ← coe_to_subalgebra, h]
     rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂ ⊢; exact mem_map h₂
 #align lie_ideal.map_comap_eq LieIdeal.map_comap_eq
+-/
 
+#print LieIdeal.comap_map_eq /-
 @[simp]
 theorem comap_map_eq (h : ↑(map f I) = f '' I) : comap f (map f I) = I ⊔ f.ker := by
-  rw [← LieSubmodule.coe_to_submodule_eq_iff, comap_coe_submodule, I.map_coe_submodule f h,
-    LieSubmodule.sup_coe_to_submodule, f.ker_coe_submodule, Submodule.comap_map_eq]
+  rw [← LieSubmodule.coe_toSubmodule_eq_iff, comap_coe_submodule, I.map_coe_submodule f h,
+    LieSubmodule.sup_coe_toSubmodule, f.ker_coe_submodule, Submodule.comap_map_eq]
 #align lie_ideal.comap_map_eq LieIdeal.comap_map_eq
+-/
 
 variable (f I J)
 
+#print LieIdeal.incl /-
 /-- Regarding an ideal `I` as a subalgebra, the inclusion map into its ambient space is a morphism
 of Lie algebras. -/
 def incl : I →ₗ⁅R⁆ L :=
   (I : LieSubalgebra R L).incl
 #align lie_ideal.incl LieIdeal.incl
+-/
 
+#print LieIdeal.incl_range /-
 @[simp]
 theorem incl_range : I.incl.range = I :=
   (I : LieSubalgebra R L).incl_range
 #align lie_ideal.incl_range LieIdeal.incl_range
+-/
 
+#print LieIdeal.incl_apply /-
 @[simp]
 theorem incl_apply (x : I) : I.incl x = x :=
   rfl
 #align lie_ideal.incl_apply LieIdeal.incl_apply
+-/
 
+#print LieIdeal.incl_coe /-
 @[simp]
 theorem incl_coe : (I.incl : I →ₗ[R] L) = (I : Submodule R L).Subtype :=
   rfl
 #align lie_ideal.incl_coe LieIdeal.incl_coe
+-/
 
+#print LieIdeal.comap_incl_self /-
 @[simp]
 theorem comap_incl_self : comap I.incl I = ⊤ := by
-  rw [← LieSubmodule.coe_to_submodule_eq_iff, LieSubmodule.top_coeSubmodule,
+  rw [← LieSubmodule.coe_toSubmodule_eq_iff, LieSubmodule.top_coeSubmodule,
     LieIdeal.comap_coeSubmodule, LieIdeal.incl_coe, Submodule.comap_subtype_self]
 #align lie_ideal.comap_incl_self LieIdeal.comap_incl_self
+-/
 
+#print LieIdeal.ker_incl /-
 @[simp]
 theorem ker_incl : I.incl.ker = ⊥ := by
-  rw [← LieSubmodule.coe_to_submodule_eq_iff, I.incl.ker_coe_submodule,
+  rw [← LieSubmodule.coe_toSubmodule_eq_iff, I.incl.ker_coe_submodule,
     LieSubmodule.bot_coeSubmodule, incl_coe, Submodule.ker_subtype]
 #align lie_ideal.ker_incl LieIdeal.ker_incl
+-/
 
+#print LieIdeal.incl_idealRange /-
 @[simp]
 theorem incl_idealRange : I.incl.idealRange = I :=
   by
   rw [LieHom.idealRange_eq_lieSpan_range, ← LieSubalgebra.coe_to_submodule, ←
-    LieSubmodule.coe_to_submodule_eq_iff, incl_range, coe_to_lie_subalgebra_to_submodule,
+    LieSubmodule.coe_toSubmodule_eq_iff, incl_range, coe_to_lie_subalgebra_to_submodule,
     LieSubmodule.coe_lieSpan_submodule_eq_iff]
   use I
 #align lie_ideal.incl_ideal_range LieIdeal.incl_idealRange
+-/
 
+#print LieIdeal.incl_isIdealMorphism /-
 theorem incl_isIdealMorphism : I.incl.IsIdealMorphism :=
   by
   rw [I.incl.is_ideal_morphism_def, incl_ideal_range]
   exact (I : LieSubalgebra R L).incl_range.symm
 #align lie_ideal.incl_is_ideal_morphism LieIdeal.incl_isIdealMorphism
+-/
 
 end LieIdeal
 
@@ -1178,7 +1285,7 @@ theorem ker_coeSubmodule : (f.ker : Submodule R M) = (f : M →ₗ[R] N).ker :=
 #align lie_module_hom.ker_coe_submodule LieModuleHom.ker_coeSubmodule
 
 theorem ker_eq_bot : f.ker = ⊥ ↔ Function.Injective f := by
-  rw [← LieSubmodule.coe_to_submodule_eq_iff, ker_coe_submodule, LieSubmodule.bot_coeSubmodule,
+  rw [← LieSubmodule.coe_toSubmodule_eq_iff, ker_coe_submodule, LieSubmodule.bot_coeSubmodule,
     LinearMap.ker_eq_bot, coe_to_linear_map]
 #align lie_module_hom.ker_eq_bot LieModuleHom.ker_eq_bot
 
@@ -1241,15 +1348,15 @@ variable [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M]
 variable (N : LieSubmodule R L M)
 
 @[simp]
-theorem ker_incl : N.incl.ker = ⊥ := by simp [← LieSubmodule.coe_to_submodule_eq_iff]
+theorem ker_incl : N.incl.ker = ⊥ := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.ker_incl LieSubmodule.ker_incl
 
 @[simp]
-theorem range_incl : N.incl.range = N := by simp [← LieSubmodule.coe_to_submodule_eq_iff]
+theorem range_incl : N.incl.range = N := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.range_incl LieSubmodule.range_incl
 
 @[simp]
-theorem comap_incl_self : comap N.incl N = ⊤ := by simp [← LieSubmodule.coe_to_submodule_eq_iff]
+theorem comap_incl_self : comap N.incl N = ⊤ := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.comap_incl_self LieSubmodule.comap_incl_self
 
 end LieSubmodule
@@ -1276,17 +1383,21 @@ theorem LieSubalgebra.topEquiv_apply (x : (⊤ : LieSubalgebra R L)) : LieSubalg
   rfl
 #align lie_subalgebra.top_equiv_apply LieSubalgebra.topEquiv_apply
 
+#print LieIdeal.topEquiv /-
 /-- The natural equivalence between the 'top' Lie ideal and the enclosing Lie algebra.
 
 This is the Lie ideal version of `submodule.top_equiv`. -/
 def LieIdeal.topEquiv : (⊤ : LieIdeal R L) ≃ₗ⁅R⁆ L :=
   LieSubalgebra.topEquiv
 #align lie_ideal.top_equiv LieIdeal.topEquiv
+-/
 
+#print LieIdeal.topEquiv_apply /-
 @[simp]
 theorem LieIdeal.topEquiv_apply (x : (⊤ : LieIdeal R L)) : LieIdeal.topEquiv x = x :=
   rfl
 #align lie_ideal.top_equiv_apply LieIdeal.topEquiv_apply
+-/
 
 end TopEquiv
 
Diff
@@ -133,7 +133,7 @@ theorem coe_to_submodule_mk (p : Submodule R M) (h) :
 
 theorem coe_submodule_injective :
     Function.Injective (toSubmodule : LieSubmodule R L M → Submodule R M) := fun x y h => by
-  cases x; cases y; congr ; injection h
+  cases x; cases y; congr; injection h
 #align lie_submodule.coe_submodule_injective LieSubmodule.coe_submodule_injective
 
 @[ext]
@@ -438,7 +438,7 @@ theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s
 
 theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   by
-  have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' := by intros ; rfl
+  have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' := by intros; rfl
   apply IsGLB.of_image h
   simp only [Inf_coe]
   exact isGLB_biInf
@@ -454,7 +454,7 @@ instance : CompleteLattice (LieSubmodule R L M) :=
     le := (· ≤ ·)
     lt := (· < ·)
     bot := ⊥
-    bot_le := fun N _ h => by rw [mem_bot] at h; rw [h]; exact N.zero_mem'
+    bot_le := fun N _ h => by rw [mem_bot] at h ; rw [h]; exact N.zero_mem'
     top := ⊤
     le_top := fun _ _ _ => trivial
     inf := (· ⊓ ·)
@@ -514,7 +514,7 @@ theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 := by rw [eq_bot_i
 instance subsingleton_of_bot : Subsingleton (LieSubmodule R L ↥(⊥ : LieSubmodule R L M)) :=
   by
   apply subsingleton_of_bot_eq_top
-  ext ⟨x, hx⟩; change x ∈ ⊥ at hx; rw [LieSubmodule.mem_bot] at hx; subst hx
+  ext ⟨x, hx⟩; change x ∈ ⊥ at hx ; rw [LieSubmodule.mem_bot] at hx ; subst hx
   simp only [true_iff_iff, eq_self_iff_true, Submodule.mk_eq_zero, LieSubmodule.mem_bot]
 #align lie_submodule.subsingleton_of_bot LieSubmodule.subsingleton_of_bot
 
@@ -637,7 +637,7 @@ theorem lieSpan_le {N} : lieSpan R L s ≤ N ↔ s ⊆ N :=
   by
   constructor
   · exact subset.trans subset_lie_span
-  · intro hs m hm; rw [mem_lie_span] at hm; exact hm _ hs
+  · intro hs m hm; rw [mem_lie_span] at hm ; exact hm _ hs
 #align lie_submodule.lie_span_le LieSubmodule.lieSpan_le
 
 theorem lieSpan_mono {t : Set M} (h : s ⊆ t) : lieSpan R L s ≤ lieSpan R L t := by rw [lie_span_le];
@@ -718,7 +718,7 @@ def map : LieSubmodule R L M' :=
     lie_mem := fun x m' h => by
       rcases h with ⟨m, hm, hfm⟩; use ⁅x, m⁆; constructor
       · apply N.lie_mem hm
-      · norm_cast  at hfm; simp [hfm] }
+      · norm_cast  at hfm ; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
 
 @[simp]
@@ -857,12 +857,12 @@ theorem comap_map_le : I ≤ comap f (map f I) := by rw [← map_le_iff_le_comap
 #align lie_ideal.comap_map_le LieIdeal.comap_map_le
 
 @[mono]
-theorem map_mono : Monotone (map f) := fun I₁ I₂ h => by rw [SetLike.le_def] at h;
+theorem map_mono : Monotone (map f) := fun I₁ I₂ h => by rw [SetLike.le_def] at h ;
   apply LieSubmodule.lieSpan_mono (Set.image_subset (⇑f) h)
 #align lie_ideal.map_mono LieIdeal.map_mono
 
 @[mono]
-theorem comap_mono : Monotone (comap f) := fun J₁ J₂ h => by rw [← SetLike.coe_subset_coe] at h⊢;
+theorem comap_mono : Monotone (comap f) := fun J₁ J₂ h => by rw [← SetLike.coe_subset_coe] at h ⊢;
   exact Set.preimage_mono h
 #align lie_ideal.comap_mono LieIdeal.comap_mono
 
@@ -882,7 +882,7 @@ same as ideals of `L` contained in `I`. -/
 instance subsingleton_of_bot : Subsingleton (LieIdeal R (⊥ : LieIdeal R L)) :=
   by
   apply subsingleton_of_bot_eq_top
-  ext ⟨x, hx⟩; change x ∈ ⊥ at hx; rw [LieSubmodule.mem_bot] at hx; subst hx
+  ext ⟨x, hx⟩; change x ∈ ⊥ at hx ; rw [LieSubmodule.mem_bot] at hx ; subst hx
   simp only [true_iff_iff, eq_self_iff_true, Submodule.mk_eq_zero, LieSubmodule.mem_bot]
 #align lie_ideal.subsingleton_of_bot LieIdeal.subsingleton_of_bot
 
@@ -966,14 +966,14 @@ theorem mem_idealRange {x : L} : f x ∈ idealRange f :=
 @[simp]
 theorem mem_idealRange_iff (h : IsIdealMorphism f) {y : L'} : y ∈ idealRange f ↔ ∃ x : L, f x = y :=
   by
-  rw [f.is_ideal_morphism_def] at h
+  rw [f.is_ideal_morphism_def] at h 
   rw [← LieSubmodule.mem_coe, ← LieIdeal.coe_to_subalgebra, h, f.range_coe, Set.mem_range]
 #align lie_hom.mem_ideal_range_iff LieHom.mem_idealRange_iff
 
 theorem le_ker_iff : I ≤ f.ker ↔ ∀ x, x ∈ I → f x = 0 :=
   by
   constructor <;> intro h x hx
-  · specialize h hx; rw [mem_ker] at h; exact h
+  · specialize h hx; rw [mem_ker] at h ; exact h
   · rw [mem_ker]; apply h x hx
 #align lie_hom.le_ker_iff LieHom.le_ker_iff
 
@@ -996,7 +996,7 @@ theorem range_eq_top : f.range = ⊤ ↔ Function.Surjective f :=
 @[simp]
 theorem idealRange_eq_top_of_surjective (h : Function.Surjective f) : f.idealRange = ⊤ :=
   by
-  rw [← f.range_eq_top] at h
+  rw [← f.range_eq_top] at h 
   rw [ideal_range_eq_lie_span_range, h, ← LieSubalgebra.coe_to_submodule, ←
     LieSubmodule.coe_to_submodule_eq_iff, LieSubmodule.top_coeSubmodule,
     LieSubalgebra.top_coe_submodule, LieSubmodule.coe_lieSpan_submodule_eq_iff]
@@ -1042,7 +1042,7 @@ theorem coe_map_of_surjective (h : Function.Surjective f) :
 theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y ∈ I.map f) :
     ∃ x : I, f x = y :=
   by
-  rw [← LieSubmodule.mem_coeSubmodule, coe_map_of_surjective h₁, Submodule.mem_map] at h₂
+  rw [← LieSubmodule.mem_coeSubmodule, coe_map_of_surjective h₁, Submodule.mem_map] at h₂ 
   obtain ⟨x, hx, rfl⟩ := h₂
   use ⟨x, hx⟩
   rfl
@@ -1050,8 +1050,8 @@ theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y
 
 theorem bot_of_map_eq_bot {I : LieIdeal R L} (h₁ : Function.Injective f) (h₂ : I.map f = ⊥) :
     I = ⊥ := by
-  rw [← f.ker_eq_bot] at h₁; change comap f ⊥ = ⊥ at h₁
-  rw [eq_bot_iff, map_le_iff_le_comap, h₁] at h₂
+  rw [← f.ker_eq_bot] at h₁ ; change comap f ⊥ = ⊥ at h₁ 
+  rw [eq_bot_iff, map_le_iff_le_comap, h₁] at h₂ 
   rw [eq_bot_iff]; exact h₂
 #align lie_ideal.bot_of_map_eq_bot LieIdeal.bot_of_map_eq_bot
 
@@ -1081,7 +1081,7 @@ theorem map_sup_ker_eq_map : LieIdeal.map f (I ⊔ f.ker) = LieIdeal.map f I :=
     exact le_antisymm this (LieIdeal.map_mono le_sup_left)
   apply LieSubmodule.lieSpan_mono
   rintro x ⟨y, hy₁, hy₂⟩; rw [← hy₂]
-  erw [LieSubmodule.mem_sup] at hy₁; obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁; rw [← hy]
+  erw [LieSubmodule.mem_sup] at hy₁ ; obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁; rw [← hy]
   rw [f.coe_to_linear_map, f.map_add, f.mem_ker.mp hz₂, add_zero]; exact ⟨z₁, hz₁, rfl⟩
 #align lie_ideal.map_sup_ker_eq_map LieIdeal.map_sup_ker_eq_map
 
@@ -1090,9 +1090,9 @@ theorem map_comap_eq (h : f.IsIdealMorphism) : map f (comap f J) = f.idealRange
   by
   apply le_antisymm
   · rw [le_inf_iff]; exact ⟨f.map_le_ideal_range _, map_comap_le⟩
-  · rw [f.is_ideal_morphism_def] at h
+  · rw [f.is_ideal_morphism_def] at h 
     rw [← SetLike.coe_subset_coe, LieSubmodule.inf_coe, ← coe_to_subalgebra, h]
-    rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂⊢; exact mem_map h₂
+    rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂ ⊢; exact mem_map h₂
 #align lie_ideal.map_comap_eq LieIdeal.map_comap_eq
 
 @[simp]
Diff
@@ -71,9 +71,7 @@ instance : AddSubgroupClass (LieSubmodule R L M) M
 /-- The zero module is a Lie submodule of any Lie module. -/
 instance : Zero (LieSubmodule R L M) :=
   ⟨{ (0 : Submodule R M) with
-      lie_mem := fun x m h => by
-        rw [(Submodule.mem_bot R).1 h]
-        apply lie_zero }⟩
+      lie_mem := fun x m h => by rw [(Submodule.mem_bot R).1 h]; apply lie_zero }⟩
 
 instance : Inhabited (LieSubmodule R L M) :=
   ⟨0⟩
@@ -130,19 +128,12 @@ theorem coe_to_set_mk (S : Set M) (h₁ h₂ h₃ h₄) :
 
 @[simp]
 theorem coe_to_submodule_mk (p : Submodule R M) (h) :
-    (({ p with lie_mem := h } : LieSubmodule R L M) : Submodule R M) = p :=
-  by
-  cases p
-  rfl
+    (({ p with lie_mem := h } : LieSubmodule R L M) : Submodule R M) = p := by cases p; rfl
 #align lie_submodule.coe_to_submodule_mk LieSubmodule.coe_to_submodule_mk
 
 theorem coe_submodule_injective :
-    Function.Injective (toSubmodule : LieSubmodule R L M → Submodule R M) := fun x y h =>
-  by
-  cases x
-  cases y
-  congr
-  injection h
+    Function.Injective (toSubmodule : LieSubmodule R L M → Submodule R M) := fun x y h => by
+  cases x; cases y; congr ; injection h
 #align lie_submodule.coe_submodule_injective LieSubmodule.coe_submodule_injective
 
 @[ext]
@@ -178,18 +169,9 @@ theorem copy_eq (S : LieSubmodule R L M) (s : Set M) (hs : s = ↑S) : S.copy s
 instance : LieRingModule L N
     where
   bracket (x : L) (m : N) := ⟨⁅x, m.val⁆, N.lie_mem m.property⟩
-  add_lie := by
-    intro x y m
-    apply SetCoe.ext
-    apply add_lie
-  lie_add := by
-    intro x m n
-    apply SetCoe.ext
-    apply lie_add
-  leibniz_lie := by
-    intro x y m
-    apply SetCoe.ext
-    apply leibniz_lie
+  add_lie := by intro x y m; apply SetCoe.ext; apply add_lie
+  lie_add := by intro x m n; apply SetCoe.ext; apply lie_add
+  leibniz_lie := by intro x y m; apply SetCoe.ext; apply leibniz_lie
 
 instance module' {S : Type _} [Semiring S] [SMul S R] [Module S M] [IsScalarTower S R M] :
     Module S N :=
@@ -205,14 +187,8 @@ instance {S : Type _} [Semiring S] [SMul S R] [SMul Sᵐᵒᵖ R] [Module S M] [
 
 instance : LieModule R L N
     where
-  lie_smul := by
-    intro t x y
-    apply SetCoe.ext
-    apply lie_smul
-  smul_lie := by
-    intro t x y
-    apply SetCoe.ext
-    apply smul_lie
+  lie_smul := by intro t x y; apply SetCoe.ext; apply lie_smul
+  smul_lie := by intro t x y; apply SetCoe.ext; apply smul_lie
 
 @[simp, norm_cast]
 theorem coe_zero : ((0 : N) : M) = (0 : M) :=
@@ -259,20 +235,13 @@ theorem lie_mem_right (I : LieIdeal R L) (x y : L) (h : y ∈ I) : ⁅x, y⁆ 
   I.lie_mem h
 #align lie_mem_right lie_mem_right
 
-theorem lie_mem_left (I : LieIdeal R L) (x y : L) (h : x ∈ I) : ⁅x, y⁆ ∈ I :=
-  by
-  rw [← lie_skew, ← neg_lie]
-  apply lie_mem_right
-  assumption
+theorem lie_mem_left (I : LieIdeal R L) (x y : L) (h : x ∈ I) : ⁅x, y⁆ ∈ I := by
+  rw [← lie_skew, ← neg_lie]; apply lie_mem_right; assumption
 #align lie_mem_left lie_mem_left
 
 /-- An ideal of a Lie algebra is a Lie subalgebra. -/
 def lieIdealSubalgebra (I : LieIdeal R L) : LieSubalgebra R L :=
-  { I.toSubmodule with
-    lie_mem' := by
-      intro x y hx hy
-      apply lie_mem_right
-      exact hy }
+  { I.toSubmodule with lie_mem' := by intro x y hx hy; apply lie_mem_right; exact hy }
 #align lie_ideal_subalgebra lieIdealSubalgebra
 
 instance : Coe (LieIdeal R L) (LieSubalgebra R L) :=
@@ -324,11 +293,8 @@ theorem Submodule.exists_lieSubmodule_coe_eq_iff (p : Submodule R M) :
     (∃ N : LieSubmodule R L M, ↑N = p) ↔ ∀ (x : L) (m : M), m ∈ p → ⁅x, m⁆ ∈ p :=
   by
   constructor
-  · rintro ⟨N, rfl⟩ _ _
-    exact N.lie_mem
-  · intro h
-    use { p with lie_mem := h }
-    exact LieSubmodule.coe_to_submodule_mk p _
+  · rintro ⟨N, rfl⟩ _ _; exact N.lie_mem
+  · intro h; use { p with lie_mem := h }; exact LieSubmodule.coe_to_submodule_mk p _
 #align submodule.exists_lie_submodule_coe_eq_iff Submodule.exists_lieSubmodule_coe_eq_iff
 
 namespace LieSubalgebra
@@ -342,10 +308,7 @@ def toLieSubmodule : LieSubmodule R K L :=
 #align lie_subalgebra.to_lie_submodule LieSubalgebra.toLieSubmodule
 
 @[simp]
-theorem coe_toLieSubmodule : (K.toLieSubmodule : Submodule R L) = K :=
-  by
-  rcases K with ⟨⟨⟩⟩
-  rfl
+theorem coe_toLieSubmodule : (K.toLieSubmodule : Submodule R L) = K := by rcases K with ⟨⟨⟩⟩; rfl
 #align lie_subalgebra.coe_to_lie_submodule LieSubalgebra.coe_toLieSubmodule
 
 variable {K}
@@ -367,10 +330,8 @@ theorem exists_nested_lieIdeal_coe_eq_iff {K' : LieSubalgebra R L} (h : K ≤ K'
   by
   simp only [exists_lie_ideal_coe_eq_iff, coe_bracket, mem_of_le]
   constructor
-  · intro h' x y hx hy
-    exact h' ⟨x, hx⟩ ⟨y, h hy⟩ hy
-  · rintro h' ⟨x, hx⟩ ⟨y, hy⟩ hy'
-    exact h' x y hx hy'
+  · intro h' x y hx hy; exact h' ⟨x, hx⟩ ⟨y, h hy⟩ hy
+  · rintro h' ⟨x, hx⟩ ⟨y, hy⟩ hy'; exact h' x y hx hy'
 #align lie_subalgebra.exists_nested_lie_ideal_coe_eq_iff LieSubalgebra.exists_nested_lieIdeal_coe_eq_iff
 
 end LieSubalgebra
@@ -451,8 +412,7 @@ instance : InfSet (LieSubmodule R L M) :=
         by
         simp only [Submodule.mem_carrier, mem_Inter, Submodule.sInf_coe, mem_set_of_eq,
           forall_apply_eq_imp_iff₂, exists_imp] at *
-        intro N hN
-        apply N.lie_mem (h N hN) }⟩
+        intro N hN; apply N.lie_mem (h N hN) }⟩
 
 @[simp]
 theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
@@ -478,10 +438,7 @@ theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s
 
 theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   by
-  have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' :=
-    by
-    intros
-    rfl
+  have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' := by intros ; rfl
   apply IsGLB.of_image h
   simp only [Inf_coe]
   exact isGLB_biInf
@@ -497,10 +454,7 @@ instance : CompleteLattice (LieSubmodule R L M) :=
     le := (· ≤ ·)
     lt := (· < ·)
     bot := ⊥
-    bot_le := fun N _ h => by
-      rw [mem_bot] at h
-      rw [h]
-      exact N.zero_mem'
+    bot_le := fun N _ h => by rw [mem_bot] at h; rw [h]; exact N.zero_mem'
     top := ⊤
     le_top := fun _ _ _ => trivial
     inf := (· ⊓ ·)
@@ -550,16 +504,11 @@ theorem mem_inf (x : M) : x ∈ N ⊓ N' ↔ x ∈ N ∧ x ∈ N' := by
     Submodule.mem_inf]
 #align lie_submodule.mem_inf LieSubmodule.mem_inf
 
-theorem mem_sup (x : M) : x ∈ N ⊔ N' ↔ ∃ y ∈ N, ∃ z ∈ N', y + z = x :=
-  by
-  rw [← mem_coe_submodule, sup_coe_to_submodule, Submodule.mem_sup]
-  exact Iff.rfl
+theorem mem_sup (x : M) : x ∈ N ⊔ N' ↔ ∃ y ∈ N, ∃ z ∈ N', y + z = x := by
+  rw [← mem_coe_submodule, sup_coe_to_submodule, Submodule.mem_sup]; exact Iff.rfl
 #align lie_submodule.mem_sup LieSubmodule.mem_sup
 
-theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 :=
-  by
-  rw [eq_bot_iff]
-  exact Iff.rfl
+theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 := by rw [eq_bot_iff]; exact Iff.rfl
 #align lie_submodule.eq_bot_iff LieSubmodule.eq_bot_iff
 
 instance subsingleton_of_bot : Subsingleton (LieSubmodule R L ↥(⊥ : LieSubmodule R L M)) :=
@@ -672,24 +621,15 @@ def lieSpan : LieSubmodule R L M :=
 
 variable {R L s}
 
-theorem mem_lieSpan {x : M} : x ∈ lieSpan R L s ↔ ∀ N : LieSubmodule R L M, s ⊆ N → x ∈ N :=
-  by
-  change x ∈ (lie_span R L s : Set M) ↔ _
-  erw [Inf_coe]
-  exact mem_Inter₂
+theorem mem_lieSpan {x : M} : x ∈ lieSpan R L s ↔ ∀ N : LieSubmodule R L M, s ⊆ N → x ∈ N := by
+  change x ∈ (lie_span R L s : Set M) ↔ _; erw [Inf_coe]; exact mem_Inter₂
 #align lie_submodule.mem_lie_span LieSubmodule.mem_lieSpan
 
-theorem subset_lieSpan : s ⊆ lieSpan R L s :=
-  by
-  intro m hm
-  erw [mem_lie_span]
-  intro N hN
+theorem subset_lieSpan : s ⊆ lieSpan R L s := by intro m hm; erw [mem_lie_span]; intro N hN;
   exact hN hm
 #align lie_submodule.subset_lie_span LieSubmodule.subset_lieSpan
 
-theorem submodule_span_le_lieSpan : Submodule.span R s ≤ lieSpan R L s :=
-  by
-  rw [Submodule.span_le]
+theorem submodule_span_le_lieSpan : Submodule.span R s ≤ lieSpan R L s := by rw [Submodule.span_le];
   apply subset_lie_span
 #align lie_submodule.submodule_span_le_lie_span LieSubmodule.submodule_span_le_lieSpan
 
@@ -697,14 +637,10 @@ theorem lieSpan_le {N} : lieSpan R L s ≤ N ↔ s ⊆ N :=
   by
   constructor
   · exact subset.trans subset_lie_span
-  · intro hs m hm
-    rw [mem_lie_span] at hm
-    exact hm _ hs
+  · intro hs m hm; rw [mem_lie_span] at hm; exact hm _ hs
 #align lie_submodule.lie_span_le LieSubmodule.lieSpan_le
 
-theorem lieSpan_mono {t : Set M} (h : s ⊆ t) : lieSpan R L s ≤ lieSpan R L t :=
-  by
-  rw [lie_span_le]
+theorem lieSpan_mono {t : Set M} (h : s ⊆ t) : lieSpan R L s ≤ lieSpan R L t := by rw [lie_span_le];
   exact subset.trans h subset_lie_span
 #align lie_submodule.lie_span_mono LieSubmodule.lieSpan_mono
 
@@ -716,9 +652,7 @@ theorem coe_lieSpan_submodule_eq_iff {p : Submodule R M} :
     (lieSpan R L (p : Set M) : Submodule R M) = p ↔ ∃ N : LieSubmodule R L M, ↑N = p :=
   by
   rw [p.exists_lie_submodule_coe_eq_iff L]; constructor <;> intro h
-  · intro x m hm
-    rw [← h, mem_coe_submodule]
-    exact lie_mem _ (subset_lie_span hm)
+  · intro x m hm; rw [← h, mem_coe_submodule]; exact lie_mem _ (subset_lie_span hm)
   · rw [← coe_to_submodule_mk p h, coe_to_submodule, coe_to_submodule_eq_iff, lie_span_eq]
 #align lie_submodule.coe_lie_span_submodule_eq_iff LieSubmodule.coe_lieSpan_submodule_eq_iff
 
@@ -782,12 +716,9 @@ of `M'`. -/
 def map : LieSubmodule R L M' :=
   { (N : Submodule R M).map (f : M →ₗ[R] M') with
     lie_mem := fun x m' h => by
-      rcases h with ⟨m, hm, hfm⟩
-      use ⁅x, m⁆
-      constructor
+      rcases h with ⟨m, hm, hfm⟩; use ⁅x, m⁆; constructor
       · apply N.lie_mem hm
-      · norm_cast  at hfm
-        simp [hfm] }
+      · norm_cast  at hfm; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
 
 @[simp]
@@ -799,9 +730,7 @@ theorem coeSubmodule_map : (N.map f : Submodule R M') = (N : Submodule R M).map
 `M`. -/
 def comap : LieSubmodule R L M :=
   { (N' : Submodule R M').comap (f : M →ₗ[R] M') with
-    lie_mem := fun x m h => by
-      suffices ⁅x, f m⁆ ∈ N' by simp [this]
-      apply N'.lie_mem h }
+    lie_mem := fun x m h => by suffices ⁅x, f m⁆ ∈ N' by simp [this]; apply N'.lie_mem h }
 #align lie_submodule.comap LieSubmodule.comap
 
 @[simp]
@@ -874,17 +803,13 @@ Note that `f` makes `L'` into a Lie module over `L` (turning `f` into a morphism
 and so this is a special case of `lie_submodule.comap` but we do not exploit this fact. -/
 def comap : LieIdeal R L :=
   { (J : Submodule R L').comap (f : L →ₗ[R] L') with
-    lie_mem := fun x y h => by
-      suffices ⁅f x, f y⁆ ∈ J by simp [this]
-      apply J.lie_mem h }
+    lie_mem := fun x y h => by suffices ⁅f x, f y⁆ ∈ J by simp [this]; apply J.lie_mem h }
 #align lie_ideal.comap LieIdeal.comap
 
 @[simp]
 theorem map_coeSubmodule (h : ↑(map f I) = f '' I) :
-    (map f I : Submodule R L') = (I : Submodule R L).map (f : L →ₗ[R] L') :=
-  by
-  rw [SetLike.ext'_iff, LieSubmodule.coe_to_submodule, h, Submodule.map_coe]
-  rfl
+    (map f I : Submodule R L') = (I : Submodule R L).map (f : L →ₗ[R] L') := by
+  rw [SetLike.ext'_iff, LieSubmodule.coe_to_submodule, h, Submodule.map_coe]; rfl
 #align lie_ideal.map_coe_submodule LieIdeal.map_coeSubmodule
 
 @[simp]
@@ -899,10 +824,7 @@ theorem map_le : map f I ≤ J ↔ f '' I ⊆ J :=
 
 variable {f I I₂ J}
 
-theorem mem_map {x : L} (hx : x ∈ I) : f x ∈ map f I :=
-  by
-  apply LieSubmodule.subset_lieSpan
-  use x
+theorem mem_map {x : L} (hx : x ∈ I) : f x ∈ map f I := by apply LieSubmodule.subset_lieSpan; use x;
   exact ⟨hx, rfl⟩
 #align lie_ideal.mem_map LieIdeal.mem_map
 
@@ -911,9 +833,7 @@ theorem mem_comap {x : L} : x ∈ comap f J ↔ f x ∈ J :=
   Iff.rfl
 #align lie_ideal.mem_comap LieIdeal.mem_comap
 
-theorem map_le_iff_le_comap : map f I ≤ J ↔ I ≤ comap f J :=
-  by
-  rw [map_le]
+theorem map_le_iff_le_comap : map f I ≤ J ↔ I ≤ comap f J := by rw [map_le];
   exact Set.image_subset_iff
 #align lie_ideal.map_le_iff_le_comap LieIdeal.map_le_iff_le_comap
 
@@ -929,30 +849,20 @@ theorem map_sup : (I ⊔ I₂).map f = I.map f ⊔ I₂.map f :=
   (gc_map_comap f).l_sup
 #align lie_ideal.map_sup LieIdeal.map_sup
 
-theorem map_comap_le : map f (comap f J) ≤ J :=
-  by
-  rw [map_le_iff_le_comap]
-  exact le_rfl
+theorem map_comap_le : map f (comap f J) ≤ J := by rw [map_le_iff_le_comap]; exact le_rfl
 #align lie_ideal.map_comap_le LieIdeal.map_comap_le
 
 /-- See also `lie_ideal.map_comap_eq`. -/
-theorem comap_map_le : I ≤ comap f (map f I) :=
-  by
-  rw [← map_le_iff_le_comap]
-  exact le_rfl
+theorem comap_map_le : I ≤ comap f (map f I) := by rw [← map_le_iff_le_comap]; exact le_rfl
 #align lie_ideal.comap_map_le LieIdeal.comap_map_le
 
 @[mono]
-theorem map_mono : Monotone (map f) := fun I₁ I₂ h =>
-  by
-  rw [SetLike.le_def] at h
+theorem map_mono : Monotone (map f) := fun I₁ I₂ h => by rw [SetLike.le_def] at h;
   apply LieSubmodule.lieSpan_mono (Set.image_subset (⇑f) h)
 #align lie_ideal.map_mono LieIdeal.map_mono
 
 @[mono]
-theorem comap_mono : Monotone (comap f) := fun J₁ J₂ h =>
-  by
-  rw [← SetLike.coe_subset_coe] at h⊢
+theorem comap_mono : Monotone (comap f) := fun J₁ J₂ h => by rw [← SetLike.coe_subset_coe] at h⊢;
   exact Set.preimage_mono h
 #align lie_ideal.comap_mono LieIdeal.comap_mono
 
@@ -960,8 +870,7 @@ theorem map_of_image (h : f '' I = J) : I.map f = J :=
   by
   apply le_antisymm
   · erw [LieSubmodule.lieSpan_le, Submodule.map_coe, h]
-  · rw [← SetLike.coe_subset_coe, ← h]
-    exact LieSubmodule.subset_lieSpan
+  · rw [← SetLike.coe_subset_coe, ← h]; exact LieSubmodule.subset_lieSpan
 #align lie_ideal.map_of_image LieIdeal.map_of_image
 
 /-- Note that this is not a special case of `lie_submodule.subsingleton_of_bot`. Indeed, given
@@ -997,11 +906,8 @@ theorem idealRange_eq_lieSpan_range : f.idealRange = LieSubmodule.lieSpan R L' f
   rfl
 #align lie_hom.ideal_range_eq_lie_span_range LieHom.idealRange_eq_lieSpan_range
 
-theorem idealRange_eq_map : f.idealRange = LieIdeal.map f ⊤ :=
-  by
-  ext
-  simp only [ideal_range, range_eq_map]
-  rfl
+theorem idealRange_eq_map : f.idealRange = LieIdeal.map f ⊤ := by ext;
+  simp only [ideal_range, range_eq_map]; rfl
 #align lie_hom.ideal_range_eq_map LieHom.idealRange_eq_map
 
 /-- The condition that the image of a morphism of Lie algebras is an ideal. -/
@@ -1022,14 +928,8 @@ theorem isIdealMorphism_iff : f.IsIdealMorphism ↔ ∀ (x : L') (y : L), ∃ z
     LieSubalgebra.mem_coe_submodule, mem_range, exists_imp,
     Submodule.exists_lieSubmodule_coe_eq_iff]
   constructor
-  · intro h x y
-    obtain ⟨z, hz⟩ := h x (f y) y rfl
-    use z
-    exact hz.symm
-  · intro h x y z hz
-    obtain ⟨w, hw⟩ := h x z
-    use w
-    rw [← hw, hz]
+  · intro h x y; obtain ⟨z, hz⟩ := h x (f y) y rfl; use z; exact hz.symm
+  · intro h x y z hz; obtain ⟨w, hw⟩ := h x z; use w; rw [← hw, hz]
 #align lie_hom.is_ideal_morphism_iff LieHom.isIdealMorphism_iff
 
 theorem range_subset_idealRange : (f.range : Set L') ⊆ f.idealRange :=
@@ -1073,11 +973,8 @@ theorem mem_idealRange_iff (h : IsIdealMorphism f) {y : L'} : y ∈ idealRange f
 theorem le_ker_iff : I ≤ f.ker ↔ ∀ x, x ∈ I → f x = 0 :=
   by
   constructor <;> intro h x hx
-  · specialize h hx
-    rw [mem_ker] at h
-    exact h
-  · rw [mem_ker]
-    apply h x hx
+  · specialize h hx; rw [mem_ker] at h; exact h
+  · rw [mem_ker]; apply h x hx
 #align lie_hom.le_ker_iff LieHom.le_ker_iff
 
 theorem ker_eq_bot : f.ker = ⊥ ↔ Function.Injective f := by
@@ -1119,9 +1016,7 @@ namespace LieIdeal
 variable {f : L →ₗ⁅R⁆ L'} {I : LieIdeal R L} {J : LieIdeal R L'}
 
 @[simp]
-theorem map_eq_bot_iff : I.map f = ⊥ ↔ I ≤ f.ker :=
-  by
-  rw [← le_bot_iff]
+theorem map_eq_bot_iff : I.map f = ⊥ ↔ I ≤ f.ker := by rw [← le_bot_iff];
   exact LieIdeal.map_le_iff_le_comap
 #align lie_ideal.map_eq_bot_iff LieIdeal.map_eq_bot_iff
 
@@ -1185,26 +1080,19 @@ theorem map_sup_ker_eq_map : LieIdeal.map f (I ⊔ f.ker) = LieIdeal.map f I :=
   suffices LieIdeal.map f (I ⊔ f.ker) ≤ LieIdeal.map f I by
     exact le_antisymm this (LieIdeal.map_mono le_sup_left)
   apply LieSubmodule.lieSpan_mono
-  rintro x ⟨y, hy₁, hy₂⟩
-  rw [← hy₂]
-  erw [LieSubmodule.mem_sup] at hy₁
-  obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁
-  rw [← hy]
-  rw [f.coe_to_linear_map, f.map_add, f.mem_ker.mp hz₂, add_zero]
-  exact ⟨z₁, hz₁, rfl⟩
+  rintro x ⟨y, hy₁, hy₂⟩; rw [← hy₂]
+  erw [LieSubmodule.mem_sup] at hy₁; obtain ⟨z₁, hz₁, z₂, hz₂, hy⟩ := hy₁; rw [← hy]
+  rw [f.coe_to_linear_map, f.map_add, f.mem_ker.mp hz₂, add_zero]; exact ⟨z₁, hz₁, rfl⟩
 #align lie_ideal.map_sup_ker_eq_map LieIdeal.map_sup_ker_eq_map
 
 @[simp]
 theorem map_comap_eq (h : f.IsIdealMorphism) : map f (comap f J) = f.idealRange ⊓ J :=
   by
   apply le_antisymm
-  · rw [le_inf_iff]
-    exact ⟨f.map_le_ideal_range _, map_comap_le⟩
+  · rw [le_inf_iff]; exact ⟨f.map_le_ideal_range _, map_comap_le⟩
   · rw [f.is_ideal_morphism_def] at h
     rw [← SetLike.coe_subset_coe, LieSubmodule.inf_coe, ← coe_to_subalgebra, h]
-    rintro y ⟨⟨x, h₁⟩, h₂⟩
-    rw [← h₁] at h₂⊢
-    exact mem_map h₂
+    rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂⊢; exact mem_map h₂
 #align lie_ideal.map_comap_eq LieIdeal.map_comap_eq
 
 @[simp]
@@ -1307,10 +1195,7 @@ theorem ker_id : (LieModuleHom.id : M →ₗ⁅R,L⁆ M).ker = ⊥ :=
 #align lie_module_hom.ker_id LieModuleHom.ker_id
 
 @[simp]
-theorem comp_ker_incl : f.comp f.ker.incl = 0 :=
-  by
-  ext ⟨m, hm⟩
-  exact (mem_ker m).mp hm
+theorem comp_ker_incl : f.comp f.ker.incl = 0 := by ext ⟨m, hm⟩; exact (mem_ker m).mp hm
 #align lie_module_hom.comp_ker_incl LieModuleHom.comp_ker_incl
 
 theorem le_ker_iff_map (M' : LieSubmodule R L M) : M' ≤ f.ker ↔ LieSubmodule.map f M' = ⊥ := by
@@ -1340,10 +1225,7 @@ theorem mem_range (n : N) : n ∈ f.range ↔ ∃ m, f m = n :=
   Iff.rfl
 #align lie_module_hom.mem_range LieModuleHom.mem_range
 
-theorem map_top : LieSubmodule.map f ⊤ = f.range :=
-  by
-  ext
-  simp [LieSubmodule.mem_map]
+theorem map_top : LieSubmodule.map f ⊤ = f.range := by ext; simp [LieSubmodule.mem_map]
 #align lie_module_hom.map_top LieModuleHom.map_top
 
 end LieModuleHom
@@ -1385,9 +1267,7 @@ def LieSubalgebra.topEquiv : (⊤ : LieSubalgebra R L) ≃ₗ⁅R⁆ L :=
   {
     (⊤ : LieSubalgebra R L).incl with
     invFun := fun x => ⟨x, Set.mem_univ x⟩
-    left_inv := fun x => by
-      ext
-      rfl
+    left_inv := fun x => by ext; rfl
     right_inv := fun x => rfl }
 #align lie_subalgebra.top_equiv LieSubalgebra.topEquiv
 
Diff
@@ -445,11 +445,11 @@ instance : Inf (LieSubmodule R L M) :=
 instance : InfSet (LieSubmodule R L M) :=
   ⟨fun S =>
     {
-      infₛ
+      sInf
         "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
       lie_mem := fun x m h =>
         by
-        simp only [Submodule.mem_carrier, mem_Inter, Submodule.infₛ_coe, mem_set_of_eq,
+        simp only [Submodule.mem_carrier, mem_Inter, Submodule.sInf_coe, mem_set_of_eq,
           forall_apply_eq_imp_iff₂, exists_imp] at *
         intro N hN
         apply N.lie_mem (h N hN) }⟩
@@ -461,22 +461,22 @@ theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 @[simp]
-theorem infₛ_coe_to_submodule (S : Set (LieSubmodule R L M)) :
-    (↑(infₛ S) : Submodule R M) =
-      infₛ
+theorem sInf_coe_to_submodule (S : Set (LieSubmodule R L M)) :
+    (↑(sInf S) : Submodule R M) =
+      sInf
         "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
   rfl
-#align lie_submodule.Inf_coe_to_submodule LieSubmodule.infₛ_coe_to_submodule
+#align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_to_submodule
 
 @[simp]
-theorem infₛ_coe (S : Set (LieSubmodule R L M)) : (↑(infₛ S) : Set M) = ⋂ s ∈ S, (s : Set M) :=
+theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s ∈ S, (s : Set M) :=
   by
-  rw [← LieSubmodule.coe_to_submodule, Inf_coe_to_submodule, Submodule.infₛ_coe]
+  rw [← LieSubmodule.coe_to_submodule, Inf_coe_to_submodule, Submodule.sInf_coe]
   ext m
   simpa only [mem_Inter, mem_set_of_eq, forall_apply_eq_imp_iff₂, exists_imp]
-#align lie_submodule.Inf_coe LieSubmodule.infₛ_coe
+#align lie_submodule.Inf_coe LieSubmodule.sInf_coe
 
-theorem infₛ_glb (S : Set (LieSubmodule R L M)) : IsGLB S (infₛ S) :=
+theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) :=
   by
   have h : ∀ N N' : LieSubmodule R L M, (N : Set M) ≤ N' ↔ N ≤ N' :=
     by
@@ -484,8 +484,8 @@ theorem infₛ_glb (S : Set (LieSubmodule R L M)) : IsGLB S (infₛ S) :=
     rfl
   apply IsGLB.of_image h
   simp only [Inf_coe]
-  exact isGLB_binfᵢ
-#align lie_submodule.Inf_glb LieSubmodule.infₛ_glb
+  exact isGLB_biInf
+#align lie_submodule.Inf_glb LieSubmodule.sInf_glb
 
 /-- The set of Lie submodules of a Lie module form a complete lattice.
 
@@ -493,7 +493,7 @@ We provide explicit values for the fields `bot`, `top`, `inf` to get more conven
 than we would otherwise obtain from `complete_lattice_of_Inf`.  -/
 instance : CompleteLattice (LieSubmodule R L M) :=
   { SetLike.partialOrder,
-    completeLatticeOfInf _ infₛ_glb with
+    completeLatticeOfInf _ sInf_glb with
     le := (· ≤ ·)
     lt := (· < ·)
     bot := ⊥
@@ -531,7 +531,7 @@ theorem sup_coe_to_submodule :
     simp only [Submodule.mem_sup]
     rintro x m ⟨y, hy, z, hz, rfl⟩
     refine' ⟨⁅x, y⁆, N.lie_mem hy, ⁅x, z⁆, N'.lie_mem hz, (lie_add _ _ _).symm⟩
-  refine' le_antisymm (infₛ_le ⟨{ (N ⊔ N' : Submodule R M) with lie_mem := aux }, _⟩) _
+  refine' le_antisymm (sInf_le ⟨{ (N ⊔ N' : Submodule R M) with lie_mem := aux }, _⟩) _
   ·
     simp only [exists_prop, and_true_iff, mem_set_of_eq, eq_self_iff_true, coe_to_submodule_mk, ←
       coe_submodule_le_coe_submodule, and_self_iff, le_sup_left, le_sup_right]
@@ -667,7 +667,7 @@ variable (R L) (s : Set M)
 
 /-- The `lie_span` of a set `s ⊆ M` is the smallest Lie submodule of `M` that contains `s`. -/
 def lieSpan : LieSubmodule R L M :=
-  infₛ { N | s ⊆ N }
+  sInf { N | s ⊆ N }
 #align lie_submodule.lie_span LieSubmodule.lieSpan
 
 variable {R L s}
@@ -753,9 +753,9 @@ theorem span_union (s t : Set M) : lieSpan R L (s ∪ t) = lieSpan R L s ⊔ lie
   (LieSubmodule.gi R L M).gc.l_sup
 #align lie_submodule.span_union LieSubmodule.span_union
 
-theorem span_unionᵢ {ι} (s : ι → Set M) : lieSpan R L (⋃ i, s i) = ⨆ i, lieSpan R L (s i) :=
-  (LieSubmodule.gi R L M).gc.l_supᵢ
-#align lie_submodule.span_Union LieSubmodule.span_unionᵢ
+theorem span_iUnion {ι} (s : ι → Set M) : lieSpan R L (⋃ i, s i) = ⨆ i, lieSpan R L (s i) :=
+  (LieSubmodule.gi R L M).gc.l_iSup
+#align lie_submodule.span_Union LieSubmodule.span_iUnion
 
 end LieSpan
 
Diff
@@ -441,12 +441,12 @@ instance : Inf (LieSubmodule R L M) :=
     { (N ⊓ N' : Submodule R M) with
       lie_mem := fun x m h => mem_inter (N.lie_mem h.1) (N'.lie_mem h.2) }⟩
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:370:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 instance : InfSet (LieSubmodule R L M) :=
   ⟨fun S =>
     {
       infₛ
-        "./././Mathport/Syntax/Translate/Expr.lean:370:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
+        "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" with
       lie_mem := fun x m h =>
         by
         simp only [Submodule.mem_carrier, mem_Inter, Submodule.infₛ_coe, mem_set_of_eq,
@@ -459,12 +459,12 @@ theorem inf_coe : (↑(N ⊓ N') : Set M) = N ∩ N' :=
   rfl
 #align lie_submodule.inf_coe LieSubmodule.inf_coe
 
-/- ./././Mathport/Syntax/Translate/Expr.lean:370:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
+/- ./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S} -/
 @[simp]
 theorem infₛ_coe_to_submodule (S : Set (LieSubmodule R L M)) :
     (↑(infₛ S) : Submodule R M) =
       infₛ
-        "./././Mathport/Syntax/Translate/Expr.lean:370:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
+        "./././Mathport/Syntax/Translate/Expr.lean:366:4: unsupported set replacement {((s : submodule R M)) | s «expr ∈ » S}" :=
   rfl
 #align lie_submodule.Inf_coe_to_submodule LieSubmodule.infₛ_coe_to_submodule
 
Diff
@@ -436,7 +436,7 @@ theorem mem_top (x : M) : x ∈ (⊤ : LieSubmodule R L M) :=
   mem_univ x
 #align lie_submodule.mem_top LieSubmodule.mem_top
 
-instance : HasInf (LieSubmodule R L M) :=
+instance : Inf (LieSubmodule R L M) :=
   ⟨fun N N' =>
     { (N ⊓ N' : Submodule R M) with
       lie_mem := fun x m h => mem_inter (N.lie_mem h.1) (N'.lie_mem h.2) }⟩
Diff
@@ -1135,7 +1135,7 @@ theorem coe_map_of_surjective (h : Function.Surjective f) :
         have hy' : ∃ x : L, x ∈ I ∧ f x = y := by simpa [hy]
         obtain ⟨z₂, hz₂, rfl⟩ := hy'
         obtain ⟨z₁, rfl⟩ := h x
-        simp only [LieHom.coe_to_linearMap, SetLike.mem_coe, Set.mem_image,
+        simp only [LieHom.coe_toLinearMap, SetLike.mem_coe, Set.mem_image,
           LieSubmodule.mem_coeSubmodule, Submodule.mem_carrier, Submodule.map_coe]
         use ⁅z₁, z₂⁆
         exact ⟨I.lie_mem hz₂, f.map_lie z₁ z₂⟩ }

Changes in mathlib4

mathlib3
mathlib4
feat(Algebra/Lie): prove derivations are inner in finite-dimensional Killing Lie algebra (#12250)

This finishes the proof that all derivations in a finite-dimensional Lie algebra with non-degenerate Killing form are inner derivations, a project discussed in this thread with @ocfnash.

Co-authored-by: Oliver Nash <github@olivernash.org>

Diff
@@ -1114,6 +1114,9 @@ theorem isIdealMorphism_def : f.IsIdealMorphism ↔ (f.idealRange : LieSubalgebr
   Iff.rfl
 #align lie_hom.is_ideal_morphism_def LieHom.isIdealMorphism_def
 
+variable {f} in
+theorem IsIdealMorphism.eq (hf : f.IsIdealMorphism) : f.idealRange = f.range := hf
+
 theorem isIdealMorphism_iff : f.IsIdealMorphism ↔ ∀ (x : L') (y : L), ∃ z : L, ⁅x, f y⁆ = f z := by
   simp only [isIdealMorphism_def, idealRange_eq_lieSpan_range, ←
     LieSubalgebra.coe_to_submodule_eq_iff, ← f.range.coe_to_submodule,
fix: generalize index types of iSup to Sort (#12114)

This breaks a few simp proofs which were expecting these lemmas to apply to the data binders but not the prop binders.

Diff
@@ -547,7 +547,7 @@ theorem independent_iff_coe_toSubmodule {ι : Type*} {N : ι → LieSubmodule R
     CompleteLattice.Independent N ↔ CompleteLattice.Independent fun i ↦ (N i : Submodule R M) := by
   simp [CompleteLattice.independent_def, disjoint_iff_coe_toSubmodule]
 
-theorem iSup_eq_top_iff_coe_toSubmodule {ι : Type*} {N : ι → LieSubmodule R L M} :
+theorem iSup_eq_top_iff_coe_toSubmodule {ι : Sort*} {N : ι → LieSubmodule R L M} :
     ⨆ i, N i = ⊤ ↔ ⨆ i, (N i : Submodule R M) = ⊤ := by
   rw [← iSup_coe_toSubmodule, ← top_coeSubmodule (L := L), coe_toSubmodule_eq_iff]
 
feat(Algebra/Lie): define adjoint action and its ideal image (#12106)

This defines the adjoint action of a Lie algebra L on itself, when seen as an homomorphism of Lie algebras from L to the Lie algebra of its derivations.

The adjoint action was also defined in the Mathlib.Algebra.Lie.OfAssociative.lean file, under the name LieAlgebra.ad, as the homomorphism with values in the endormophisms of L. We make the link between both. This design choice was discussed in this thread.

We also establish elementary properties, such as the fact that the image of the adjoint action is an ideal of the derivations.

This is the penultimate step towards proving that all derivations of a finite-dimensional semisimple Lie algebra are inner, a goal described in this thread.

Diff
@@ -1104,7 +1104,7 @@ theorem idealRange_eq_map : f.idealRange = LieIdeal.map f ⊤ := by
   rfl
 #align lie_hom.ideal_range_eq_map LieHom.idealRange_eq_map
 
-/-- The condition that the image of a morphism of Lie algebras is an ideal. -/
+/-- The condition that the range of a morphism of Lie algebras is an ideal. -/
 def IsIdealMorphism : Prop :=
   (f.idealRange : LieSubalgebra R L') = f.range
 #align lie_hom.is_ideal_morphism LieHom.IsIdealMorphism
@@ -1149,7 +1149,7 @@ theorem mem_ker {x : L} : x ∈ ker f ↔ f x = 0 :=
     simp only [ker_coeSubmodule, LinearMap.mem_ker, coe_toLinearMap]
 #align lie_hom.mem_ker LieHom.mem_ker
 
-theorem mem_idealRange {x : L} : f x ∈ idealRange f := by
+theorem mem_idealRange (x : L) : f x ∈ idealRange f := by
   rw [idealRange_eq_map]
   exact LieIdeal.mem_map (LieSubmodule.mem_top x)
 #align lie_hom.mem_ideal_range LieHom.mem_idealRange
style: replace '.-/' by '. -/' (#11938)

Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.

Diff
@@ -665,7 +665,8 @@ theorem injective_incl : Function.Injective N.incl := Subtype.coe_injective
 
 variable {N N'} (h : N ≤ N')
 
-/-- Given two nested Lie submodules `N ⊆ N'`, the inclusion `N ↪ N'` is a morphism of Lie modules.-/
+/-- Given two nested Lie submodules `N ⊆ N'`,
+the inclusion `N ↪ N'` is a morphism of Lie modules. -/
 def inclusion : N →ₗ⁅R,L⁆ N' where
   __ := Submodule.inclusion (show N.toSubmodule ≤ N'.toSubmodule from h)
   map_lie' := rfl
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -38,9 +38,7 @@ universe u v w w₁ w₂
 section LieSubmodule
 
 variable (R : Type u) (L : Type v) (M : Type w)
-
 variable [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M]
-
 variable [LieRingModule L M] [LieModule R L M]
 
 /-- A Lie submodule of a Lie module is a submodule that is closed under the Lie bracket.
@@ -340,11 +338,8 @@ end LieSubmodule
 namespace LieSubmodule
 
 variable {R : Type u} {L : Type v} {M : Type w}
-
 variable [CommRing R] [LieRing L] [LieAlgebra R L] [AddCommGroup M] [Module R M]
-
 variable [LieRingModule L M] [LieModule R L M]
-
 variable (N N' : LieSubmodule R L M) (I J : LieIdeal R L)
 
 section LatticeStructure
@@ -810,11 +805,8 @@ end LieSubmodule
 section LieSubmoduleMapAndComap
 
 variable {R : Type u} {L : Type v} {L' : Type w₂} {M : Type w} {M' : Type w₁}
-
 variable [CommRing R] [LieRing L] [LieAlgebra R L] [LieRing L'] [LieAlgebra R L']
-
 variable [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M]
-
 variable [AddCommGroup M'] [Module R M'] [LieRingModule L M'] [LieModule R L M']
 
 namespace LieSubmodule
@@ -1356,13 +1348,9 @@ end LieSubmoduleMapAndComap
 namespace LieModuleHom
 
 variable {R : Type u} {L : Type v} {M : Type w} {N : Type w₁}
-
 variable [CommRing R] [LieRing L] [LieAlgebra R L]
-
 variable [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M]
-
 variable [AddCommGroup N] [Module R N] [LieRingModule L N] [LieModule R L N]
-
 variable (f : M →ₗ⁅R,L⁆ N)
 
 /-- The kernel of a morphism of Lie algebras, as an ideal in the domain. -/
@@ -1448,11 +1436,8 @@ end LieModuleHom
 namespace LieSubmodule
 
 variable {R : Type u} {L : Type v} {M : Type w}
-
 variable [CommRing R] [LieRing L] [LieAlgebra R L]
-
 variable [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M]
-
 variable (N : LieSubmodule R L M)
 
 @[simp]
@@ -1495,7 +1480,6 @@ end LieSubmodule
 section TopEquiv
 
 variable {R : Type u} {L : Type v}
-
 variable [CommRing R] [LieRing L] [LieAlgebra R L]
 
 /-- The natural equivalence between the 'top' Lie subalgebra and the enclosing Lie algebra.
refactor: do not allow nsmul and zsmul to default automatically (#6262)

This PR removes the default values for nsmul and zsmul, forcing the user to populate them manually. The previous behavior can be obtained by writing nsmul := nsmulRec and zsmul := zsmulRec, which is now in the docstring for these fields.

The motivation here is to make it more obvious when module diamonds are being introduced, or at least where they might be hiding; you can now simply search for nsmulRec in the source code.

Arguably we should do the same thing for intCast, natCast, pow, and zpow too, but diamonds are less common in those fields, so I'll leave them to a subsequent PR.

Co-authored-by: Matthew Ballard <matt@mrb.email>

Diff
@@ -556,13 +556,16 @@ theorem iSup_eq_top_iff_coe_toSubmodule {ι : Type*} {N : ι → LieSubmodule R
     ⨆ i, N i = ⊤ ↔ ⨆ i, (N i : Submodule R M) = ⊤ := by
   rw [← iSup_coe_toSubmodule, ← top_coeSubmodule (L := L), coe_toSubmodule_eq_iff]
 
+instance : Add (LieSubmodule R L M) where add := Sup.sup
+
+instance : Zero (LieSubmodule R L M) where zero := ⊥
+
 instance : AddCommMonoid (LieSubmodule R L M) where
-  add := (· ⊔ ·)
   add_assoc := sup_assoc
-  zero := ⊥
   zero_add := bot_sup_eq
   add_zero := sup_bot_eq
   add_comm := sup_comm
+  nsmul := nsmulRec
 
 @[simp]
 theorem add_eq_sup : N + N' = N ⊔ N' :=
chore(Order): Make more arguments explicit (#11033)

Those lemmas have historically been very annoying to use in rw since all their arguments were implicit. One too many people complained about it on Zulip, so I'm changing them.

Downstream code broken by this change can fix it by adding appropriately many _s.

Also marks CauSeq.ext @[ext].

Order.BoundedOrder

  • top_sup_eq
  • sup_top_eq
  • bot_sup_eq
  • sup_bot_eq
  • top_inf_eq
  • inf_top_eq
  • bot_inf_eq
  • inf_bot_eq

Order.Lattice

  • sup_idem
  • sup_comm
  • sup_assoc
  • sup_left_idem
  • sup_right_idem
  • inf_idem
  • inf_comm
  • inf_assoc
  • inf_left_idem
  • inf_right_idem
  • sup_inf_left
  • sup_inf_right
  • inf_sup_left
  • inf_sup_right

Order.MinMax

  • max_min_distrib_left
  • max_min_distrib_right
  • min_max_distrib_left
  • min_max_distrib_right

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -558,11 +558,11 @@ theorem iSup_eq_top_iff_coe_toSubmodule {ι : Type*} {N : ι → LieSubmodule R
 
 instance : AddCommMonoid (LieSubmodule R L M) where
   add := (· ⊔ ·)
-  add_assoc _ _ _ := sup_assoc
+  add_assoc := sup_assoc
   zero := ⊥
-  zero_add _ := bot_sup_eq
-  add_zero _ := sup_bot_eq
-  add_comm _ _ := sup_comm
+  zero_add := bot_sup_eq
+  add_zero := sup_bot_eq
+  add_comm := sup_comm
 
 @[simp]
 theorem add_eq_sup : N + N' = N ⊔ N' :=
chore: remove terminal, terminal refines (#10762)

I replaced a few "terminal" refine/refine's with exact.

The strategy was very simple-minded: essentially any refine whose following line had smaller indentation got replaced by exact and then I cleaned up the mess.

This PR certainly leaves some further terminal refines, but maybe the current change is beneficial.

Diff
@@ -536,7 +536,7 @@ theorem iSup_induction' {ι} (N : ι → LieSubmodule R L M) {C : (x : M) → (x
   · exact ⟨_, hN _ _ hx⟩
   · exact ⟨_, h0⟩
   · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
-    refine' ⟨_, hadd _ _ _ _ Cx Cy⟩
+    exact ⟨_, hadd _ _ _ _ Cx Cy⟩
 
 theorem disjoint_iff_coe_toSubmodule :
     Disjoint N N' ↔ Disjoint (N : Submodule R M) (N' : Submodule R M) := by
chore: classify simp can do this porting notes (#10619)

Classify by adding issue number (#10618) to porting notes claiming anything semantically equivalent to simp can prove this or simp can simplify this.

Diff
@@ -89,7 +89,7 @@ theorem coe_toSubmodule : ((N : Submodule R M) : Set M) = N :=
   rfl
 #align lie_submodule.coe_to_submodule LieSubmodule.coe_toSubmodule
 
--- Porting note: `simp` can prove this after `mem_coeSubmodule` is added to the simp set,
+-- Porting note (#10618): `simp` can prove this after `mem_coeSubmodule` is added to the simp set,
 -- but `dsimp` can't.
 @[simp, nolint simpNF]
 theorem mem_carrier {x : M} : x ∈ N.carrier ↔ x ∈ (N : Set M) :=
@@ -120,7 +120,7 @@ protected theorem zero_mem : (0 : M) ∈ N :=
   zero_mem N
 #align lie_submodule.zero_mem LieSubmodule.zero_mem
 
--- Porting note: @[simp] can prove this
+-- Porting note (#10618): @[simp] can prove this
 theorem mk_eq_zero {x} (h : x ∈ N) : (⟨x, h⟩ : N) = 0 ↔ x = 0 :=
   Subtype.ext_iff_val
 #align lie_submodule.mk_eq_zero LieSubmodule.mk_eq_zero
feat: basic theory of chains of roots / weights of Lie algebras / modules (#10548)
Diff
@@ -66,6 +66,9 @@ instance : AddSubgroupClass (LieSubmodule R L M) M where
   zero_mem N := N.zero_mem'
   neg_mem {N} x hx := show -x ∈ N.toSubmodule from neg_mem hx
 
+instance instSmulMemClass : SMulMemClass (LieSubmodule R L M) R M where
+  smul_mem {s} c _ h := s.smul_mem'  c h
+
 /-- The zero module is a Lie submodule of any Lie module. -/
 instance : Zero (LieSubmodule R L M) :=
   ⟨{ (0 : Submodule R M) with
feat: the pairing of a Lie algebra root space with its negative (#10454)
Diff
@@ -1424,6 +1424,19 @@ theorem map_top : LieSubmodule.map f ⊤ = f.range := by ext; simp [LieSubmodule
 theorem range_eq_top : f.range = ⊤ ↔ Function.Surjective f := by
   rw [SetLike.ext'_iff, coe_range, LieSubmodule.top_coe, Set.range_iff_surjective]
 
+/-- A morphism of Lie modules `f : M → N` whose values lie in a Lie submodule `P ⊆ N` can be
+restricted to a morphism of Lie modules `M → P`. -/
+def codRestrict (P : LieSubmodule R L N) (f : M →ₗ⁅R,L⁆ N) (h : ∀ m, f m ∈ P) :
+    M →ₗ⁅R,L⁆ P where
+  toFun := f.toLinearMap.codRestrict P h
+  __ := f.toLinearMap.codRestrict P h
+  map_lie' {x m} := by ext; simp
+
+@[simp]
+lemma codRestrict_apply (P : LieSubmodule R L N) (f : M →ₗ⁅R,L⁆ N) (h : ∀ m, f m ∈ P) (m : M) :
+    (f.codRestrict P h m : N) = f m :=
+  rfl
+
 end LieModuleHom
 
 namespace LieSubmodule
refactor(Data/FunLike): use unbundled inheritance from FunLike (#8386)

The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike is EquivLike, since that has a custom coe_injective' field that is easier to implement. All other classes should take FunLike or EquivLike as a parameter.

Zulip thread

Important changes

Previously, morphism classes would be Type-valued and extend FunLike:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

After this PR, they should be Prop-valued and take FunLike as a parameter:

/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
  [FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))

(Note that A B stay marked as outParam even though they are not purely required to be so due to the FunLike parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam is slightly faster.)

Similarly, MyEquivClass should take EquivLike as a parameter.

As a result, every mention of [MyHomClass F A B] should become [FunLike F A B] [MyHomClass F A B].

Remaining issues

Slower (failing) search

While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul is more expensive. This is due to suboptimal processing of arguments. For example:

variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)

theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y

example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _

Before this PR, applying map_mul f gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Since M and N are out_params, [MulHomClass F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found.

After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]. Now [FunLike F ?M ?N] is synthesized first, supplies values for ?M and ?N and then the Mul M and Mul N instances can be found, before trying MulHomClass F M N which fails. Since the Mul hierarchy is very big, this can be slow to fail, especially when there is no such Mul instance.

A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N] because MulHomClass fails or succeeds much faster than the others.

As a consequence, the simpNF linter is much slower since by design it tries and fails to apply many map_ lemmas. The same issue occurs a few times in existing calls to simp [map_mul], where map_mul is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.

simp not firing sometimes

This affects map_smulₛₗ and related definitions. For simp lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw can find every argument to map_smulₛₗ successfully but simp can't: leanprover/lean4#3701.

Missing instances due to unification failing

Especially in the category theory library, we might sometimes have a type A which is also accessible as a synonym (Bundled A hA).1. Instance synthesis doesn't always work if we have f : A →* B but x * y : (Bundled A hA).1 or vice versa. This seems to be mostly fixed by keeping A B as outParams in MulHomClass F A B. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1 instead of using the syntax in the discrimination tree.)

Workaround for issues

The timeouts can be worked around for now by specifying which map_mul we mean, either as map_mul f for some explicit f, or as e.g. MonoidHomClass.map_mul.

map_smulₛₗ not firing as simp lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ a simp lemma instead of the generic map_smulₛₗ. Writing simp [map_smulₛₗ _] also works.

Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>

Diff
@@ -944,6 +944,8 @@ variable (N) in
 noncomputable def equivMapOfInjective (hf : Function.Injective f) :
     N ≃ₗ⁅R,L⁆ N.map f :=
   { Submodule.equivMapOfInjective (f : M →ₗ[R] M') hf N with
+    -- Note: #8386 had to specify `invFun` explicitly this way, otherwise we'd get a type mismatch
+    invFun := by exact DFunLike.coe (Submodule.equivMapOfInjective (f : M →ₗ[R] M') hf N).symm
     map_lie' := by rintro x ⟨m, hm : m ∈ N⟩; ext; exact f.map_lie x m }
 
 /-- An equivalence of Lie modules yields an order-preserving equivalence of their lattices of Lie
chore: move to v4.6.0-rc1, merging adaptations from bump/v4.6.0 (#10176)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>

Diff
@@ -128,7 +128,6 @@ theorem coe_toSet_mk (S : Set M) (h₁ h₂ h₃ h₄) :
   rfl
 #align lie_submodule.coe_to_set_mk LieSubmodule.coe_toSet_mk
 
-@[simp]
 theorem coe_toSubmodule_mk (p : Submodule R M) (h) :
     (({ p with lie_mem := h } : LieSubmodule R L M) : Submodule R M) = p := by cases p; rfl
 #align lie_submodule.coe_to_submodule_mk LieSubmodule.coe_toSubmodule_mk
chore: tidy various files (#8818)
Diff
@@ -366,15 +366,15 @@ theorem bot_coe : ((⊥ : LieSubmodule R L M) : Set M) = {0} :=
   rfl
 #align lie_submodule.bot_coe LieSubmodule.bot_coe
 
-@[simp]
-theorem coeSubmodule_eq_bot_iff : (N : Submodule R M) = ⊥ ↔ N = ⊥ := by
-  rw [← coe_toSubmodule_eq_iff]; rfl
-
 @[simp]
 theorem bot_coeSubmodule : ((⊥ : LieSubmodule R L M) : Submodule R M) = ⊥ :=
   rfl
 #align lie_submodule.bot_coe_submodule LieSubmodule.bot_coeSubmodule
 
+@[simp]
+theorem coeSubmodule_eq_bot_iff : (N : Submodule R M) = ⊥ ↔ N = ⊥ := by
+  rw [← coe_toSubmodule_eq_iff, bot_coeSubmodule]
+
 @[simp]
 theorem mem_bot (x : M) : x ∈ (⊥ : LieSubmodule R L M) ↔ x = 0 :=
   mem_singleton_iff
@@ -388,15 +388,15 @@ theorem top_coe : ((⊤ : LieSubmodule R L M) : Set M) = univ :=
   rfl
 #align lie_submodule.top_coe LieSubmodule.top_coe
 
-@[simp]
-theorem coeSubmodule_eq_top_iff : (N : Submodule R M) = ⊤ ↔ N = ⊤ := by
-  rw [← coe_toSubmodule_eq_iff]; rfl
-
 @[simp]
 theorem top_coeSubmodule : ((⊤ : LieSubmodule R L M) : Submodule R M) = ⊤ :=
   rfl
 #align lie_submodule.top_coe_submodule LieSubmodule.top_coeSubmodule
 
+@[simp]
+theorem coeSubmodule_eq_top_iff : (N : Submodule R M) = ⊤ ↔ N = ⊤ := by
+  rw [← coe_toSubmodule_eq_iff, top_coeSubmodule]
+
 @[simp]
 theorem mem_top (x : M) : x ∈ (⊤ : LieSubmodule R L M) :=
   mem_univ x
feat: generalise results about Lie module weight spans from Abelian to nilpotent Lie algebras (#8718)
Diff
@@ -186,7 +186,7 @@ instance {S : Type*} [Semiring S] [SMul S R] [SMul Sᵐᵒᵖ R] [Module S M] [M
     [IsScalarTower S R M] [IsScalarTower Sᵐᵒᵖ R M] [IsCentralScalar S M] : IsCentralScalar S N :=
   N.toSubmodule.isCentralScalar
 
-instance : LieModule R L N where
+instance instLieModule : LieModule R L N where
   lie_smul := by intro t x y; apply SetCoe.ext; apply lie_smul
   smul_lie := by intro t x y; apply SetCoe.ext; apply smul_lie
 
feat: if a Lie algebra has non-degenerate Killing form then its Cartan subalgebras are Abelian (#8430)

Note: the proof (due to Zassenhaus) makes no assumption about the characteristic of the coefficients.

Diff
@@ -546,6 +546,14 @@ theorem codisjoint_iff_coe_toSubmodule :
   rw [codisjoint_iff, codisjoint_iff, ← coe_toSubmodule_eq_iff, sup_coe_toSubmodule,
     top_coeSubmodule, ← codisjoint_iff]
 
+theorem independent_iff_coe_toSubmodule {ι : Type*} {N : ι → LieSubmodule R L M} :
+    CompleteLattice.Independent N ↔ CompleteLattice.Independent fun i ↦ (N i : Submodule R M) := by
+  simp [CompleteLattice.independent_def, disjoint_iff_coe_toSubmodule]
+
+theorem iSup_eq_top_iff_coe_toSubmodule {ι : Type*} {N : ι → LieSubmodule R L M} :
+    ⨆ i, N i = ⊤ ↔ ⨆ i, (N i : Submodule R M) = ⊤ := by
+  rw [← iSup_coe_toSubmodule, ← top_coeSubmodule (L := L), coe_toSubmodule_eq_iff]
+
 instance : AddCommMonoid (LieSubmodule R L M) where
   add := (· ⊔ ·)
   add_assoc _ _ _ := sup_assoc
refactor: rename Submodule.ofLe to Submodule.inclusion (#8470)

This matches Set.inclusion, Subring.inclusion, Subalgebra.inclusion, etc.

Also renames the homOfLe spellings in Algebra/Lie to match.

Note that we leave LieSubalgebra.ofLe, as this is a completely different statement!

As requested by @alreadydone.

Diff
@@ -658,22 +658,23 @@ theorem injective_incl : Function.Injective N.incl := Subtype.coe_injective
 variable {N N'} (h : N ≤ N')
 
 /-- Given two nested Lie submodules `N ⊆ N'`, the inclusion `N ↪ N'` is a morphism of Lie modules.-/
-def homOfLe : N →ₗ⁅R,L⁆ N' :=
-  { Submodule.ofLe (show N.toSubmodule ≤ N'.toSubmodule from h) with map_lie' := fun {_ _} ↦ rfl }
-#align lie_submodule.hom_of_le LieSubmodule.homOfLe
+def inclusion : N →ₗ⁅R,L⁆ N' where
+  __ := Submodule.inclusion (show N.toSubmodule ≤ N'.toSubmodule from h)
+  map_lie' := rfl
+#align lie_submodule.hom_of_le LieSubmodule.inclusion
 
 @[simp]
-theorem coe_homOfLe (m : N) : (homOfLe h m : M) = m :=
+theorem coe_inclusion (m : N) : (inclusion h m : M) = m :=
   rfl
-#align lie_submodule.coe_hom_of_le LieSubmodule.coe_homOfLe
+#align lie_submodule.coe_hom_of_le LieSubmodule.coe_inclusion
 
-theorem homOfLe_apply (m : N) : homOfLe h m = ⟨m.1, h m.2⟩ :=
+theorem inclusion_apply (m : N) : inclusion h m = ⟨m.1, h m.2⟩ :=
   rfl
-#align lie_submodule.hom_of_le_apply LieSubmodule.homOfLe_apply
+#align lie_submodule.hom_of_le_apply LieSubmodule.inclusion_apply
 
-theorem homOfLe_injective : Function.Injective (homOfLe h) := fun x y ↦ by
-  simp only [homOfLe_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe]
-#align lie_submodule.hom_of_le_injective LieSubmodule.homOfLe_injective
+theorem inclusion_injective : Function.Injective (inclusion h) := fun x y ↦ by
+  simp only [inclusion_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe]
+#align lie_submodule.hom_of_le_injective LieSubmodule.inclusion_injective
 
 end InclusionMaps
 
@@ -1232,23 +1233,26 @@ theorem bot_of_map_eq_bot {I : LieIdeal R L} (h₁ : Function.Injective f) (h₂
 #align lie_ideal.bot_of_map_eq_bot LieIdeal.bot_of_map_eq_bot
 
 /-- Given two nested Lie ideals `I₁ ⊆ I₂`, the inclusion `I₁ ↪ I₂` is a morphism of Lie algebras. -/
-def homOfLe {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : I₁ →ₗ⁅R⁆ I₂ :=
-  { Submodule.ofLe (show I₁.toSubmodule ≤ I₂.toSubmodule from h) with map_lie' := fun {_ _} ↦ rfl }
-#align lie_ideal.hom_of_le LieIdeal.homOfLe
+def inclusion {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : I₁ →ₗ⁅R⁆ I₂ where
+  __ := Submodule.inclusion (show I₁.toSubmodule ≤ I₂.toSubmodule from h)
+  map_lie' := rfl
+#align lie_ideal.hom_of_le LieIdeal.inclusion
 
 @[simp]
-theorem coe_homOfLe {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : (homOfLe h x : L) = x :=
+theorem coe_inclusion {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : (inclusion h x : L) = x :=
   rfl
-#align lie_ideal.coe_hom_of_le LieIdeal.coe_homOfLe
+#align lie_ideal.coe_hom_of_le LieIdeal.coe_inclusion
 
-theorem homOfLe_apply {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) : homOfLe h x = ⟨x.1, h x.2⟩ :=
+theorem inclusion_apply {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) (x : I₁) :
+    inclusion h x = ⟨x.1, h x.2⟩ :=
   rfl
-#align lie_ideal.hom_of_le_apply LieIdeal.homOfLe_apply
+#align lie_ideal.hom_of_le_apply LieIdeal.inclusion_apply
 
-theorem homOfLe_injective {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) : Function.Injective (homOfLe h) :=
+theorem inclusion_injective {I₁ I₂ : LieIdeal R L} (h : I₁ ≤ I₂) :
+    Function.Injective (inclusion h) :=
   fun x y ↦ by
-  simp only [homOfLe_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe]
-#align lie_ideal.hom_of_le_injective LieIdeal.homOfLe_injective
+  simp only [inclusion_apply, imp_self, Subtype.mk_eq_mk, SetLike.coe_eq_coe]
+#align lie_ideal.hom_of_le_injective LieIdeal.inclusion_injective
 
 -- Porting note: LHS simplifies, so moved @[simp] to new theorem `map_sup_ker_eq_map'`
 theorem map_sup_ker_eq_map : LieIdeal.map f (I ⊔ f.ker) = LieIdeal.map f I := by
feat: weight space decomposition of Lie modules (#7963)
Diff
@@ -366,6 +366,10 @@ theorem bot_coe : ((⊥ : LieSubmodule R L M) : Set M) = {0} :=
   rfl
 #align lie_submodule.bot_coe LieSubmodule.bot_coe
 
+@[simp]
+theorem coeSubmodule_eq_bot_iff : (N : Submodule R M) = ⊥ ↔ N = ⊥ := by
+  rw [← coe_toSubmodule_eq_iff]; rfl
+
 @[simp]
 theorem bot_coeSubmodule : ((⊥ : LieSubmodule R L M) : Submodule R M) = ⊥ :=
   rfl
@@ -384,6 +388,10 @@ theorem top_coe : ((⊤ : LieSubmodule R L M) : Set M) = univ :=
   rfl
 #align lie_submodule.top_coe LieSubmodule.top_coe
 
+@[simp]
+theorem coeSubmodule_eq_top_iff : (N : Submodule R M) = ⊤ ↔ N = ⊤ := by
+  rw [← coe_toSubmodule_eq_iff]; rfl
+
 @[simp]
 theorem top_coeSubmodule : ((⊤ : LieSubmodule R L M) : Submodule R M) = ⊤ :=
   rfl
@@ -528,6 +536,16 @@ theorem iSup_induction' {ι} (N : ι → LieSubmodule R L M) {C : (x : M) → (x
   · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
     refine' ⟨_, hadd _ _ _ _ Cx Cy⟩
 
+theorem disjoint_iff_coe_toSubmodule :
+    Disjoint N N' ↔ Disjoint (N : Submodule R M) (N' : Submodule R M) := by
+  rw [disjoint_iff, disjoint_iff, ← coe_toSubmodule_eq_iff, inf_coe_toSubmodule, bot_coeSubmodule,
+    ← disjoint_iff]
+
+theorem codisjoint_iff_coe_toSubmodule :
+    Codisjoint N N' ↔ Codisjoint (N : Submodule R M) (N' : Submodule R M) := by
+  rw [codisjoint_iff, codisjoint_iff, ← coe_toSubmodule_eq_iff, sup_coe_toSubmodule,
+    top_coeSubmodule, ← codisjoint_iff]
+
 instance : AddCommMonoid (LieSubmodule R L M) where
   add := (· ⊔ ·)
   add_assoc _ _ _ := sup_assoc
@@ -635,6 +653,8 @@ theorem incl_eq_val : (N.incl : N → M) = Subtype.val :=
   rfl
 #align lie_submodule.incl_eq_val LieSubmodule.incl_eq_val
 
+theorem injective_incl : Function.Injective N.incl := Subtype.coe_injective
+
 variable {N N'} (h : N ≤ N')
 
 /-- Given two nested Lie submodules `N ⊆ N'`, the inclusion `N ↪ N'` is a morphism of Lie modules.-/
@@ -684,6 +704,7 @@ theorem submodule_span_le_lieSpan : Submodule.span R s ≤ lieSpan R L s := by
   apply subset_lieSpan
 #align lie_submodule.submodule_span_le_lie_span LieSubmodule.submodule_span_le_lieSpan
 
+@[simp]
 theorem lieSpan_le {N} : lieSpan R L s ≤ N ↔ s ⊆ N := by
   constructor
   · exact Subset.trans subset_lieSpan
@@ -740,6 +761,32 @@ theorem span_iUnion {ι} (s : ι → Set M) : lieSpan R L (⋃ i, s i) = ⨆ i,
   (LieSubmodule.gi R L M).gc.l_iSup
 #align lie_submodule.span_Union LieSubmodule.span_iUnion
 
+lemma isCompactElement_lieSpan_singleton (m : M) :
+    CompleteLattice.IsCompactElement (lieSpan R L {m}) := by
+  rw [CompleteLattice.isCompactElement_iff_le_of_directed_sSup_le]
+  intro s hne hdir hsup
+  replace hsup : m ∈ (↑(sSup s) : Set M) := (SetLike.le_def.mp hsup) (subset_lieSpan rfl)
+  suffices (↑(sSup s) : Set M) = ⋃ N ∈ s, ↑N by
+    obtain ⟨N : LieSubmodule R L M, hN : N ∈ s, hN' : m ∈ N⟩ := by
+      simp_rw [this, Set.mem_iUnion, SetLike.mem_coe, exists_prop] at hsup; assumption
+    exact ⟨N, hN, by simpa⟩
+  replace hne : Nonempty s := Set.nonempty_coe_sort.mpr hne
+  have := Submodule.coe_iSup_of_directed _ hdir.directed_val
+  simp_rw [← iSup_coe_toSubmodule, Set.iUnion_coe_set, coe_toSubmodule] at this
+  rw [← this, SetLike.coe_set_eq, sSup_eq_iSup, iSup_subtype]
+
+@[simp]
+lemma sSup_image_lieSpan_singleton : sSup ((fun x ↦ lieSpan R L {x}) '' N) = N := by
+  refine le_antisymm (sSup_le <| by simp) ?_
+  simp_rw [← coeSubmodule_le_coeSubmodule, sSup_coe_toSubmodule, Set.mem_image, SetLike.mem_coe]
+  refine fun m hm ↦ Submodule.mem_sSup.mpr fun N' hN' ↦ ?_
+  replace hN' : ∀ m ∈ N, lieSpan R L {m} ≤ N' := by simpa using hN'
+  exact hN' _ hm (subset_lieSpan rfl)
+
+instance instIsCompactlyGenerated : IsCompactlyGenerated (LieSubmodule R L M) :=
+  ⟨fun N ↦ ⟨(fun x ↦ lieSpan R L {x}) '' N, fun _ ⟨m, _, hm⟩ ↦
+    hm ▸ isCompactElement_lieSpan_singleton R L m, N.sSup_image_lieSpan_singleton⟩⟩
+
 end LieSpan
 
 end LatticeStructure
@@ -823,7 +870,7 @@ theorem comap_inf {N₂' : LieSubmodule R L M'} :
   rfl
 
 @[simp]
-theorem map_iSup {ι : Type*} (N : ι → LieSubmodule R L M) :
+theorem map_iSup {ι : Sort*} (N : ι → LieSubmodule R L M) :
     (⨆ i, N i).map f = ⨆ i, (N i).map f :=
   (gc_map_comap f : GaloisConnection (map f) (comap f)).l_iSup
 
chore: clear some porting notes on rfl (#8063)

We remove some porting notes for rfls that by now work again.

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -320,8 +320,7 @@ theorem exists_lieIdeal_coe_eq_iff :
     (∃ I : LieIdeal R L, ↑I = K) ↔ ∀ x y : L, y ∈ K → ⁅x, y⁆ ∈ K := by
   simp only [← coe_to_submodule_eq_iff, LieIdeal.coe_to_lieSubalgebra_to_submodule,
     Submodule.exists_lieSubmodule_coe_eq_iff L]
-  -- Porting note: was `exact Iff.rfl`
-  simp only [mem_coe_submodule]
+  exact Iff.rfl
 #align lie_subalgebra.exists_lie_ideal_coe_eq_iff LieSubalgebra.exists_lieIdeal_coe_eq_iff
 
 theorem exists_nested_lieIdeal_coe_eq_iff {K' : LieSubalgebra R L} (h : K ≤ K') :
Revert "chore: revert #7703 (#7710)"

This reverts commit f3695eb2.

Diff
@@ -1442,7 +1442,8 @@ def LieIdeal.topEquiv : (⊤ : LieIdeal R L) ≃ₗ⁅R⁆ L :=
   LieSubalgebra.topEquiv
 #align lie_ideal.top_equiv LieIdeal.topEquiv
 
-@[simp]
+-- This lemma has always been bad, but leanprover/lean4#2644 made `simp` start noticing
+@[simp, nolint simpNF]
 theorem LieIdeal.topEquiv_apply (x : (⊤ : LieIdeal R L)) : LieIdeal.topEquiv x = x :=
   rfl
 #align lie_ideal.top_equiv_apply LieIdeal.topEquiv_apply
@@ -1455,7 +1456,8 @@ def LieModuleEquiv.ofTop : (⊤ : LieSubmodule R L M) ≃ₗ⁅R,L⁆ M :=
   { LinearEquiv.ofTop ⊤ rfl with
     map_lie' := rfl }
 
-@[simp] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
+-- This lemma has always been bad, but leanprover/lean4#2644 made `simp` start noticing
+@[simp, nolint simpNF] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
     LieModuleEquiv.ofTop R L M x = x :=
   rfl
 
chore: revert #7703 (#7710)

This reverts commit 26eb2b0a.

Diff
@@ -1442,8 +1442,7 @@ def LieIdeal.topEquiv : (⊤ : LieIdeal R L) ≃ₗ⁅R⁆ L :=
   LieSubalgebra.topEquiv
 #align lie_ideal.top_equiv LieIdeal.topEquiv
 
--- This lemma has always been bad, but leanprover/lean4#2644 made `simp` start noticing
-@[simp, nolint simpNF]
+@[simp]
 theorem LieIdeal.topEquiv_apply (x : (⊤ : LieIdeal R L)) : LieIdeal.topEquiv x = x :=
   rfl
 #align lie_ideal.top_equiv_apply LieIdeal.topEquiv_apply
@@ -1456,8 +1455,7 @@ def LieModuleEquiv.ofTop : (⊤ : LieSubmodule R L M) ≃ₗ⁅R,L⁆ M :=
   { LinearEquiv.ofTop ⊤ rfl with
     map_lie' := rfl }
 
--- This lemma has always been bad, but leanprover/lean4#2644 made `simp` start noticing
-@[simp, nolint simpNF] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
+@[simp] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
     LieModuleEquiv.ofTop R L M x = x :=
   rfl
 
chore: bump toolchain to v4.2.0-rc2 (#7703)

This includes all the changes from #7606.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -1442,7 +1442,8 @@ def LieIdeal.topEquiv : (⊤ : LieIdeal R L) ≃ₗ⁅R⁆ L :=
   LieSubalgebra.topEquiv
 #align lie_ideal.top_equiv LieIdeal.topEquiv
 
-@[simp]
+-- This lemma has always been bad, but leanprover/lean4#2644 made `simp` start noticing
+@[simp, nolint simpNF]
 theorem LieIdeal.topEquiv_apply (x : (⊤ : LieIdeal R L)) : LieIdeal.topEquiv x = x :=
   rfl
 #align lie_ideal.top_equiv_apply LieIdeal.topEquiv_apply
@@ -1455,7 +1456,8 @@ def LieModuleEquiv.ofTop : (⊤ : LieSubmodule R L M) ≃ₗ⁅R,L⁆ M :=
   { LinearEquiv.ofTop ⊤ rfl with
     map_lie' := rfl }
 
-@[simp] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
+-- This lemma has always been bad, but leanprover/lean4#2644 made `simp` start noticing
+@[simp, nolint simpNF] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
     LieModuleEquiv.ofTop R L M x = x :=
   rfl
 
feat: a non-singular Killing form remains non-singular when restricted to a Cartan subalgebra (#7613)

They key addition is the lemma LieAlgebra.IsKilling.ker_restrictBilinear_of_isCartanSubalgebra_eq_bot.

Diff
@@ -238,9 +238,6 @@ theorem lie_mem_left (I : LieIdeal R L) (x y : L) (h : x ∈ I) : ⁅x, y⁆ ∈
 #align lie_mem_left lie_mem_left
 
 /-- An ideal of a Lie algebra is a Lie subalgebra. -/
--- Porting note: added `@[coe]` to fix `norm_cast` issues, but this causes bad pretty-printing:
--- `(I : LieSubalgebra R L)` becomes `(↑R L I)`
-@[coe]
 def lieIdealSubalgebra (I : LieIdeal R L) : LieSubalgebra R L :=
   { I.toSubmodule with lie_mem' := by intro x y _ hy; apply lie_mem_right; exact hy }
 #align lie_ideal_subalgebra lieIdealSubalgebra
@@ -248,14 +245,12 @@ def lieIdealSubalgebra (I : LieIdeal R L) : LieSubalgebra R L :=
 instance : Coe (LieIdeal R L) (LieSubalgebra R L) :=
   ⟨lieIdealSubalgebra R L⟩
 
-@[norm_cast]
+@[simp]
 theorem LieIdeal.coe_toSubalgebra (I : LieIdeal R L) : ((I : LieSubalgebra R L) : Set L) = I :=
   rfl
 #align lie_ideal.coe_to_subalgebra LieIdeal.coe_toSubalgebra
 
--- Porting note: here and below, used `LieSubmodule.toSubmodule` rather than coercions, because
--- those are treated like `((I : LieSubalgebra R L) : Submodule R L)` instead.
-@[norm_cast]
+@[simp]
 theorem LieIdeal.coe_to_lieSubalgebra_to_submodule (I : LieIdeal R L) :
     ((I : LieSubalgebra R L) : Submodule R L) = LieSubmodule.toSubmodule I :=
   rfl
chore: improve defeq for Sup and sSup of LieSubmodules (#7608)

The point is that the following four lemmas are now all true by definition:

  • LieSubmodule.inf_coe_toSubmodule
  • LieSubmodule.sInf_coe_toSubmodule
  • LieSubmodule.sup_coe_toSubmodule [previously existed but not true by definition]
  • LieSubmodule.sSup_coe_toSubmodule [previously did not exist]
Diff
@@ -407,7 +407,7 @@ instance : Inf (LieSubmodule R L M) :=
 
 instance : InfSet (LieSubmodule R L M) :=
   ⟨fun S ↦
-    { sInf {((s : Submodule R M)) | s ∈ S} with
+    { toSubmodule := sInf {(s : Submodule R M) | s ∈ S}
       lie_mem := fun {x m} h ↦ by
         simp only [Submodule.mem_carrier, mem_iInter, Submodule.sInf_coe, mem_setOf_eq,
           forall_apply_eq_imp_iff₂, forall_exists_index, and_imp] at h ⊢
@@ -418,12 +418,22 @@ theorem inf_coe : (↑(N ⊓ N') : Set M) = ↑N ∩ ↑N' :=
   rfl
 #align lie_submodule.inf_coe LieSubmodule.inf_coe
 
+@[norm_cast, simp]
+theorem inf_coe_toSubmodule :
+    (↑(N ⊓ N') : Submodule R M) = (N : Submodule R M) ⊓ (N' : Submodule R M) :=
+  rfl
+#align lie_submodule.inf_coe_to_submodule LieSubmodule.inf_coe_toSubmodule
+
 @[simp]
 theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
-    (↑(sInf S) : Submodule R M) = sInf {((s : Submodule R M)) | s ∈ S} :=
+    (↑(sInf S) : Submodule R M) = sInf {(s : Submodule R M) | s ∈ S} :=
   rfl
 #align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_toSubmodule
 
+theorem sInf_coe_toSubmodule' (S : Set (LieSubmodule R L M)) :
+    (↑(sInf S) : Submodule R M) = ⨅ N ∈ S, (N : Submodule R M) := by
+  rw [sInf_coe_toSubmodule, ← Set.image, sInf_image]
+
 @[simp]
 theorem iInf_coe_toSubmodule {ι} (p : ι → LieSubmodule R L M) :
     (↑(⨅ i, p i) : Submodule R M) = ⨅ i, (p i : Submodule R M) := by
@@ -445,30 +455,84 @@ theorem iInf_coe {ι} (p : ι → LieSubmodule R L M) : (↑(⨅ i, p i) : Set M
 theorem mem_iInf {ι} (p : ι → LieSubmodule R L M) {x} : (x ∈ ⨅ i, p i) ↔ ∀ i, x ∈ p i := by
   rw [← SetLike.mem_coe, iInf_coe, Set.mem_iInter]; rfl
 
-theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) := by
-  have h : ∀ {N N' : LieSubmodule R L M}, (N : Set M) ≤ N' ↔ N ≤ N' := fun {_ _} ↦ Iff.rfl
-  apply IsGLB.of_image h
-  simp only [sInf_coe]
-  exact isGLB_biInf
-#align lie_submodule.Inf_glb LieSubmodule.sInf_glb
+instance : Sup (LieSubmodule R L M) where
+  sup N N' :=
+    { toSubmodule := (N : Submodule R M) ⊔ (N' : Submodule R M)
+      lie_mem := by
+        rintro x m (hm : m ∈ (N : Submodule R M) ⊔ (N' : Submodule R M))
+        change ⁅x, m⁆ ∈ (N : Submodule R M) ⊔ (N' : Submodule R M)
+        rw [Submodule.mem_sup] at hm ⊢
+        obtain ⟨y, hy, z, hz, rfl⟩ := hm
+        exact ⟨⁅x, y⁆, N.lie_mem hy, ⁅x, z⁆, N'.lie_mem hz, (lie_add _ _ _).symm⟩ }
+
+instance : SupSet (LieSubmodule R L M) where
+  sSup S :=
+    { toSubmodule := sSup {(p : Submodule R M) | p ∈ S}
+      lie_mem := by
+        intro x m (hm : m ∈ sSup {(p : Submodule R M) | p ∈ S})
+        change ⁅x, m⁆ ∈ sSup {(p : Submodule R M) | p ∈ S}
+        obtain ⟨s, hs, hsm⟩ := Submodule.mem_sSup_iff_exists_finset.mp hm
+        clear hm
+        classical
+        induction' s using Finset.induction_on with q t hqt ih generalizing m
+        · replace hsm : m = 0 := by simpa using hsm
+          simp [hsm]
+        · rw [Finset.iSup_insert] at hsm
+          obtain ⟨m', hm', u, hu, rfl⟩ := Submodule.mem_sup.mp hsm
+          rw [lie_add]
+          refine add_mem ?_ (ih (Subset.trans (by simp) hs) hu)
+          obtain ⟨p, hp, rfl⟩ : ∃ p ∈ S, ↑p = q := hs (Finset.mem_insert_self q t)
+          suffices p ≤ sSup {(p : Submodule R M) | p ∈ S} by exact this (p.lie_mem hm')
+          exact le_sSup ⟨p, hp, rfl⟩ }
 
-/-- The set of Lie submodules of a Lie module form a complete lattice.
+@[norm_cast, simp]
+theorem sup_coe_toSubmodule :
+    (↑(N ⊔ N') : Submodule R M) = (N : Submodule R M) ⊔ (N' : Submodule R M) := by
+  rfl
+#align lie_submodule.sup_coe_to_submodule LieSubmodule.sup_coe_toSubmodule
+
+@[simp]
+theorem sSup_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
+    (↑(sSup S) : Submodule R M) = sSup {(s : Submodule R M) | s ∈ S} :=
+  rfl
 
-We provide explicit values for the fields `bot`, `top`, `inf` to get more convenient definitions
-than we would otherwise obtain from `completeLatticeOfInf`. -/
+theorem sSup_coe_toSubmodule' (S : Set (LieSubmodule R L M)) :
+    (↑(sSup S) : Submodule R M) = ⨆ N ∈ S, (N : Submodule R M) := by
+  rw [sSup_coe_toSubmodule, ← Set.image, sSup_image]
+
+@[simp]
+theorem iSup_coe_toSubmodule {ι} (p : ι → LieSubmodule R L M) :
+    (↑(⨆ i, p i) : Submodule R M) = ⨆ i, (p i : Submodule R M) := by
+  rw [iSup, sSup_coe_toSubmodule]; ext; simp [Submodule.mem_sSup, Submodule.mem_iSup]
+
+/-- The set of Lie submodules of a Lie module form a complete lattice. -/
 instance : CompleteLattice (LieSubmodule R L M) :=
-  { SetLike.instPartialOrder,
-    completeLatticeOfInf _ sInf_glb with
-    le := (· ≤ ·)
-    lt := (· < ·)
-    bot := ⊥
-    bot_le := fun N _ h ↦ by rw [mem_bot] at h; rw [h]; exact N.zero_mem'
-    top := ⊤
-    le_top := fun _ _ _ ↦ trivial
-    inf := (· ⊓ ·)
-    le_inf := fun N₁ N₂ N₃ h₁₂ h₁₃ m hm ↦ ⟨h₁₂ hm, h₁₃ hm⟩
-    inf_le_left := fun _ _ _ ↦ And.left
-    inf_le_right := fun _ _ _ ↦ And.right }
+  { coeSubmodule_injective.completeLattice toSubmodule sup_coe_toSubmodule inf_coe_toSubmodule
+      sSup_coe_toSubmodule' sInf_coe_toSubmodule' rfl rfl with
+    toPartialOrder := SetLike.instPartialOrder }
+
+theorem mem_iSup_of_mem {ι} {b : M} {N : ι → LieSubmodule R L M} (i : ι) (h : b ∈ N i) :
+    b ∈ ⨆ i, N i :=
+  (le_iSup N i) h
+
+lemma iSup_induction {ι} (N : ι → LieSubmodule R L M) {C : M → Prop} {x : M}
+    (hx : x ∈ ⨆ i, N i) (hN : ∀ i, ∀ y ∈ N i, C y) (h0 : C 0)
+    (hadd : ∀ y z, C y → C z → C (y + z)) : C x := by
+  rw [← LieSubmodule.mem_coeSubmodule, LieSubmodule.iSup_coe_toSubmodule] at hx
+  exact Submodule.iSup_induction (C := C) (fun i ↦ (N i : Submodule R M)) hx hN h0 hadd
+
+@[elab_as_elim]
+theorem iSup_induction' {ι} (N : ι → LieSubmodule R L M) {C : (x : M) → (x ∈ ⨆ i, N i) → Prop}
+    (hN : ∀ (i) (x) (hx : x ∈ N i), C x (mem_iSup_of_mem i hx)) (h0 : C 0 (zero_mem _))
+    (hadd : ∀ x y hx hy, C x hx → C y hy → C (x + y) (add_mem ‹_› ‹_›)) {x : M}
+    (hx : x ∈ ⨆ i, N i) : C x hx := by
+  refine' Exists.elim _ fun (hx : x ∈ ⨆ i, N i) (hc : C x hx) => hc
+  refine' iSup_induction N (C := fun x : M ↦ ∃ (hx : x ∈ ⨆ i, N i), C x hx) hx
+    (fun i x hx => _) _ fun x y => _
+  · exact ⟨_, hN _ _ hx⟩
+  · exact ⟨_, h0⟩
+  · rintro ⟨_, Cx⟩ ⟨_, Cy⟩
+    refine' ⟨_, hadd _ _ _ _ Cx Cy⟩
 
 instance : AddCommMonoid (LieSubmodule R L M) where
   add := (· ⊔ ·)
@@ -483,26 +547,6 @@ theorem add_eq_sup : N + N' = N ⊔ N' :=
   rfl
 #align lie_submodule.add_eq_sup LieSubmodule.add_eq_sup
 
-@[norm_cast, simp]
-theorem sup_coe_toSubmodule :
-    (↑(N ⊔ N') : Submodule R M) = (N : Submodule R M) ⊔ (N' : Submodule R M) := by
-  have aux : ∀ {x : L} {m}, m ∈ (N ⊔ N' : Submodule R M) → ⁅x, m⁆ ∈ (N ⊔ N' : Submodule R M) := by
-    simp only [Submodule.mem_sup]
-    rintro x m ⟨y, hy, z, hz, rfl⟩
-    refine' ⟨⁅x, y⁆, N.lie_mem hy, ⁅x, z⁆, N'.lie_mem hz, (lie_add _ _ _).symm⟩
-  refine' le_antisymm (sInf_le ⟨{ (N ⊔ N' : Submodule R M) with lie_mem := aux }, _⟩) _
-  -- Porting note: rewrote proof
-  · simp only [← coeSubmodule_le_coeSubmodule, mem_setOf_eq, and_true_iff]
-    constructor <;> intro x hx <;> simp [Submodule.mem_sup_left hx, hx, Submodule.mem_sup_right hx]
-  · simp
-#align lie_submodule.sup_coe_to_submodule LieSubmodule.sup_coe_toSubmodule
-
-@[norm_cast, simp]
-theorem inf_coe_toSubmodule :
-    (↑(N ⊓ N') : Submodule R M) = (N : Submodule R M) ⊓ (N' : Submodule R M) :=
-  rfl
-#align lie_submodule.inf_coe_to_submodule LieSubmodule.inf_coe_toSubmodule
-
 @[simp]
 theorem mem_inf (x : M) : x ∈ N ⊓ N' ↔ x ∈ N ∧ x ∈ N' := by
   rw [← mem_coeSubmodule, ← mem_coeSubmodule, ← mem_coeSubmodule, inf_coe_toSubmodule,
feat: various Lie algebra definitions / lemmas (#7507)

These are all motivated by a result I've proved but I believe they make sense in their own right so I have split them out in the hopes of simplifying review.

Diff
@@ -5,6 +5,7 @@ Authors: Oliver Nash
 -/
 import Mathlib.Algebra.Lie.Subalgebra
 import Mathlib.RingTheory.Noetherian
+import Mathlib.RingTheory.Artinian
 
 #align_import algebra.lie.submodule from "leanprover-community/mathlib"@"9822b65bfc4ac74537d77ae318d27df1df662471"
 
@@ -528,16 +529,23 @@ instance : IsModularLattice (LieSubmodule R L M) where
 
 variable (R L M)
 
+/-- The natural functor that forgets the action of `L` as an order embedding. -/
+@[simps] def toSubmodule_orderEmbedding : LieSubmodule R L M ↪o Submodule R M :=
+  { toFun := (↑)
+    inj' := coeSubmodule_injective
+    map_rel_iff' := Iff.rfl }
+
 theorem wellFounded_of_noetherian [IsNoetherian R M] :
     WellFounded ((· > ·) : LieSubmodule R L M → LieSubmodule R L M → Prop) :=
-  let f :
-    ((· > ·) : LieSubmodule R L M → LieSubmodule R L M → Prop) →r
-      ((· > ·) : Submodule R M → Submodule R M → Prop) :=
-    { toFun := (↑)
-      map_rel' := fun h ↦ h }
-  RelHomClass.wellFounded f (isNoetherian_iff_wellFounded.mp inferInstance)
+  RelHomClass.wellFounded (toSubmodule_orderEmbedding R L M).dual.ltEmbedding <|
+    isNoetherian_iff_wellFounded.mp inferInstance
 #align lie_submodule.well_founded_of_noetherian LieSubmodule.wellFounded_of_noetherian
 
+theorem wellFounded_of_isArtinian [IsArtinian R M] :
+    WellFounded ((· < ·) : LieSubmodule R L M → LieSubmodule R L M → Prop) :=
+  RelHomClass.wellFounded (toSubmodule_orderEmbedding R L M).ltEmbedding <|
+    IsArtinian.wellFounded_submodule_lt R M
+
 @[simp]
 theorem subsingleton_iff : Subsingleton (LieSubmodule R L M) ↔ Subsingleton M :=
   have h : Subsingleton (LieSubmodule R L M) ↔ Subsingleton (Submodule R M) := by
@@ -724,6 +732,8 @@ def map : LieSubmodule R L M' :=
       · norm_cast at hfm; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
 
+@[simp] theorem coe_map : (N.map f : Set M') = f '' N := rfl
+
 @[simp]
 theorem coeSubmodule_map : (N.map f : Submodule R M') = (N : Submodule R M).map (f : M →ₗ[R] M') :=
   rfl
@@ -757,16 +767,36 @@ theorem gc_map_comap : GaloisConnection (map f) (comap f) := fun _ _ ↦ map_le_
 
 variable {f}
 
+theorem map_inf_le : (N ⊓ N₂).map f ≤ N.map f ⊓ N₂.map f :=
+  Set.image_inter_subset f N N₂
+
+theorem map_inf (hf : Function.Injective f) :
+    (N ⊓ N₂).map f = N.map f ⊓ N₂.map f :=
+  SetLike.coe_injective <| Set.image_inter hf
+
 @[simp]
 theorem map_sup : (N ⊔ N₂).map f = N.map f ⊔ N₂.map f :=
   (gc_map_comap f).l_sup
 #align lie_submodule.map_sup LieSubmodule.map_sup
 
+@[simp]
+theorem comap_inf {N₂' : LieSubmodule R L M'} :
+    (N' ⊓ N₂').comap f = N'.comap f ⊓ N₂'.comap f :=
+  rfl
+
+@[simp]
+theorem map_iSup {ι : Type*} (N : ι → LieSubmodule R L M) :
+    (⨆ i, N i).map f = ⨆ i, (N i).map f :=
+  (gc_map_comap f : GaloisConnection (map f) (comap f)).l_iSup
+
 @[simp]
 theorem mem_map (m' : M') : m' ∈ N.map f ↔ ∃ m, m ∈ N ∧ f m = m' :=
   Submodule.mem_map
 #align lie_submodule.mem_map LieSubmodule.mem_map
 
+theorem mem_map_of_mem {m : M} (h : m ∈ N) : f m ∈ N.map f :=
+  Set.mem_image_of_mem _ h
+
 @[simp]
 theorem mem_comap {m : M} : m ∈ comap f N' ↔ f m ∈ N' :=
   Iff.rfl
@@ -783,6 +813,56 @@ theorem comap_incl_eq_bot : N₂.comap N.incl = ⊥ ↔ N ⊓ N₂ = ⊥ := by
     disjoint_iff, inf_coe_toSubmodule]
 #align lie_submodule.comap_incl_eq_bot LieSubmodule.comap_incl_eq_bot
 
+@[mono]
+theorem map_mono (h : N ≤ N₂) : N.map f ≤ N₂.map f :=
+  Set.image_subset _ h
+
+theorem map_comp
+    {M'' : Type*} [AddCommGroup M''] [Module R M''] [LieRingModule L M''] {g : M' →ₗ⁅R,L⁆ M''} :
+    N.map (g.comp f) = (N.map f).map g :=
+  SetLike.coe_injective <| by
+    simp only [← Set.image_comp, coe_map, LinearMap.coe_comp, LieModuleHom.coe_comp]
+
+@[simp]
+theorem map_id : N.map LieModuleHom.id = N := by ext; simp
+
+@[simp] theorem map_bot :
+    (⊥ : LieSubmodule R L M).map f = ⊥ := by
+  ext m; simp [eq_comm]
+
+lemma map_le_map_iff (hf : Function.Injective f) :
+    N.map f ≤ N₂.map f ↔ N ≤ N₂ :=
+  Set.image_subset_image_iff hf
+
+lemma map_injective_of_injective (hf : Function.Injective f) :
+    Function.Injective (map f) := fun {N N'} h ↦
+  SetLike.coe_injective <| hf.image_injective <| by simp only [← coe_map, h]
+
+/-- An injective morphism of Lie modules embeds the lattice of submodules of the domain into that
+of the target. -/
+@[simps] def mapOrderEmbedding {f : M →ₗ⁅R,L⁆ M'} (hf : Function.Injective f) :
+  LieSubmodule R L M ↪o LieSubmodule R L M' where
+    toFun := LieSubmodule.map f
+    inj' := map_injective_of_injective hf
+    map_rel_iff' := Set.image_subset_image_iff hf
+
+variable (N) in
+/-- For an injective morphism of Lie modules, any Lie submodule is equivalent to its image. -/
+noncomputable def equivMapOfInjective (hf : Function.Injective f) :
+    N ≃ₗ⁅R,L⁆ N.map f :=
+  { Submodule.equivMapOfInjective (f : M →ₗ[R] M') hf N with
+    map_lie' := by rintro x ⟨m, hm : m ∈ N⟩; ext; exact f.map_lie x m }
+
+/-- An equivalence of Lie modules yields an order-preserving equivalence of their lattices of Lie
+Submodules. -/
+@[simps] def orderIsoMapComap (e : M ≃ₗ⁅R,L⁆ M') :
+    LieSubmodule R L M ≃o LieSubmodule R L M' where
+  toFun := map e
+  invFun := comap e
+  left_inv := fun N ↦ by ext; simp
+  right_inv := fun N ↦ by ext; simp [e.apply_eq_iff_eq_symm_apply]
+  map_rel_iff' := fun {N N'} ↦ Set.image_subset_image_iff e.injective
+
 end LieSubmodule
 
 namespace LieIdeal
@@ -1239,6 +1319,7 @@ theorem mem_range (n : N) : n ∈ f.range ↔ ∃ m, f m = n :=
   Iff.rfl
 #align lie_module_hom.mem_range LieModuleHom.mem_range
 
+@[simp]
 theorem map_top : LieSubmodule.map f ⊤ = f.range := by ext; simp [LieSubmodule.mem_map]
 #align lie_module_hom.map_top LieModuleHom.map_top
 
@@ -1269,6 +1350,29 @@ theorem range_incl : N.incl.range = N := by simp [← LieSubmodule.coe_toSubmodu
 theorem comap_incl_self : comap N.incl N = ⊤ := by simp [← LieSubmodule.coe_toSubmodule_eq_iff]
 #align lie_submodule.comap_incl_self LieSubmodule.comap_incl_self
 
+theorem map_incl_top : (⊤ : LieSubmodule R L N).map N.incl = N := by simp
+
+variable {N}
+
+@[simp]
+lemma map_le_range {M' : Type*}
+    [AddCommGroup M'] [Module R M'] [LieRingModule L M'] (f : M →ₗ⁅R,L⁆ M') :
+    N.map f ≤ f.range := by
+  rw [← LieModuleHom.map_top]
+  exact LieSubmodule.map_mono le_top
+
+@[simp]
+lemma map_incl_lt_iff_lt_top {N' : LieSubmodule R L N} :
+    N'.map (LieSubmodule.incl N) < N ↔ N' < ⊤ := by
+  convert (LieSubmodule.mapOrderEmbedding (f := N.incl) Subtype.coe_injective).lt_iff_lt
+  simp
+
+@[simp]
+lemma map_incl_le {N' : LieSubmodule R L N} :
+    N'.map N.incl ≤ N := by
+  conv_rhs => rw [← N.map_incl_top]
+  exact LieSubmodule.map_mono le_top
+
 end LieSubmodule
 
 section TopEquiv
@@ -1304,4 +1408,22 @@ theorem LieIdeal.topEquiv_apply (x : (⊤ : LieIdeal R L)) : LieIdeal.topEquiv x
   rfl
 #align lie_ideal.top_equiv_apply LieIdeal.topEquiv_apply
 
+variable (R L)
+variable (M : Type*) [AddCommGroup M] [Module R M] [LieRingModule L M] [LieModule R L M]
+
+/-- The natural equivalence between the 'top' Lie submodule and the enclosing Lie module. -/
+def LieModuleEquiv.ofTop : (⊤ : LieSubmodule R L M) ≃ₗ⁅R,L⁆ M :=
+  { LinearEquiv.ofTop ⊤ rfl with
+    map_lie' := rfl }
+
+@[simp] lemma LieModuleEquiv.ofTop_apply (x : (⊤ : LieSubmodule R L M)) :
+    LieModuleEquiv.ofTop R L M x = x :=
+  rfl
+
+@[simp] lemma LieModuleEquiv.range_coe {M' : Type*}
+    [AddCommGroup M'] [Module R M'] [LieRingModule L M'] (e : M ≃ₗ⁅R,L⁆ M') :
+    LieModuleHom.range (e : M →ₗ⁅R,L⁆ M') = ⊤ := by
+  rw [LieModuleHom.range_eq_top]
+  exact e.surjective
+
 end TopEquiv
feat: define the positive Fitting component of the representation of a nilpotent Lie algebra (#7360)
Diff
@@ -1242,6 +1242,9 @@ theorem mem_range (n : N) : n ∈ f.range ↔ ∃ m, f m = n :=
 theorem map_top : LieSubmodule.map f ⊤ = f.range := by ext; simp [LieSubmodule.mem_map]
 #align lie_module_hom.map_top LieModuleHom.map_top
 
+theorem range_eq_top : f.range = ⊤ ↔ Function.Surjective f := by
+  rw [SetLike.ext'_iff, coe_range, LieSubmodule.top_coe, Set.range_iff_surjective]
+
 end LieModuleHom
 
 namespace LieSubmodule
chore: refactor Lie algebra weight spaces (#7210)

The key change is the new definition LieModule.weightSpaceOf which shows that the eigenspaces of the action of a single element of a Lie algebra on a representation are Lie submodules. I need to use this fact to develop the theory further.

Diff
@@ -92,12 +92,16 @@ theorem mem_carrier {x : M} : x ∈ N.carrier ↔ x ∈ (N : Set M) :=
   Iff.rfl
 #align lie_submodule.mem_carrier LieSubmodule.mem_carrier
 
-@[simp]
 theorem mem_mk_iff (S : Set M) (h₁ h₂ h₃ h₄) {x : M} :
     x ∈ (⟨⟨⟨⟨S, h₁⟩, h₂⟩, h₃⟩, h₄⟩ : LieSubmodule R L M) ↔ x ∈ S :=
   Iff.rfl
 #align lie_submodule.mem_mk_iff LieSubmodule.mem_mk_iff
 
+@[simp]
+theorem mem_mk_iff' (p : Submodule R M) (h) {x : M} :
+    x ∈ (⟨p, h⟩ : LieSubmodule R L M) ↔ x ∈ p :=
+  Iff.rfl
+
 @[simp]
 theorem mem_coeSubmodule {x : M} : x ∈ (N : Submodule R M) ↔ x ∈ N :=
   Iff.rfl
@@ -419,6 +423,11 @@ theorem sInf_coe_toSubmodule (S : Set (LieSubmodule R L M)) :
   rfl
 #align lie_submodule.Inf_coe_to_submodule LieSubmodule.sInf_coe_toSubmodule
 
+@[simp]
+theorem iInf_coe_toSubmodule {ι} (p : ι → LieSubmodule R L M) :
+    (↑(⨅ i, p i) : Submodule R M) = ⨅ i, (p i : Submodule R M) := by
+  rw [iInf, sInf_coe_toSubmodule]; ext; simp
+
 @[simp]
 theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s ∈ S, (s : Set M) := by
   rw [← LieSubmodule.coe_toSubmodule, sInf_coe_toSubmodule, Submodule.sInf_coe]
@@ -427,6 +436,14 @@ theorem sInf_coe (S : Set (LieSubmodule R L M)) : (↑(sInf S) : Set M) = ⋂ s
     and_imp, SetLike.mem_coe, mem_coeSubmodule]
 #align lie_submodule.Inf_coe LieSubmodule.sInf_coe
 
+@[simp]
+theorem iInf_coe {ι} (p : ι → LieSubmodule R L M) : (↑(⨅ i, p i) : Set M) = ⋂ i, ↑(p i) := by
+  rw [iInf, sInf_coe]; simp only [Set.mem_range, Set.iInter_exists, Set.iInter_iInter_eq']
+
+@[simp]
+theorem mem_iInf {ι} (p : ι → LieSubmodule R L M) {x} : (x ∈ ⨅ i, p i) ↔ ∀ i, x ∈ p i := by
+  rw [← SetLike.mem_coe, iInf_coe, Set.mem_iInter]; rfl
+
 theorem sInf_glb (S : Set (LieSubmodule R L M)) : IsGLB S (sInf S) := by
   have h : ∀ {N N' : LieSubmodule R L M}, (N : Set M) ≤ N' ↔ N ≤ N' := fun {_ _} ↦ Iff.rfl
   apply IsGLB.of_image h
chore: tidy various files (#6577)
Diff
@@ -882,8 +882,7 @@ same as ideals of `L` contained in `I`. -/
 instance subsingleton_of_bot : Subsingleton (LieIdeal R (⊥ : LieIdeal R L)) := by
   apply subsingleton_of_bot_eq_top
   ext ⟨x, hx⟩
-  change x ∈ (⊥ : LieIdeal _ _) at hx
-  rw [LieSubmodule.mem_bot] at hx
+  rw [LieSubmodule.bot_coeSubmodule, Submodule.mem_bot] at hx
   subst hx
   simp only [Submodule.mk_eq_zero, LieSubmodule.mem_bot, LieSubmodule.mem_top]
 #align lie_ideal.subsingleton_of_bot LieIdeal.subsingleton_of_bot
@@ -1040,12 +1039,12 @@ theorem mem_map_of_surjective {y : L'} (h₁ : Function.Surjective f) (h₂ : y
   rw [← LieSubmodule.mem_coeSubmodule, coe_map_of_surjective h₁, Submodule.mem_map] at h₂
   obtain ⟨x, hx, rfl⟩ := h₂
   use ⟨x, hx⟩
-  rfl
+  rw [LieHom.coe_toLinearMap]
 #align lie_ideal.mem_map_of_surjective LieIdeal.mem_map_of_surjective
 
 theorem bot_of_map_eq_bot {I : LieIdeal R L} (h₁ : Function.Injective f) (h₂ : I.map f = ⊥) :
     I = ⊥ := by
-  rw [← f.ker_eq_bot] at h₁; change comap f ⊥ = ⊥ at h₁
+  rw [← f.ker_eq_bot, LieHom.ker] at h₁
   rw [eq_bot_iff, map_le_iff_le_comap, h₁] at h₂
   rw [eq_bot_iff]; exact h₂
 #align lie_ideal.bot_of_map_eq_bot LieIdeal.bot_of_map_eq_bot
chore: adjust priorities of mem_map lemmas (#6327)

The mem_map lemmas were inconsistently either not simp lemmas at all, simp lemmas, or simp lemmas with a lowered priority.

This PR makes them uniformly low priority simp lemmas, and adds a few simp attributes to "better" simp lemmas instead. (However these lemmas are themselves quite inconsistent across different algebraic structures, and I haven't attempted to add missing ones.)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -745,6 +745,7 @@ theorem map_sup : (N ⊔ N₂).map f = N.map f ⊔ N₂.map f :=
   (gc_map_comap f).l_sup
 #align lie_submodule.map_sup LieSubmodule.map_sup
 
+@[simp]
 theorem mem_map (m' : M') : m' ∈ N.map f ↔ ∃ m, m ∈ N ∧ f m = m' :=
   Submodule.mem_map
 #align lie_submodule.mem_map LieSubmodule.mem_map
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -169,7 +169,7 @@ instance : LieRingModule L N where
   lie_add := by intro x m n; apply SetCoe.ext; apply lie_add
   leibniz_lie := by intro x y m; apply SetCoe.ext; apply leibniz_lie
 
-instance module' {S : Type _} [Semiring S] [SMul S R] [Module S M] [IsScalarTower S R M] :
+instance module' {S : Type*} [Semiring S] [SMul S R] [Module S M] [IsScalarTower S R M] :
     Module S N :=
   N.toSubmodule.module'
 #align lie_submodule.module' LieSubmodule.module'
@@ -177,7 +177,7 @@ instance module' {S : Type _} [Semiring S] [SMul S R] [Module S M] [IsScalarTowe
 instance : Module R N :=
   N.toSubmodule.module
 
-instance {S : Type _} [Semiring S] [SMul S R] [SMul Sᵐᵒᵖ R] [Module S M] [Module Sᵐᵒᵖ M]
+instance {S : Type*} [Semiring S] [SMul S R] [SMul Sᵐᵒᵖ R] [Module S M] [Module Sᵐᵒᵖ M]
     [IsScalarTower S R M] [IsScalarTower Sᵐᵒᵖ R M] [IsCentralScalar S M] : IsCentralScalar S N :=
   N.toSubmodule.isCentralScalar
 
@@ -267,13 +267,13 @@ instance LieIdeal.lieAlgebra (I : LieIdeal R L) : LieAlgebra R I :=
 #align lie_ideal.lie_algebra LieIdeal.lieAlgebra
 
 /-- Transfer the `LieRingModule` instance from the coercion `LieIdeal → LieSubalgebra`. -/
-instance LieIdeal.lieRingModule {R L : Type _} [CommRing R] [LieRing L] [LieAlgebra R L]
+instance LieIdeal.lieRingModule {R L : Type*} [CommRing R] [LieRing L] [LieAlgebra R L]
     (I : LieIdeal R L) [LieRingModule L M] : LieRingModule I M :=
   LieSubalgebra.lieRingModule (I : LieSubalgebra R L)
 #align lie_ideal.lie_ring_module LieIdeal.lieRingModule
 
 @[simp]
-theorem LieIdeal.coe_bracket_of_module {R L : Type _} [CommRing R] [LieRing L] [LieAlgebra R L]
+theorem LieIdeal.coe_bracket_of_module {R L : Type*} [CommRing R] [LieRing L] [LieAlgebra R L]
     (I : LieIdeal R L) [LieRingModule L M] (x : I) (m : M) : ⁅x, m⁆ = ⁅(↑x : L), m⁆ :=
   LieSubalgebra.coe_bracket_of_module (I : LieSubalgebra R L) x m
 #align lie_ideal.coe_bracket_of_module LieIdeal.coe_bracket_of_module
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Oliver Nash. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Oliver Nash
-
-! This file was ported from Lean 3 source module algebra.lie.submodule
-! leanprover-community/mathlib commit 9822b65bfc4ac74537d77ae318d27df1df662471
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Lie.Subalgebra
 import Mathlib.RingTheory.Noetherian
 
+#align_import algebra.lie.submodule from "leanprover-community/mathlib"@"9822b65bfc4ac74537d77ae318d27df1df662471"
+
 /-!
 # Lie submodules of a Lie algebra
 
chore: cleanup whitespace (#5988)

Grepping for [^ .:{-] [^ :] and reviewing the results. Once I started I couldn't stop. :-)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -498,7 +498,7 @@ theorem mem_sup (x : M) : x ∈ N ⊔ N' ↔ ∃ y ∈ N, ∃ z ∈ N', y + z =
   rw [← mem_coeSubmodule, sup_coe_toSubmodule, Submodule.mem_sup]; exact Iff.rfl
 #align lie_submodule.mem_sup LieSubmodule.mem_sup
 
-nonrec theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 := by rw [eq_bot_iff];  exact Iff.rfl
+nonrec theorem eq_bot_iff : N = ⊥ ↔ ∀ m : M, m ∈ N → m = 0 := by rw [eq_bot_iff]; exact Iff.rfl
 #align lie_submodule.eq_bot_iff LieSubmodule.eq_bot_iff
 
 instance subsingleton_of_bot : Subsingleton (LieSubmodule R L ↑(⊥ : LieSubmodule R L M)) := by
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊢ -> some_tactic at h ⊢
  • some_tactic at h -> some_tactic at h
Diff
@@ -408,7 +408,7 @@ instance : InfSet (LieSubmodule R L M) :=
     { sInf {((s : Submodule R M)) | s ∈ S} with
       lie_mem := fun {x m} h ↦ by
         simp only [Submodule.mem_carrier, mem_iInter, Submodule.sInf_coe, mem_setOf_eq,
-          forall_apply_eq_imp_iff₂, forall_exists_index, and_imp] at h⊢
+          forall_apply_eq_imp_iff₂, forall_exists_index, and_imp] at h ⊢
         intro N hN; apply N.lie_mem (h N hN) }⟩
 
 @[simp]
@@ -707,7 +707,7 @@ def map : LieSubmodule R L M' :=
     lie_mem := fun {x m'} h ↦ by
       rcases h with ⟨m, hm, hfm⟩; use ⁅x, m⁆; constructor
       · apply N.lie_mem hm
-      · norm_cast  at hfm; simp [hfm] }
+      · norm_cast at hfm; simp [hfm] }
 #align lie_submodule.map LieSubmodule.map
 
 @[simp]
@@ -864,7 +864,7 @@ theorem map_mono : Monotone (map f) := fun I₁ I₂ h ↦ by
 
 @[mono]
 theorem comap_mono : Monotone (comap f) := fun J₁ J₂ h ↦ by
-  rw [← SetLike.coe_subset_coe] at h⊢
+  rw [← SetLike.coe_subset_coe] at h ⊢
   dsimp only [SetLike.coe]
   exact Set.preimage_mono h
 #align lie_ideal.comap_mono LieIdeal.comap_mono
@@ -1092,7 +1092,7 @@ theorem map_comap_eq (h : f.IsIdealMorphism) : map f (comap f J) = f.idealRange
   · rw [le_inf_iff]; exact ⟨f.map_le_idealRange _, map_comap_le⟩
   · rw [f.isIdealMorphism_def] at h
     rw [← SetLike.coe_subset_coe, LieSubmodule.inf_coe, ← coe_toSubalgebra, h]
-    rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂⊢; exact mem_map h₂
+    rintro y ⟨⟨x, h₁⟩, h₂⟩; rw [← h₁] at h₂ ⊢; exact mem_map h₂
 #align lie_ideal.map_comap_eq LieIdeal.map_comap_eq
 
 @[simp]
chore: add links to issue for rw regressions (#5167)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -883,7 +883,10 @@ In other words, in general, ideals of `I`, regarded as a Lie algebra in its own
 same as ideals of `L` contained in `I`. -/
 instance subsingleton_of_bot : Subsingleton (LieIdeal R (⊥ : LieIdeal R L)) := by
   apply subsingleton_of_bot_eq_top
-  ext ⟨x, hx⟩; erw [LieSubmodule.mem_bot] at hx; subst hx -- porting note: `erw` for the win.
+  ext ⟨x, hx⟩
+  change x ∈ (⊥ : LieIdeal _ _) at hx
+  rw [LieSubmodule.mem_bot] at hx
+  subst hx
   simp only [Submodule.mk_eq_zero, LieSubmodule.mem_bot, LieSubmodule.mem_top]
 #align lie_ideal.subsingleton_of_bot LieIdeal.subsingleton_of_bot
 
feat: port Algebra.Lie.Submodule (#3045)

Co-authored-by: int-y1 <jason_yuen2007@hotmail.com> Co-authored-by: Oliver Nash <github@olivernash.org> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com> Co-authored-by: adomani <adomani@gmail.com> Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 8 + 466

467 files ported (98.3%)
193089 lines ported (98.4%)
Show graph

The unported dependencies are