ring_theory.adjoin.towerMathlib.RingTheory.Adjoin.Tower

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -3,7 +3,7 @@ Copyright (c) 2020 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau
 -/
-import RingTheory.Adjoin.Fg
+import RingTheory.Adjoin.FG
 
 #align_import ring_theory.adjoin.tower from "leanprover-community/mathlib"@"94eaaaa6064d32e98cf838789144cf5318c37cf0"
 
Diff
@@ -115,7 +115,7 @@ theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ :
   by
   cases' hAC with x hx
   cases' hBC with y hy; have := hy
-  simp_rw [eq_top_iff', mem_span_finset] at this ; choose f hf
+  simp_rw [eq_top_iff', mem_span_finset] at this; choose f hf
   let s : Finset B := Finset.image₂ f (x ∪ y * y) y
   have hxy :
     ∀ xi ∈ x, xi ∈ span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) :=
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2020 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau
 -/
-import Mathbin.RingTheory.Adjoin.Fg
+import RingTheory.Adjoin.Fg
 
 #align_import ring_theory.adjoin.tower from "leanprover-community/mathlib"@"94eaaaa6064d32e98cf838789144cf5318c37cf0"
 
Diff
@@ -174,7 +174,7 @@ theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).FG)
   Algebra.fg_trans' (B₀.fg_top.2 hAB₀) <|
     Subalgebra.fg_of_submodule_fg <|
       have : IsNoetherianRing B₀ := isNoetherianRing_of_fg hAB₀
-      have : IsNoetherian B₀ C := isNoetherian_of_fg_of_noetherian' hB₀C
+      have : IsNoetherian B₀ C := isNoetherian_of_isNoetherianRing_of_finite hB₀C
       fg_of_injective (IsScalarTower.toAlgHom B₀ B C).toLinearMap hBCi
 #align fg_of_fg_of_fg fg_of_fg_of_fg
 -/
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2020 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau
-
-! This file was ported from Lean 3 source module ring_theory.adjoin.tower
-! leanprover-community/mathlib commit 94eaaaa6064d32e98cf838789144cf5318c37cf0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.RingTheory.Adjoin.Fg
 
+#align_import ring_theory.adjoin.tower from "leanprover-community/mathlib"@"94eaaaa6064d32e98cf838789144cf5318c37cf0"
+
 /-!
 # Adjoining elements and being finitely generated in an algebra tower
 
Diff
@@ -42,6 +42,7 @@ theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R
 #align algebra.adjoin_algebra_map Algebra.adjoin_algebraMap
 -/
 
+#print Algebra.adjoin_restrictScalars /-
 theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
     (Algebra.adjoin D S).restrictScalars C =
@@ -59,7 +60,9 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
   · rintro ⟨⟨y, ⟨z, ⟨h0, h1⟩⟩⟩, h2⟩
     exact ⟨z, Eq.trans h1 h2⟩
 #align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalars
+-/
 
+#print Algebra.adjoin_res_eq_adjoin_res /-
 theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiring D]
     [CommSemiring E] [CommSemiring F] [Algebra C D] [Algebra C E] [Algebra C F] [Algebra D F]
     [Algebra E F] [IsScalarTower C D F] [IsScalarTower C E F] {S : Set D} {T : Set E}
@@ -72,6 +75,7 @@ theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiri
     IsScalarTower.coe_toAlgHom, IsScalarTower.coe_toAlgHom, ← adjoin_union_eq_adjoin_adjoin, ←
     adjoin_union_eq_adjoin_adjoin, Set.union_comm]
 #align algebra.adjoin_res_eq_adjoin_res Algebra.adjoin_res_eq_adjoin_res
+-/
 
 end Algebra
 
@@ -79,6 +83,7 @@ section
 
 open scoped Classical
 
+#print Algebra.fg_trans' /-
 theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
     (hSA : (⊤ : Subalgebra S A).FG) : (⊤ : Subalgebra R A).FG :=
@@ -89,6 +94,7 @@ theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [Co
       Algebra.adjoin_algebraMap, hs, Algebra.map_top, IsScalarTower.adjoin_range_toAlgHom, ht,
       Subalgebra.restrictScalars_top]⟩
 #align algebra.fg_trans' Algebra.fg_trans'
+-/
 
 end
 
@@ -106,6 +112,7 @@ open Finset Submodule
 
 open scoped Classical
 
+#print exists_subalgebra_of_fg /-
 theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
     ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG :=
   by
@@ -147,6 +154,7 @@ theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ :
     Submonoid.closure_induction hr (fun c hc => hxy c hc) (subset_span <| mem_insert_self _ _)
       fun p q hp hq => hyy <| Submodule.mul_mem_mul hp hq
 #align exists_subalgebra_of_fg exists_subalgebra_of_fg
+-/
 
 end Semiring
 
@@ -156,6 +164,7 @@ variable [CommRing A] [CommRing B] [CommRing C]
 
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
+#print fg_of_fg_of_fg /-
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
 then B is algebra-finite over A.
@@ -171,6 +180,7 @@ theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).FG)
       have : IsNoetherian B₀ C := isNoetherian_of_fg_of_noetherian' hB₀C
       fg_of_injective (IsScalarTower.toAlgHom B₀ B C).toLinearMap hBCi
 #align fg_of_fg_of_fg fg_of_fg_of_fg
+-/
 
 end Ring
 
Diff
@@ -111,7 +111,7 @@ theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ :
   by
   cases' hAC with x hx
   cases' hBC with y hy; have := hy
-  simp_rw [eq_top_iff', mem_span_finset] at this; choose f hf
+  simp_rw [eq_top_iff', mem_span_finset] at this ; choose f hf
   let s : Finset B := Finset.image₂ f (x ∪ y * y) y
   have hxy :
     ∀ xi ∈ x, xi ∈ span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) :=
Diff
@@ -25,7 +25,7 @@ import Mathbin.RingTheory.Adjoin.Fg
 -/
 
 
-open Pointwise
+open scoped Pointwise
 
 universe u v w u₁
 
@@ -77,7 +77,7 @@ end Algebra
 
 section
 
-open Classical
+open scoped Classical
 
 theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
@@ -104,7 +104,7 @@ variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
 open Finset Submodule
 
-open Classical
+open scoped Classical
 
 theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
     ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG :=
Diff
@@ -42,9 +42,6 @@ theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R
 #align algebra.adjoin_algebra_map Algebra.adjoin_algebraMap
 -/
 
-/- warning: algebra.adjoin_restrict_scalars -> Algebra.adjoin_restrictScalars is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalarsₓ'. -/
 theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
     (Algebra.adjoin D S).restrictScalars C =
@@ -63,9 +60,6 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
     exact ⟨z, Eq.trans h1 h2⟩
 #align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalars
 
-/- warning: algebra.adjoin_res_eq_adjoin_res -> Algebra.adjoin_res_eq_adjoin_res is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align algebra.adjoin_res_eq_adjoin_res Algebra.adjoin_res_eq_adjoin_resₓ'. -/
 theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiring D]
     [CommSemiring E] [CommSemiring F] [Algebra C D] [Algebra C E] [Algebra C F] [Algebra D F]
     [Algebra E F] [IsScalarTower C D F] [IsScalarTower C E F] {S : Set D} {T : Set E}
@@ -85,12 +79,6 @@ section
 
 open Classical
 
-/- warning: algebra.fg_trans' -> Algebra.fg_trans' is a dubious translation:
-lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u3} A] [_inst_4 : Algebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_6 : Algebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} R S A (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (Algebra.toModule.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} S A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S A (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S A (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} S A (CommSemiring.toSemiring.{u2} S _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R A (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R A (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6)))))], (Subalgebra.FG.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.FG.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5 (Top.top.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (Algebra.Subalgebra.completeLattice.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5)))) -> (Subalgebra.FG.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6))))
-but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u3} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u1} A] [_inst_4 : Algebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_6 : Algebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} R S A (Algebra.toSMul.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.toSMul.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6)], (Subalgebra.FG.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.FG.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5 (Top.top.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5)))) -> (Subalgebra.FG.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6 (Top.top.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6))))
-Case conversion may be inaccurate. Consider using '#align algebra.fg_trans' Algebra.fg_trans'ₓ'. -/
 theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
     (hSA : (⊤ : Subalgebra S A).FG) : (⊤ : Subalgebra R A).FG :=
@@ -118,9 +106,6 @@ open Finset Submodule
 
 open Classical
 
-/- warning: exists_subalgebra_of_fg -> exists_subalgebra_of_fg is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align exists_subalgebra_of_fg exists_subalgebra_of_fgₓ'. -/
 theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
     ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG :=
   by
@@ -171,9 +156,6 @@ variable [CommRing A] [CommRing B] [CommRing C]
 
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
-/- warning: fg_of_fg_of_fg -> fg_of_fg_of_fg is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
 then B is algebra-finite over A.
Diff
@@ -54,10 +54,7 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
   suffices
     Set.range (algebraMap D E) =
       Set.range (algebraMap ((⊤ : Subalgebra C D).map (IsScalarTower.toAlgHom C D E)) E)
-    by
-    ext x
-    change x ∈ Subsemiring.closure (_ ∪ S) ↔ x ∈ Subsemiring.closure (_ ∪ S)
-    rw [this]
+    by ext x; change x ∈ Subsemiring.closure (_ ∪ S) ↔ x ∈ Subsemiring.closure (_ ∪ S); rw [this]
   ext x
   constructor
   · rintro ⟨y, hy⟩
@@ -128,10 +125,8 @@ theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ :
     ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG :=
   by
   cases' hAC with x hx
-  cases' hBC with y hy
-  have := hy
-  simp_rw [eq_top_iff', mem_span_finset] at this
-  choose f hf
+  cases' hBC with y hy; have := hy
+  simp_rw [eq_top_iff', mem_span_finset] at this; choose f hf
   let s : Finset B := Finset.image₂ f (x ∪ y * y) y
   have hxy :
     ∀ xi ∈ x, xi ∈ span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) :=
@@ -146,15 +141,11 @@ theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ :
         span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) ≤
       span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) :=
     by
-    rw [span_mul_span, span_le, coe_insert]
-    rintro _ ⟨yi, yj, rfl | hyi, rfl | hyj, rfl⟩
-    · rw [mul_one]
-      exact subset_span (Set.mem_insert _ _)
-    · rw [one_mul]
-      exact subset_span (Set.mem_insert_of_mem _ hyj)
-    · rw [mul_one]
-      exact subset_span (Set.mem_insert_of_mem _ hyi)
-    · rw [← hf (yi * yj)]
+    rw [span_mul_span, span_le, coe_insert]; rintro _ ⟨yi, yj, rfl | hyi, rfl | hyj, rfl⟩
+    · rw [mul_one]; exact subset_span (Set.mem_insert _ _)
+    · rw [one_mul]; exact subset_span (Set.mem_insert_of_mem _ hyj)
+    · rw [mul_one]; exact subset_span (Set.mem_insert_of_mem _ hyi)
+    · rw [← hf (yi * yj)];
       exact
         SetLike.mem_coe.2
           (sum_mem fun yk hyk =>
Diff
@@ -43,10 +43,7 @@ theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R
 -/
 
 /- warning: algebra.adjoin_restrict_scalars -> Algebra.adjoin_restrictScalars is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u1}) (D : Type.{u2}) (E : Type.{u3}) [_inst_1 : CommSemiring.{u1} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u3} E] [_inst_4 : Algebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_6 : Algebra.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} C D E (SMulZeroClass.toHasSmul.{u1, u2} C D (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} C D (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} C D (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} C D (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)))) (Algebra.toModule.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} D E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} D E (MulZeroClass.toHasZero.{u2} D (MulZeroOneClass.toMulZeroClass.{u2} D (MonoidWithZero.toMulZeroOneClass.{u2} D (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} D E (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} D E (CommSemiring.toSemiring.{u2} D _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6))))) (SMulZeroClass.toHasSmul.{u1, u3} C E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} C E (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} C E (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} C E (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)))))] (S : Set.{u3} E), Eq.{succ u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u1, u3, u3} C (coeSort.{succ u3, succ (succ u3)} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) E (Subalgebra.setLike.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) E _inst_1 (Subalgebra.toCommSemiring.{u1, u3} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u3} E _inst_3) (Subalgebra.algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u3, u1, u3} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u1, u3, u3} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) _inst_5 (IsScalarTower.right.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u3, u3} (coeSort.{succ u3, succ (succ u3)} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) E (Subalgebra.setLike.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) E (Subalgebra.toCommSemiring.{u1, u3} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u3} E _inst_3) (Subalgebra.toAlgebra.{u3, u1, u3} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
-but is expected to have type
-  forall (C : Type.{u3}) (D : Type.{u2}) (E : Type.{u1}) [_inst_1 : CommSemiring.{u3} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u1} E] [_inst_4 : Algebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_6 : Algebra.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} C D E (Algebra.toSMul.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6) (Algebra.toSMul.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)] (S : Set.{u1} E), Eq.{succ u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u3, u1, u1} C (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E _inst_1 (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.algebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u3, u1, u1} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) _inst_5 (IsScalarTower.right.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u1, u1} (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
+<too large>
 Case conversion may be inaccurate. Consider using '#align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalarsₓ'. -/
 theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
@@ -70,10 +67,7 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
 #align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalars
 
 /- warning: algebra.adjoin_res_eq_adjoin_res -> Algebra.adjoin_res_eq_adjoin_res is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u1}) (D : Type.{u2}) (E : Type.{u3}) (F : Type.{u4}) [_inst_1 : CommSemiring.{u1} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u3} E] [_inst_4 : CommSemiring.{u4} F] [_inst_5 : Algebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_6 : Algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_7 : Algebra.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_8 : Algebra.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_9 : Algebra.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_10 : IsScalarTower.{u1, u2, u4} C D F (SMulZeroClass.toHasSmul.{u1, u2} C D (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} C D (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} C D (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} C D (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)))) (Algebra.toModule.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5))))) (SMulZeroClass.toHasSmul.{u2, u4} D F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u2, u4} D F (MulZeroClass.toHasZero.{u2} D (MulZeroOneClass.toMulZeroClass.{u2} D (MonoidWithZero.toMulZeroOneClass.{u2} D (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u2, u4} D F (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u2, u4} D F (CommSemiring.toSemiring.{u2} D _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8))))) (SMulZeroClass.toHasSmul.{u1, u4} C F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u1, u4} C F (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u1, u4} C F (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u1, u4} C F (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7)))))] [_inst_11 : IsScalarTower.{u1, u3, u4} C E F (SMulZeroClass.toHasSmul.{u1, u3} C E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} C E (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} C E (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} C E (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6))))) (SMulZeroClass.toHasSmul.{u3, u4} E F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u3, u4} E F (MulZeroClass.toHasZero.{u3} E (MulZeroOneClass.toMulZeroClass.{u3} E (MonoidWithZero.toMulZeroOneClass.{u3} E (Semiring.toMonoidWithZero.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u3, u4} E F (Semiring.toMonoidWithZero.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u3, u4} E F (CommSemiring.toSemiring.{u3} E _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u4} C F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u1, u4} C F (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u1, u4} C F (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u1, u4} C F (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7)))))] {S : Set.{u2} D} {T : Set.{u3} E}, (Eq.{succ u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (Algebra.adjoin.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5 S) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5)))) -> (Eq.{succ u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (Algebra.adjoin.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6 T) (Top.top.{u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6)))) -> (Eq.{succ u4} (Subalgebra.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u1, u3, u4} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9 (Set.image.{u2, u4} D F (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (RingHom.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (fun (_x : RingHom.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) => D -> F) (RingHom.hasCoeToFun.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (algebraMap.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u1, u2, u4} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8 (Set.image.{u3, u4} E F (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ u4)} (RingHom.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (fun (_x : RingHom.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) => E -> F) (RingHom.hasCoeToFun.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (algebraMap.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9)) T))))
-but is expected to have type
-  forall (C : Type.{u4}) (D : Type.{u3}) (E : Type.{u2}) (F : Type.{u1}) [_inst_1 : CommSemiring.{u4} C] [_inst_2 : CommSemiring.{u3} D] [_inst_3 : CommSemiring.{u2} E] [_inst_4 : CommSemiring.{u1} F] [_inst_5 : Algebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2)] [_inst_6 : Algebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3)] [_inst_7 : Algebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_8 : Algebra.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_9 : Algebra.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_10 : IsScalarTower.{u4, u3, u1} C D F (Algebra.toSMul.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.toSMul.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] [_inst_11 : IsScalarTower.{u4, u2, u1} C E F (Algebra.toSMul.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.toSMul.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] {S : Set.{u3} D} {T : Set.{u2} E}, (Eq.{succ u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.adjoin.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5 S) (Top.top.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (CompleteLattice.toTop.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5)))) -> (Eq.{succ u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.adjoin.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6 T) (Top.top.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (CompleteLattice.toTop.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6)))) -> (Eq.{succ u1} (Subalgebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u4, u2, u1} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9 (Set.image.{u3, u1} D F (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D (fun (_x : D) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : D) => F) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonUnitalNonAssocSemiring.toMul.{u3} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u4, u3, u1} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8 (Set.image.{u2, u1} E F (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E (fun (_x : E) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : E) => F) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonUnitalNonAssocSemiring.toMul.{u2} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9)) T))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align algebra.adjoin_res_eq_adjoin_res Algebra.adjoin_res_eq_adjoin_resₓ'. -/
 theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiring D]
     [CommSemiring E] [CommSemiring F] [Algebra C D] [Algebra C E] [Algebra C F] [Algebra D F]
@@ -128,10 +122,7 @@ open Finset Submodule
 open Classical
 
 /- warning: exists_subalgebra_of_fg -> exists_subalgebra_of_fg is a dubious translation:
-lean 3 declaration is
-  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommSemiring.{u1} A] [_inst_2 : CommSemiring.{u2} B] [_inst_3 : Semiring.{u3} C] [_inst_4 : Algebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2)] [_inst_5 : Algebra.{u2, u3} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u1, u3} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)))) (Algebra.toModule.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u1, u3} A C _inst_1 _inst_3 _inst_6)))))], (Subalgebra.FG.{u1, u3} A C _inst_1 _inst_3 _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.FG.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)) (Submodule.hasTop.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) => And (Subalgebra.FG.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (Submodule.FG.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u3} (Submodule.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.hasTop.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀))))))
-but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommSemiring.{u2} A] [_inst_2 : CommSemiring.{u3} B] [_inst_3 : Semiring.{u1} C] [_inst_4 : Algebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2)] [_inst_5 : Algebra.{u3, u1} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u2, u1} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (Algebra.toSMul.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Algebra.toSMul.{u2, u1} A C _inst_1 _inst_3 _inst_6)], (Subalgebra.FG.{u2, u1} A C _inst_1 _inst_3 _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.FG.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) => And (Subalgebra.FG.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (Submodule.FG.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u1} (Submodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.instTopSubmodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align exists_subalgebra_of_fg exists_subalgebra_of_fgₓ'. -/
 theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
     ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG :=
@@ -190,10 +181,7 @@ variable [CommRing A] [CommRing B] [CommRing C]
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
 /- warning: fg_of_fg_of_fg -> fg_of_fg_of_fg is a dubious translation:
-lean 3 declaration is
-  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.FG.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
-but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (CommSemiring.toSemiring.{u2} A (CommRing.toCommSemiring.{u2} A _inst_1))], (Subalgebra.FG.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
Diff
@@ -46,7 +46,7 @@ theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R
 lean 3 declaration is
   forall (C : Type.{u1}) (D : Type.{u2}) (E : Type.{u3}) [_inst_1 : CommSemiring.{u1} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u3} E] [_inst_4 : Algebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_6 : Algebra.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} C D E (SMulZeroClass.toHasSmul.{u1, u2} C D (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} C D (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} C D (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} C D (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)))) (Algebra.toModule.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} D E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} D E (MulZeroClass.toHasZero.{u2} D (MulZeroOneClass.toMulZeroClass.{u2} D (MonoidWithZero.toMulZeroOneClass.{u2} D (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} D E (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} D E (CommSemiring.toSemiring.{u2} D _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6))))) (SMulZeroClass.toHasSmul.{u1, u3} C E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} C E (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} C E (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} C E (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)))))] (S : Set.{u3} E), Eq.{succ u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u1, u3, u3} C (coeSort.{succ u3, succ (succ u3)} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) E (Subalgebra.setLike.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) E _inst_1 (Subalgebra.toCommSemiring.{u1, u3} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u3} E _inst_3) (Subalgebra.algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u3, u1, u3} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u1, u3, u3} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) _inst_5 (IsScalarTower.right.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u3, u3} (coeSort.{succ u3, succ (succ u3)} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) E (Subalgebra.setLike.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) E (Subalgebra.toCommSemiring.{u1, u3} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u3} E _inst_3) (Subalgebra.toAlgebra.{u3, u1, u3} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
 but is expected to have type
-  forall (C : Type.{u3}) (D : Type.{u2}) (E : Type.{u1}) [_inst_1 : CommSemiring.{u3} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u1} E] [_inst_4 : Algebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_6 : Algebra.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} C D E (Algebra.toSMul.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6) (Algebra.toSMul.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)] (S : Set.{u1} E), Eq.{succ u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u3, u1, u1} C (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E _inst_1 (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.instAlgebraSubtypeMemSubalgebraInstMembershipInstSetLikeSubalgebraToSemiring.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u3, u1, u1} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) _inst_5 (IsScalarTower.right.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u1, u1} (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
+  forall (C : Type.{u3}) (D : Type.{u2}) (E : Type.{u1}) [_inst_1 : CommSemiring.{u3} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u1} E] [_inst_4 : Algebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_6 : Algebra.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} C D E (Algebra.toSMul.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6) (Algebra.toSMul.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)] (S : Set.{u1} E), Eq.{succ u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u3, u1, u1} C (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E _inst_1 (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.algebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u3, u1, u1} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) _inst_5 (IsScalarTower.right.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u1, u1} (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
 Case conversion may be inaccurate. Consider using '#align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalarsₓ'. -/
 theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
Diff
@@ -73,7 +73,7 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
 lean 3 declaration is
   forall (C : Type.{u1}) (D : Type.{u2}) (E : Type.{u3}) (F : Type.{u4}) [_inst_1 : CommSemiring.{u1} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u3} E] [_inst_4 : CommSemiring.{u4} F] [_inst_5 : Algebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_6 : Algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_7 : Algebra.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_8 : Algebra.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_9 : Algebra.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_10 : IsScalarTower.{u1, u2, u4} C D F (SMulZeroClass.toHasSmul.{u1, u2} C D (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} C D (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} C D (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} C D (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)))) (Algebra.toModule.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5))))) (SMulZeroClass.toHasSmul.{u2, u4} D F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u2, u4} D F (MulZeroClass.toHasZero.{u2} D (MulZeroOneClass.toMulZeroClass.{u2} D (MonoidWithZero.toMulZeroOneClass.{u2} D (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u2, u4} D F (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u2, u4} D F (CommSemiring.toSemiring.{u2} D _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8))))) (SMulZeroClass.toHasSmul.{u1, u4} C F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u1, u4} C F (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u1, u4} C F (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u1, u4} C F (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7)))))] [_inst_11 : IsScalarTower.{u1, u3, u4} C E F (SMulZeroClass.toHasSmul.{u1, u3} C E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} C E (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} C E (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} C E (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6))))) (SMulZeroClass.toHasSmul.{u3, u4} E F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u3, u4} E F (MulZeroClass.toHasZero.{u3} E (MulZeroOneClass.toMulZeroClass.{u3} E (MonoidWithZero.toMulZeroOneClass.{u3} E (Semiring.toMonoidWithZero.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u3, u4} E F (Semiring.toMonoidWithZero.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u3, u4} E F (CommSemiring.toSemiring.{u3} E _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u4} C F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u1, u4} C F (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u1, u4} C F (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u1, u4} C F (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7)))))] {S : Set.{u2} D} {T : Set.{u3} E}, (Eq.{succ u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (Algebra.adjoin.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5 S) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5)))) -> (Eq.{succ u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (Algebra.adjoin.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6 T) (Top.top.{u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6)))) -> (Eq.{succ u4} (Subalgebra.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u1, u3, u4} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9 (Set.image.{u2, u4} D F (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (RingHom.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (fun (_x : RingHom.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) => D -> F) (RingHom.hasCoeToFun.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (algebraMap.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u1, u2, u4} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8 (Set.image.{u3, u4} E F (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ u4)} (RingHom.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (fun (_x : RingHom.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) => E -> F) (RingHom.hasCoeToFun.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (algebraMap.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9)) T))))
 but is expected to have type
-  forall (C : Type.{u4}) (D : Type.{u3}) (E : Type.{u2}) (F : Type.{u1}) [_inst_1 : CommSemiring.{u4} C] [_inst_2 : CommSemiring.{u3} D] [_inst_3 : CommSemiring.{u2} E] [_inst_4 : CommSemiring.{u1} F] [_inst_5 : Algebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2)] [_inst_6 : Algebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3)] [_inst_7 : Algebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_8 : Algebra.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_9 : Algebra.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_10 : IsScalarTower.{u4, u3, u1} C D F (Algebra.toSMul.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.toSMul.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] [_inst_11 : IsScalarTower.{u4, u2, u1} C E F (Algebra.toSMul.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.toSMul.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] {S : Set.{u3} D} {T : Set.{u2} E}, (Eq.{succ u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.adjoin.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5 S) (Top.top.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (CompleteLattice.toTop.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5)))) -> (Eq.{succ u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.adjoin.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6 T) (Top.top.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (CompleteLattice.toTop.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6)))) -> (Eq.{succ u1} (Subalgebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u4, u2, u1} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9 (Set.image.{u3, u1} D F (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D (fun (_x : D) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : D) => F) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonUnitalNonAssocSemiring.toMul.{u3} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u4, u3, u1} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8 (Set.image.{u2, u1} E F (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E (fun (_x : E) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : E) => F) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonUnitalNonAssocSemiring.toMul.{u2} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9)) T))))
+  forall (C : Type.{u4}) (D : Type.{u3}) (E : Type.{u2}) (F : Type.{u1}) [_inst_1 : CommSemiring.{u4} C] [_inst_2 : CommSemiring.{u3} D] [_inst_3 : CommSemiring.{u2} E] [_inst_4 : CommSemiring.{u1} F] [_inst_5 : Algebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2)] [_inst_6 : Algebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3)] [_inst_7 : Algebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_8 : Algebra.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_9 : Algebra.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_10 : IsScalarTower.{u4, u3, u1} C D F (Algebra.toSMul.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.toSMul.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] [_inst_11 : IsScalarTower.{u4, u2, u1} C E F (Algebra.toSMul.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.toSMul.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] {S : Set.{u3} D} {T : Set.{u2} E}, (Eq.{succ u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.adjoin.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5 S) (Top.top.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (CompleteLattice.toTop.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5)))) -> (Eq.{succ u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.adjoin.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6 T) (Top.top.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (CompleteLattice.toTop.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6)))) -> (Eq.{succ u1} (Subalgebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u4, u2, u1} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9 (Set.image.{u3, u1} D F (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D (fun (_x : D) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : D) => F) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonUnitalNonAssocSemiring.toMul.{u3} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u4, u3, u1} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8 (Set.image.{u2, u1} E F (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E (fun (_x : E) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : E) => F) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonUnitalNonAssocSemiring.toMul.{u2} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9)) T))))
 Case conversion may be inaccurate. Consider using '#align algebra.adjoin_res_eq_adjoin_res Algebra.adjoin_res_eq_adjoin_resₓ'. -/
 theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiring D]
     [CommSemiring E] [CommSemiring F] [Algebra C D] [Algebra C E] [Algebra C F] [Algebra D F]
@@ -193,7 +193,7 @@ variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 lean 3 declaration is
   forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.FG.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
 but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (CommSemiring.toSemiring.{u2} A (CommRing.toCommSemiring.{u2} A _inst_1))], (Subalgebra.FG.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4))))
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (CommSemiring.toSemiring.{u2} A (CommRing.toCommSemiring.{u2} A _inst_1))], (Subalgebra.FG.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2397 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4))))
 Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
Diff
@@ -96,13 +96,13 @@ open Classical
 
 /- warning: algebra.fg_trans' -> Algebra.fg_trans' is a dubious translation:
 lean 3 declaration is
-  forall {R : Type.{u1}} {S : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u3} A] [_inst_4 : Algebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_6 : Algebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} R S A (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (Algebra.toModule.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} S A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S A (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S A (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} S A (CommSemiring.toSemiring.{u2} S _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R A (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R A (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6)))))], (Subalgebra.Fg.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.Fg.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5 (Top.top.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (Algebra.Subalgebra.completeLattice.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5)))) -> (Subalgebra.Fg.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6))))
+  forall {R : Type.{u1}} {S : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u3} A] [_inst_4 : Algebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_6 : Algebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} R S A (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (Algebra.toModule.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} S A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S A (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S A (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} S A (CommSemiring.toSemiring.{u2} S _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R A (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R A (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6)))))], (Subalgebra.FG.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.FG.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5 (Top.top.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (Algebra.Subalgebra.completeLattice.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5)))) -> (Subalgebra.FG.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6))))
 but is expected to have type
-  forall {R : Type.{u3}} {S : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u3} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u1} A] [_inst_4 : Algebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_6 : Algebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} R S A (Algebra.toSMul.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.toSMul.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6)], (Subalgebra.Fg.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.Fg.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5 (Top.top.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5)))) -> (Subalgebra.Fg.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6 (Top.top.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6))))
+  forall {R : Type.{u3}} {S : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u3} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u1} A] [_inst_4 : Algebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_6 : Algebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} R S A (Algebra.toSMul.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.toSMul.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6)], (Subalgebra.FG.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.FG.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5 (Top.top.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5)))) -> (Subalgebra.FG.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6 (Top.top.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6))))
 Case conversion may be inaccurate. Consider using '#align algebra.fg_trans' Algebra.fg_trans'ₓ'. -/
 theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
-    [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).Fg)
-    (hSA : (⊤ : Subalgebra S A).Fg) : (⊤ : Subalgebra R A).Fg :=
+    [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
+    (hSA : (⊤ : Subalgebra S A).FG) : (⊤ : Subalgebra R A).FG :=
   let ⟨s, hs⟩ := hRS
   let ⟨t, ht⟩ := hSA
   ⟨s.image (algebraMap S A) ∪ t, by
@@ -129,12 +129,12 @@ open Classical
 
 /- warning: exists_subalgebra_of_fg -> exists_subalgebra_of_fg is a dubious translation:
 lean 3 declaration is
-  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommSemiring.{u1} A] [_inst_2 : CommSemiring.{u2} B] [_inst_3 : Semiring.{u3} C] [_inst_4 : Algebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2)] [_inst_5 : Algebra.{u2, u3} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u1, u3} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)))) (Algebra.toModule.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u1, u3} A C _inst_1 _inst_3 _inst_6)))))], (Subalgebra.Fg.{u1, u3} A C _inst_1 _inst_3 _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.Fg.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)) (Submodule.hasTop.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) => And (Subalgebra.Fg.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (Submodule.Fg.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u3} (Submodule.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.hasTop.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀))))))
+  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommSemiring.{u1} A] [_inst_2 : CommSemiring.{u2} B] [_inst_3 : Semiring.{u3} C] [_inst_4 : Algebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2)] [_inst_5 : Algebra.{u2, u3} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u1, u3} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)))) (Algebra.toModule.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u1, u3} A C _inst_1 _inst_3 _inst_6)))))], (Subalgebra.FG.{u1, u3} A C _inst_1 _inst_3 _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.FG.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)) (Submodule.hasTop.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) => And (Subalgebra.FG.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (Submodule.FG.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u3} (Submodule.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.hasTop.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀))))))
 but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommSemiring.{u2} A] [_inst_2 : CommSemiring.{u3} B] [_inst_3 : Semiring.{u1} C] [_inst_4 : Algebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2)] [_inst_5 : Algebra.{u3, u1} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u2, u1} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (Algebra.toSMul.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Algebra.toSMul.{u2, u1} A C _inst_1 _inst_3 _inst_6)], (Subalgebra.Fg.{u2, u1} A C _inst_1 _inst_3 _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) => And (Subalgebra.Fg.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (Submodule.Fg.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u1} (Submodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.instTopSubmodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀))))))
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommSemiring.{u2} A] [_inst_2 : CommSemiring.{u3} B] [_inst_3 : Semiring.{u1} C] [_inst_4 : Algebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2)] [_inst_5 : Algebra.{u3, u1} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u2, u1} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (Algebra.toSMul.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Algebra.toSMul.{u2, u1} A C _inst_1 _inst_3 _inst_6)], (Subalgebra.FG.{u2, u1} A C _inst_1 _inst_3 _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.FG.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) => And (Subalgebra.FG.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (Submodule.FG.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u1} (Submodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.instTopSubmodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀))))))
 Case conversion may be inaccurate. Consider using '#align exists_subalgebra_of_fg exists_subalgebra_of_fgₓ'. -/
-theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).Fg) (hBC : (⊤ : Submodule B C).Fg) :
-    ∃ B₀ : Subalgebra A B, B₀.Fg ∧ (⊤ : Submodule B₀ C).Fg :=
+theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
+    ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG :=
   by
   cases' hAC with x hx
   cases' hBC with y hy
@@ -191,18 +191,18 @@ variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
 /- warning: fg_of_fg_of_fg -> fg_of_fg_of_fg is a dubious translation:
 lean 3 declaration is
-  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.Fg.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
+  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.FG.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
 but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (CommSemiring.toSemiring.{u2} A (CommRing.toCommSemiring.{u2} A _inst_1))], (Subalgebra.Fg.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4))))
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (CommSemiring.toSemiring.{u2} A (CommRing.toCommSemiring.{u2} A _inst_1))], (Subalgebra.FG.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)))) -> (Submodule.FG.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.FG.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4))))
 Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
 then B is algebra-finite over A.
 
 References: Atiyah--Macdonald Proposition 7.8; Stacks 00IS; Altman--Kleiman 16.17. -/
-theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).Fg)
-    (hBC : (⊤ : Submodule B C).Fg) (hBCi : Function.Injective (algebraMap B C)) :
-    (⊤ : Subalgebra A B).Fg :=
+theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).FG)
+    (hBC : (⊤ : Submodule B C).FG) (hBCi : Function.Injective (algebraMap B C)) :
+    (⊤ : Subalgebra A B).FG :=
   let ⟨B₀, hAB₀, hB₀C⟩ := exists_subalgebra_of_fg A B C hAC hBC
   Algebra.fg_trans' (B₀.fg_top.2 hAB₀) <|
     Subalgebra.fg_of_submodule_fg <|
Diff
@@ -193,7 +193,7 @@ variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 lean 3 declaration is
   forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.Fg.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
 but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (Ring.toSemiring.{u2} A (CommRing.toRing.{u2} A _inst_1))], (Subalgebra.Fg.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4))))
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (CommSemiring.toSemiring.{u2} A (CommRing.toCommSemiring.{u2} A _inst_1))], (Subalgebra.Fg.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (CommSemiring.toSemiring.{u1} C (CommRing.toCommSemiring.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)) _inst_4))))
 Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
Diff
@@ -193,7 +193,7 @@ variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 lean 3 declaration is
   forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.Fg.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
 but is expected to have type
-  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (Ring.toSemiring.{u2} A (CommRing.toRing.{u2} A _inst_1))], (Subalgebra.Fg.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (_private.Mathlib.RingTheory.Ideal.Operations.0.Ideal.instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRingToNonUnitalCommRing.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) _inst_3 _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (_private.Mathlib.RingTheory.Ideal.Operations.0.Ideal.instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRingToNonUnitalCommRing.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) _inst_3 _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (_private.Mathlib.RingTheory.Ideal.Operations.0.Ideal.instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRingToNonUnitalCommRing.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) _inst_3 _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4))))
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (Ring.toSemiring.{u2} A (CommRing.toRing.{u2} A _inst_1))], (Subalgebra.Fg.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (Algebra.toModule.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4))))
 Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau
 
 ! This file was ported from Lean 3 source module ring_theory.adjoin.tower
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 94eaaaa6064d32e98cf838789144cf5318c37cf0
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -13,6 +13,9 @@ import Mathbin.RingTheory.Adjoin.Fg
 /-!
 # Adjoining elements and being finitely generated in an algebra tower
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 ## Main results
 
  * `algebra.fg_trans'`: if `S` is finitely generated as `R`-algebra and `A` as `S`-algebra,
Diff
@@ -30,13 +30,21 @@ variable (R : Type u) (S : Type v) (A : Type w) (B : Type u₁)
 
 namespace Algebra
 
+#print Algebra.adjoin_algebraMap /-
 theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R] [CommSemiring S]
     [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (s : Set S) :
     adjoin R (algebraMap S A '' s) = (adjoin R s).map (IsScalarTower.toAlgHom R S A) :=
   le_antisymm (adjoin_le <| Set.image_subset_iff.2 fun y hy => ⟨y, subset_adjoin hy, rfl⟩)
     (Subalgebra.map_le.2 <| adjoin_le fun y hy => subset_adjoin ⟨y, hy, rfl⟩)
 #align algebra.adjoin_algebra_map Algebra.adjoin_algebraMap
+-/
 
+/- warning: algebra.adjoin_restrict_scalars -> Algebra.adjoin_restrictScalars is a dubious translation:
+lean 3 declaration is
+  forall (C : Type.{u1}) (D : Type.{u2}) (E : Type.{u3}) [_inst_1 : CommSemiring.{u1} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u3} E] [_inst_4 : Algebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_6 : Algebra.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} C D E (SMulZeroClass.toHasSmul.{u1, u2} C D (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} C D (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} C D (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} C D (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)))) (Algebra.toModule.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} D E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} D E (MulZeroClass.toHasZero.{u2} D (MulZeroOneClass.toMulZeroClass.{u2} D (MonoidWithZero.toMulZeroOneClass.{u2} D (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} D E (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} D E (CommSemiring.toSemiring.{u2} D _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6))))) (SMulZeroClass.toHasSmul.{u1, u3} C E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} C E (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} C E (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} C E (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)))))] (S : Set.{u3} E), Eq.{succ u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u3} D E _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u1, u3, u3} C (coeSort.{succ u3, succ (succ u3)} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) E (Subalgebra.setLike.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) E _inst_1 (Subalgebra.toCommSemiring.{u1, u3} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u3} E _inst_3) (Subalgebra.algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u3, u1, u3} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u1, u3, u3} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) _inst_5 (IsScalarTower.right.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u3, u3} (coeSort.{succ u3, succ (succ u3)} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5) E (Subalgebra.setLike.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5)) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) E (Subalgebra.toCommSemiring.{u1, u3} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u3} E _inst_3) (Subalgebra.toAlgebra.{u3, u1, u3} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (Algebra.id.{u3} E _inst_3) (Subalgebra.map.{u1, u2, u3} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u1, u2, u3} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
+but is expected to have type
+  forall (C : Type.{u3}) (D : Type.{u2}) (E : Type.{u1}) [_inst_1 : CommSemiring.{u3} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u1} E] [_inst_4 : Algebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_5 : Algebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_6 : Algebra.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} C D E (Algebra.toSMul.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6) (Algebra.toSMul.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)] (S : Set.{u1} E), Eq.{succ u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.restrictScalars.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7 (Algebra.adjoin.{u2, u1} D E _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_6 S)) (Subalgebra.restrictScalars.{u3, u1, u1} C (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E _inst_1 (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.instAlgebraSubtypeMemSubalgebraInstMembershipInstSetLikeSubalgebraToSemiring.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) _inst_5 (IsScalarTower.subalgebra'.{u3, u1, u1} C E E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) _inst_5 (IsScalarTower.right.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (Algebra.adjoin.{u1, u1} (Subtype.{succ u1} E (fun (x : E) => Membership.mem.{u1, u1} E (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) (SetLike.instMembership.{u1, u1} (Subalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5) E (Subalgebra.instSetLikeSubalgebra.{u3, u1} C E _inst_1 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5)) x (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4)))))) E (Subalgebra.toCommSemiring.{u3, u1} C E _inst_1 _inst_3 _inst_5 (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) (CommSemiring.toSemiring.{u1} E _inst_3) (Subalgebra.toAlgebra.{u1, u3, u1} E C E _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (Algebra.id.{u1} E _inst_3) (Subalgebra.map.{u3, u2, u1} C D E _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_5 (IsScalarTower.toAlgHom.{u3, u2, u1} C D E _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} E _inst_3) _inst_4 _inst_6 _inst_5 _inst_7) (Top.top.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_4))))) S))
+Case conversion may be inaccurate. Consider using '#align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalarsₓ'. -/
 theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
     (Algebra.adjoin D S).restrictScalars C =
@@ -58,6 +66,12 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
     exact ⟨z, Eq.trans h1 h2⟩
 #align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalars
 
+/- warning: algebra.adjoin_res_eq_adjoin_res -> Algebra.adjoin_res_eq_adjoin_res is a dubious translation:
+lean 3 declaration is
+  forall (C : Type.{u1}) (D : Type.{u2}) (E : Type.{u3}) (F : Type.{u4}) [_inst_1 : CommSemiring.{u1} C] [_inst_2 : CommSemiring.{u2} D] [_inst_3 : CommSemiring.{u3} E] [_inst_4 : CommSemiring.{u4} F] [_inst_5 : Algebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2)] [_inst_6 : Algebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3)] [_inst_7 : Algebra.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_8 : Algebra.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_9 : Algebra.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4)] [_inst_10 : IsScalarTower.{u1, u2, u4} C D F (SMulZeroClass.toHasSmul.{u1, u2} C D (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} C D (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} C D (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u2} D (AddMonoid.toAddZeroClass.{u2} D (AddCommMonoid.toAddMonoid.{u2} D (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} C D (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} D (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)))) (Algebra.toModule.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5))))) (SMulZeroClass.toHasSmul.{u2, u4} D F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u2, u4} D F (MulZeroClass.toHasZero.{u2} D (MulZeroOneClass.toMulZeroClass.{u2} D (MonoidWithZero.toMulZeroOneClass.{u2} D (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u2, u4} D F (Semiring.toMonoidWithZero.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u2, u4} D F (CommSemiring.toSemiring.{u2} D _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8))))) (SMulZeroClass.toHasSmul.{u1, u4} C F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u1, u4} C F (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u1, u4} C F (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u1, u4} C F (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7)))))] [_inst_11 : IsScalarTower.{u1, u3, u4} C E F (SMulZeroClass.toHasSmul.{u1, u3} C E (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} C E (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} C E (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u3} E (AddMonoid.toAddZeroClass.{u3} E (AddCommMonoid.toAddMonoid.{u3} E (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} C E (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} E (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)))) (Algebra.toModule.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6))))) (SMulZeroClass.toHasSmul.{u3, u4} E F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u3, u4} E F (MulZeroClass.toHasZero.{u3} E (MulZeroOneClass.toMulZeroClass.{u3} E (MonoidWithZero.toMulZeroOneClass.{u3} E (Semiring.toMonoidWithZero.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u3, u4} E F (Semiring.toMonoidWithZero.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u3, u4} E F (CommSemiring.toSemiring.{u3} E _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9))))) (SMulZeroClass.toHasSmul.{u1, u4} C F (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (SMulWithZero.toSmulZeroClass.{u1, u4} C F (MulZeroClass.toHasZero.{u1} C (MulZeroOneClass.toMulZeroClass.{u1} C (MonoidWithZero.toMulZeroOneClass.{u1} C (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1))))) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (MulActionWithZero.toSMulWithZero.{u1, u4} C F (Semiring.toMonoidWithZero.{u1} C (CommSemiring.toSemiring.{u1} C _inst_1)) (AddZeroClass.toHasZero.{u4} F (AddMonoid.toAddZeroClass.{u4} F (AddCommMonoid.toAddMonoid.{u4} F (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))))))) (Module.toMulActionWithZero.{u1, u4} C F (CommSemiring.toSemiring.{u1} C _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u4} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u4} F (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4)))) (Algebra.toModule.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7)))))] {S : Set.{u2} D} {T : Set.{u3} E}, (Eq.{succ u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (Algebra.adjoin.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5 S) (Top.top.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5) (Algebra.Subalgebra.completeLattice.{u1, u2} C D _inst_1 (CommSemiring.toSemiring.{u2} D _inst_2) _inst_5)))) -> (Eq.{succ u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (Algebra.adjoin.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6 T) (Top.top.{u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} C E _inst_1 (CommSemiring.toSemiring.{u3} E _inst_3) _inst_6)))) -> (Eq.{succ u4} (Subalgebra.{u1, u4} C F _inst_1 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u1, u3, u4} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9 (Set.image.{u2, u4} D F (coeFn.{max (succ u2) (succ u4), max (succ u2) (succ u4)} (RingHom.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (fun (_x : RingHom.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) => D -> F) (RingHom.hasCoeToFun.{u2, u4} D F (Semiring.toNonAssocSemiring.{u2} D (CommSemiring.toSemiring.{u2} D _inst_2)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (algebraMap.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u1, u2, u4} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u2, u4} D F _inst_2 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_8 (Set.image.{u3, u4} E F (coeFn.{max (succ u3) (succ u4), max (succ u3) (succ u4)} (RingHom.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (fun (_x : RingHom.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) => E -> F) (RingHom.hasCoeToFun.{u3, u4} E F (Semiring.toNonAssocSemiring.{u3} E (CommSemiring.toSemiring.{u3} E _inst_3)) (Semiring.toNonAssocSemiring.{u4} F (CommSemiring.toSemiring.{u4} F _inst_4))) (algebraMap.{u3, u4} E F _inst_3 (CommSemiring.toSemiring.{u4} F _inst_4) _inst_9)) T))))
+but is expected to have type
+  forall (C : Type.{u4}) (D : Type.{u3}) (E : Type.{u2}) (F : Type.{u1}) [_inst_1 : CommSemiring.{u4} C] [_inst_2 : CommSemiring.{u3} D] [_inst_3 : CommSemiring.{u2} E] [_inst_4 : CommSemiring.{u1} F] [_inst_5 : Algebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2)] [_inst_6 : Algebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3)] [_inst_7 : Algebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_8 : Algebra.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_9 : Algebra.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4)] [_inst_10 : IsScalarTower.{u4, u3, u1} C D F (Algebra.toSMul.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.toSMul.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] [_inst_11 : IsScalarTower.{u4, u2, u1} C E F (Algebra.toSMul.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.toSMul.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9) (Algebra.toSMul.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7)] {S : Set.{u3} D} {T : Set.{u2} E}, (Eq.{succ u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.adjoin.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5 S) (Top.top.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (CompleteLattice.toTop.{u3} (Subalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u4, u3} C D _inst_1 (CommSemiring.toSemiring.{u3} D _inst_2) _inst_5)))) -> (Eq.{succ u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.adjoin.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6 T) (Top.top.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (CompleteLattice.toTop.{u2} (Subalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u4, u2} C E _inst_1 (CommSemiring.toSemiring.{u2} E _inst_3) _inst_6)))) -> (Eq.{succ u1} (Subalgebra.{u4, u1} C F _inst_1 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_7) (Subalgebra.restrictScalars.{u4, u2, u1} C E F _inst_1 _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_6 _inst_9 _inst_7 _inst_11 (Algebra.adjoin.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9 (Set.image.{u3, u1} D F (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D (fun (_x : D) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : D) => F) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonUnitalNonAssocSemiring.toMul.{u3} D (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} D (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u3, u1} D F (Semiring.toNonAssocSemiring.{u3} D (CommSemiring.toSemiring.{u3} D _inst_2)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8)) S))) (Subalgebra.restrictScalars.{u4, u3, u1} C D F _inst_1 _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_5 _inst_8 _inst_7 _inst_10 (Algebra.adjoin.{u3, u1} D F _inst_2 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_8 (Set.image.{u2, u1} E F (FunLike.coe.{max (succ u2) (succ u1), succ u2, succ u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E (fun (_x : E) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : E) => F) _x) (MulHomClass.toFunLike.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonUnitalNonAssocSemiring.toMul.{u2} E (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)))) (NonUnitalNonAssocSemiring.toMul.{u1} F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} E (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} F (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u2, u1} (RingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4))) E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)) (RingHom.instRingHomClassRingHom.{u2, u1} E F (Semiring.toNonAssocSemiring.{u2} E (CommSemiring.toSemiring.{u2} E _inst_3)) (Semiring.toNonAssocSemiring.{u1} F (CommSemiring.toSemiring.{u1} F _inst_4)))))) (algebraMap.{u2, u1} E F _inst_3 (CommSemiring.toSemiring.{u1} F _inst_4) _inst_9)) T))))
+Case conversion may be inaccurate. Consider using '#align algebra.adjoin_res_eq_adjoin_res Algebra.adjoin_res_eq_adjoin_resₓ'. -/
 theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiring D]
     [CommSemiring E] [CommSemiring F] [Algebra C D] [Algebra C E] [Algebra C F] [Algebra D F]
     [Algebra E F] [IsScalarTower C D F] [IsScalarTower C E F] {S : Set D} {T : Set E}
@@ -77,6 +91,12 @@ section
 
 open Classical
 
+/- warning: algebra.fg_trans' -> Algebra.fg_trans' is a dubious translation:
+lean 3 declaration is
+  forall {R : Type.{u1}} {S : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommSemiring.{u1} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u3} A] [_inst_4 : Algebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_6 : Algebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3)] [_inst_7 : IsScalarTower.{u1, u2, u3} R S A (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)))) (Algebra.toModule.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} S A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} S A (MulZeroClass.toHasZero.{u2} S (MulZeroOneClass.toMulZeroClass.{u2} S (MonoidWithZero.toMulZeroOneClass.{u2} S (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} S A (Semiring.toMonoidWithZero.{u2} S (CommSemiring.toSemiring.{u2} S _inst_2)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u2, u3} S A (CommSemiring.toSemiring.{u2} S _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} R A (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} R A (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} R A (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u3} A (AddMonoid.toAddZeroClass.{u3} A (AddCommMonoid.toAddMonoid.{u3} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3))))))) (Module.toMulActionWithZero.{u1, u3} R A (CommSemiring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A _inst_3)))) (Algebra.toModule.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6)))))], (Subalgebra.Fg.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.Fg.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5 (Top.top.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5) (Algebra.Subalgebra.completeLattice.{u2, u3} S A _inst_2 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_5)))) -> (Subalgebra.Fg.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} R A _inst_1 (CommSemiring.toSemiring.{u3} A _inst_3) _inst_6))))
+but is expected to have type
+  forall {R : Type.{u3}} {S : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommSemiring.{u3} R] [_inst_2 : CommSemiring.{u2} S] [_inst_3 : CommSemiring.{u1} A] [_inst_4 : Algebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2)] [_inst_5 : Algebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_6 : Algebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3)] [_inst_7 : IsScalarTower.{u3, u2, u1} R S A (Algebra.toSMul.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.toSMul.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.toSMul.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6)], (Subalgebra.Fg.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4 (Top.top.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (CompleteLattice.toTop.{u2} (Subalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u3, u2} R S _inst_1 (CommSemiring.toSemiring.{u2} S _inst_2) _inst_4)))) -> (Subalgebra.Fg.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5 (Top.top.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} S A _inst_2 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_5)))) -> (Subalgebra.Fg.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6 (Top.top.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u3, u1} R A _inst_1 (CommSemiring.toSemiring.{u1} A _inst_3) _inst_6))))
+Case conversion may be inaccurate. Consider using '#align algebra.fg_trans' Algebra.fg_trans'ₓ'. -/
 theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).Fg)
     (hSA : (⊤ : Subalgebra S A).Fg) : (⊤ : Subalgebra R A).Fg :=
@@ -104,6 +124,12 @@ open Finset Submodule
 
 open Classical
 
+/- warning: exists_subalgebra_of_fg -> exists_subalgebra_of_fg is a dubious translation:
+lean 3 declaration is
+  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommSemiring.{u1} A] [_inst_2 : CommSemiring.{u2} B] [_inst_3 : Semiring.{u3} C] [_inst_4 : Algebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2)] [_inst_5 : Algebra.{u2, u3} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u1, u3} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)))) (Algebra.toModule.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B _inst_2)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A _inst_1)) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3)))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u1, u3} A C _inst_1 _inst_3 _inst_6)))))], (Subalgebra.Fg.{u1, u3} A C _inst_1 _inst_3 _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C _inst_1 _inst_3 _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.Fg.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)) (Submodule.hasTop.{u2, u3} B C (CommSemiring.toSemiring.{u2} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) => And (Subalgebra.Fg.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (Submodule.Fg.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u3} (Submodule.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.hasTop.{u2, u3} (coeSort.{succ u2, succ (succ u2)} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Subalgebra.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4) B (Subalgebra.setLike.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4)) B₀) C (Subalgebra.toSemiring.{u1, u2} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Subalgebra.moduleLeft.{u1, u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u2} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C _inst_3))) (Algebra.toModule.{u2, u3} B C _inst_2 _inst_3 _inst_5) B₀))))))
+but is expected to have type
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommSemiring.{u2} A] [_inst_2 : CommSemiring.{u3} B] [_inst_3 : Semiring.{u1} C] [_inst_4 : Algebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2)] [_inst_5 : Algebra.{u3, u1} B C _inst_2 _inst_3] [_inst_6 : Algebra.{u2, u1} A C _inst_1 _inst_3] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (Algebra.toSMul.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Algebra.toSMul.{u2, u1} A C _inst_1 _inst_3 _inst_6)], (Subalgebra.Fg.{u2, u1} A C _inst_1 _inst_3 _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C _inst_1 _inst_3 _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (CommSemiring.toSemiring.{u3} B _inst_2) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5)))) -> (Exists.{succ u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (fun (B₀ : Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) => And (Subalgebra.Fg.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (Submodule.Fg.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀) (Top.top.{u1} (Submodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀)) (Submodule.instTopSubmodule.{u3, u1} (Subtype.{succ u3} B (fun (x : B) => Membership.mem.{u3, u3} B (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) (SetLike.instMembership.{u3, u3} (Subalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4) B (Subalgebra.instSetLikeSubalgebra.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4)) x B₀)) C (Subalgebra.toSemiring.{u2, u3} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 B₀) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Subalgebra.moduleLeft.{u2, u3, u1} A B _inst_1 (CommSemiring.toSemiring.{u3} B _inst_2) _inst_4 C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C _inst_3))) (Algebra.toModule.{u3, u1} B C _inst_2 _inst_3 _inst_5) B₀))))))
+Case conversion may be inaccurate. Consider using '#align exists_subalgebra_of_fg exists_subalgebra_of_fgₓ'. -/
 theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).Fg) (hBC : (⊤ : Submodule B C).Fg) :
     ∃ B₀ : Subalgebra A B, B₀.Fg ∧ (⊤ : Submodule B₀ C).Fg :=
   by
@@ -160,6 +186,12 @@ variable [CommRing A] [CommRing B] [CommRing C]
 
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
+/- warning: fg_of_fg_of_fg -> fg_of_fg_of_fg is a dubious translation:
+lean 3 declaration is
+  forall (A : Type.{u1}) (B : Type.{u2}) (C : Type.{u3}) [_inst_1 : CommRing.{u1} A] [_inst_2 : CommRing.{u2} B] [_inst_3 : CommRing.{u3} C] [_inst_4 : Algebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))] [_inst_5 : Algebra.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_6 : Algebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))] [_inst_7 : IsScalarTower.{u1, u2, u3} A B C (SMulZeroClass.toHasSmul.{u1, u2} A B (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} A B (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} A B (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u2} B (AddMonoid.toAddZeroClass.{u2} B (AddCommMonoid.toAddMonoid.{u2} B (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)))))))) (Module.toMulActionWithZero.{u1, u2} A B (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} B (Semiring.toNonAssocSemiring.{u2} B (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2))))) (Algebra.toModule.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))) (SMulZeroClass.toHasSmul.{u2, u3} B C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u2, u3} B C (MulZeroClass.toHasZero.{u2} B (MulZeroOneClass.toMulZeroClass.{u2} B (MonoidWithZero.toMulZeroOneClass.{u2} B (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u2, u3} B C (Semiring.toMonoidWithZero.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u2, u3} B C (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u3} A C (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (SMulWithZero.toSmulZeroClass.{u1, u3} A C (MulZeroClass.toHasZero.{u1} A (MulZeroOneClass.toMulZeroClass.{u1} A (MonoidWithZero.toMulZeroOneClass.{u1} A (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)))))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (MulActionWithZero.toSMulWithZero.{u1, u3} A C (Semiring.toMonoidWithZero.{u1} A (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1))) (AddZeroClass.toHasZero.{u3} C (AddMonoid.toAddZeroClass.{u3} C (AddCommMonoid.toAddMonoid.{u3} C (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))))))) (Module.toMulActionWithZero.{u1, u3} A C (CommSemiring.toSemiring.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} C (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))))] [_inst_8 : IsNoetherianRing.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))], (Subalgebra.Fg.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6 (Top.top.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (CompleteLattice.toHasTop.{u3} (Subalgebra.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6) (Algebra.Subalgebra.completeLattice.{u1, u3} A C (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5) (Top.top.{u3} (Submodule.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)) (Submodule.hasTop.{u2, u3} B C (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) (AddCommGroup.toAddCommMonoid.{u3} C (NonUnitalNonAssocRing.toAddCommGroup.{u3} C (NonAssocRing.toNonUnitalNonAssocRing.{u3} C (Ring.toNonAssocRing.{u3} C (CommRing.toRing.{u3} C _inst_3))))) (Algebra.toModule.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5)))) -> (Function.Injective.{succ u2, succ u3} B C (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (fun (_x : RingHom.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) => B -> C) (RingHom.hasCoeToFun.{u2, u3} B C (Semiring.toNonAssocSemiring.{u2} B (CommSemiring.toSemiring.{u2} B (CommRing.toCommSemiring.{u2} B _inst_2))) (Semiring.toNonAssocSemiring.{u3} C (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)))) (algebraMap.{u2, u3} B C (CommRing.toCommSemiring.{u2} B _inst_2) (Ring.toSemiring.{u3} C (CommRing.toRing.{u3} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4 (Top.top.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (CompleteLattice.toHasTop.{u2} (Subalgebra.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4) (Algebra.Subalgebra.completeLattice.{u1, u2} A B (CommRing.toCommSemiring.{u1} A _inst_1) (Ring.toSemiring.{u2} B (CommRing.toRing.{u2} B _inst_2)) _inst_4))))
+but is expected to have type
+  forall (A : Type.{u2}) (B : Type.{u3}) (C : Type.{u1}) [_inst_1 : CommRing.{u2} A] [_inst_2 : CommRing.{u3} B] [_inst_3 : CommRing.{u1} C] [_inst_4 : Algebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2))] [_inst_5 : Algebra.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_6 : Algebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))] [_inst_7 : IsScalarTower.{u2, u3, u1} A B C (Algebra.toSMul.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.toSMul.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5) (Algebra.toSMul.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)] [_inst_8 : IsNoetherianRing.{u2} A (Ring.toSemiring.{u2} A (CommRing.toRing.{u2} A _inst_1))], (Subalgebra.Fg.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6 (Top.top.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (CompleteLattice.toTop.{u1} (Subalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6) (Algebra.instCompleteLatticeSubalgebra.{u2, u1} A C (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_6)))) -> (Submodule.Fg.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (_private.Mathlib.RingTheory.Ideal.Operations.0.Ideal.instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRingToNonUnitalCommRing.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) _inst_3 _inst_5) (Top.top.{u1} (Submodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (_private.Mathlib.RingTheory.Ideal.Operations.0.Ideal.instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRingToNonUnitalCommRing.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) _inst_3 _inst_5)) (Submodule.instTopSubmodule.{u3, u1} B C (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} C (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} C (NonAssocRing.toNonUnitalNonAssocRing.{u1} C (Ring.toNonAssocRing.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (_private.Mathlib.RingTheory.Ideal.Operations.0.Ideal.instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRingToNonUnitalCommRing.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) _inst_3 _inst_5)))) -> (Function.Injective.{succ u3, succ u1} B C (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B (fun (_x : B) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : B) => C) _x) (MulHomClass.toFunLike.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonUnitalNonAssocSemiring.toMul.{u3} B (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))))) (NonUnitalNonAssocSemiring.toMul.{u1} C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))) (NonUnitalRingHomClass.toMulHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} B (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2)))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} C (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) (RingHomClass.toNonUnitalRingHomClass.{max u3 u1, u3, u1} (RingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)))) B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))) (RingHom.instRingHomClassRingHom.{u3, u1} B C (Semiring.toNonAssocSemiring.{u3} B (CommSemiring.toSemiring.{u3} B (CommRing.toCommSemiring.{u3} B _inst_2))) (Semiring.toNonAssocSemiring.{u1} C (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3))))))) (algebraMap.{u3, u1} B C (CommRing.toCommSemiring.{u3} B _inst_2) (Ring.toSemiring.{u1} C (CommRing.toRing.{u1} C _inst_3)) _inst_5))) -> (Subalgebra.Fg.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4 (Top.top.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (CompleteLattice.toTop.{u3} (Subalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4) (Algebra.instCompleteLatticeSubalgebra.{u2, u3} A B (CommRing.toCommSemiring.{u2} A _inst_1) (Ring.toSemiring.{u3} B (CommRing.toRing.{u3} B _inst_2)) _inst_4))))
+Case conversion may be inaccurate. Consider using '#align fg_of_fg_of_fg fg_of_fg_of_fgₓ'. -/
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
 then B is algebra-finite over A.

Changes in mathlib4

mathlib3
mathlib4
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
@@ -83,7 +83,6 @@ variable (C : Type*)
 section Semiring
 
 variable [CommSemiring A] [CommSemiring B] [Semiring C]
-
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
 open Finset Submodule
@@ -141,7 +140,6 @@ end Semiring
 section Ring
 
 variable [CommRing A] [CommRing B] [CommRing C]
-
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -62,7 +62,7 @@ end Algebra
 
 section
 
-open Classical
+open scoped Classical
 
 theorem Algebra.fg_trans' {R S A : Type*} [CommSemiring R] [CommSemiring S] [Semiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
@@ -88,7 +88,7 @@ variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
 open Finset Submodule
 
-open Classical
+open scoped Classical
 
 theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
     ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG := by
refactor(*): change definition of Set.image2 etc (#9275)
  • Redefine Set.image2 to use ∃ a ∈ s, ∃ b ∈ t, f a b = c instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c.
  • Redefine Set.seq as Set.image2. The new definition is equal to the old one but rw [Set.seq] gives a different result.
  • Redefine Filter.map₂ to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
  • Update lemmas like Set.mem_image2, Finset.mem_image₂, Set.mem_mul, Finset.mem_div etc

The two reasons to make the change are:

  • ∃ a ∈ s, ∃ b ∈ t, _ is a simp-normal form, and
  • it looks a bit nicer.
Diff
@@ -111,7 +111,7 @@ theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ :
         span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) ≤
       span (Algebra.adjoin A (↑s : Set B)) (↑(insert 1 y : Finset C) : Set C) := by
     rw [span_mul_span, span_le, coe_insert]
-    rintro _ ⟨yi, yj, rfl | hyi, rfl | hyj, rfl⟩ <;> dsimp
+    rintro _ ⟨yi, rfl | hyi, yj, rfl | hyj, rfl⟩ <;> dsimp
     · rw [mul_one]
       exact subset_span (Set.mem_insert _ _)
     · rw [one_mul]
feat: make isNoetherian_of_isNoetherianRing_of_finite an instance (#8999)

Make isNoetherian_of_isNoetherianRing_of_finite an instance: this was impossible in Lean 3 because of a loop.

Diff
@@ -157,7 +157,6 @@ theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).FG)
     Subalgebra.fg_of_submodule_fg <|
       have : IsNoetherianRing B₀ := isNoetherianRing_of_fg hAB₀
       have : Module.Finite B₀ C := ⟨hB₀C⟩
-      have : IsNoetherian B₀ C := isNoetherian_of_isNoetherianRing_of_finite B₀ C
       fg_of_injective (IsScalarTower.toAlgHom B₀ B C).toLinearMap hBCi
 #align fg_of_fg_of_fg fg_of_fg_of_fg
 
feat(RingTheory/FiniteType): generalize some results to non-commutative rings (#6681)

I was hoping to use this in combination with #6680 to show the TensorAlgebra is finitely generated, where I needed to generalize FiniteType.equiv; but it turns out that the FiniteType instance on MonoidAlgebra also isn't generalized!

The summary here is:

  • Move Algebra.adjoin_algebraMap from Mathlib/RingTheory/Adjoin/Tower.lean to Mathlib/RingTheory/Adjoin/Basic.lean and golf the proof to oblivion
  • Provide an alternative statement of adjoin_union_eq_adjoin_adjoin, adjoin_algebraMap_image_union_eq_adjoin_adjoin, which works in non-commutative rings, and use it along with a new adjoin_top lemma to prove Algebra.fg_trans' more generally.
  • Introduce a new S variable throughout, with the convention that R and S are commutative, A and B remain not-necessarily-commutative, and A/S/R is a tower of algebras.
  • Apply some zero-effort generalizations to semirings.
Diff
@@ -27,13 +27,6 @@ variable (R : Type u) (S : Type v) (A : Type w) (B : Type u₁)
 
 namespace Algebra
 
-theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R] [CommSemiring S]
-    [Semiring A] [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (s : Set S) :
-    adjoin R (algebraMap S A '' s) = (adjoin R s).map (IsScalarTower.toAlgHom R S A) :=
-  le_antisymm (adjoin_le <| Set.image_subset_iff.2 fun y hy => ⟨y, subset_adjoin hy, rfl⟩)
-    (Subalgebra.map_le.2 <| adjoin_le fun y hy => subset_adjoin ⟨y, hy, rfl⟩)
-#align algebra.adjoin_algebra_map Algebra.adjoin_algebraMap
-
 theorem adjoin_restrictScalars (C D E : Type*) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
     (Algebra.adjoin D S).restrictScalars C =
@@ -71,15 +64,14 @@ section
 
 open Classical
 
-theorem Algebra.fg_trans' {R S A : Type*} [CommSemiring R] [CommSemiring S] [CommSemiring A]
+theorem Algebra.fg_trans' {R S A : Type*} [CommSemiring R] [CommSemiring S] [Semiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
     (hSA : (⊤ : Subalgebra S A).FG) : (⊤ : Subalgebra R A).FG :=
   let ⟨s, hs⟩ := hRS
   let ⟨t, ht⟩ := hSA
   ⟨s.image (algebraMap S A) ∪ t, by
-    rw [Finset.coe_union, Finset.coe_image, Algebra.adjoin_union_eq_adjoin_adjoin,
-      Algebra.adjoin_algebraMap, hs, Algebra.map_top, IsScalarTower.adjoin_range_toAlgHom, ht,
-      Subalgebra.restrictScalars_top]⟩
+    rw [Finset.coe_union, Finset.coe_image, Algebra.adjoin_algebraMap_image_union_eq_adjoin_adjoin,
+      hs, Algebra.adjoin_top, ht, Subalgebra.restrictScalars_top, Subalgebra.restrictScalars_top]⟩
 #align algebra.fg_trans' Algebra.fg_trans'
 
 end
chore: restate isNoetherian_of_fg_of_noetherian' using Module.Finite (and rename). (#6609)
Diff
@@ -164,7 +164,8 @@ theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).FG)
   Algebra.fg_trans' (B₀.fg_top.2 hAB₀) <|
     Subalgebra.fg_of_submodule_fg <|
       have : IsNoetherianRing B₀ := isNoetherianRing_of_fg hAB₀
-      have : IsNoetherian B₀ C := isNoetherian_of_fg_of_noetherian' hB₀C
+      have : Module.Finite B₀ C := ⟨hB₀C⟩
+      have : IsNoetherian B₀ C := isNoetherian_of_isNoetherianRing_of_finite B₀ C
       fg_of_injective (IsScalarTower.toAlgHom B₀ B C).toLinearMap hBCi
 #align fg_of_fg_of_fg fg_of_fg_of_fg
 
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
@@ -34,7 +34,7 @@ theorem adjoin_algebraMap (R : Type u) (S : Type v) (A : Type w) [CommSemiring R
     (Subalgebra.map_le.2 <| adjoin_le fun y hy => subset_adjoin ⟨y, hy, rfl⟩)
 #align algebra.adjoin_algebra_map Algebra.adjoin_algebraMap
 
-theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D] [CommSemiring E]
+theorem adjoin_restrictScalars (C D E : Type*) [CommSemiring C] [CommSemiring D] [CommSemiring E]
     [Algebra C D] [Algebra C E] [Algebra D E] [IsScalarTower C D E] (S : Set E) :
     (Algebra.adjoin D S).restrictScalars C =
       (Algebra.adjoin ((⊤ : Subalgebra C D).map (IsScalarTower.toAlgHom C D E)) S).restrictScalars
@@ -53,7 +53,7 @@ theorem adjoin_restrictScalars (C D E : Type _) [CommSemiring C] [CommSemiring D
     exact ⟨z, Eq.trans h1 h2⟩
 #align algebra.adjoin_restrict_scalars Algebra.adjoin_restrictScalars
 
-theorem adjoin_res_eq_adjoin_res (C D E F : Type _) [CommSemiring C] [CommSemiring D]
+theorem adjoin_res_eq_adjoin_res (C D E F : Type*) [CommSemiring C] [CommSemiring D]
     [CommSemiring E] [CommSemiring F] [Algebra C D] [Algebra C E] [Algebra C F] [Algebra D F]
     [Algebra E F] [IsScalarTower C D F] [IsScalarTower C E F] {S : Set D} {T : Set E}
     (hS : Algebra.adjoin C S = ⊤) (hT : Algebra.adjoin C T = ⊤) :
@@ -71,7 +71,7 @@ section
 
 open Classical
 
-theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
+theorem Algebra.fg_trans' {R S A : Type*} [CommSemiring R] [CommSemiring S] [CommSemiring A]
     [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
     (hSA : (⊤ : Subalgebra S A).FG) : (⊤ : Subalgebra R A).FG :=
   let ⟨s, hs⟩ := hRS
@@ -86,7 +86,7 @@ end
 
 section ArtinTate
 
-variable (C : Type _)
+variable (C : Type*)
 
 section Semiring
 
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,14 +2,11 @@
 Copyright (c) 2020 Kenny Lau. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Kenny Lau
-
-! This file was ported from Lean 3 source module ring_theory.adjoin.tower
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.RingTheory.Adjoin.FG
 
+#align_import ring_theory.adjoin.tower from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
 /-!
 # Adjoining elements and being finitely generated in an algebra tower
 
chore: reenable eta, bump to nightly 2023-05-16 (#3414)

Now that leanprover/lean4#2210 has been merged, this PR:

  • removes all the set_option synthInstance.etaExperiment true commands (and some etaExperiment% term elaborators)
  • removes many but not quite all set_option maxHeartbeats commands
  • makes various other changes required to cope with leanprover/lean4#2210.

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Matthew Ballard <matt@mrb.email>

Diff
@@ -155,8 +155,6 @@ variable [CommRing A] [CommRing B] [CommRing C]
 
 variable [Algebra A B] [Algebra B C] [Algebra A C] [IsScalarTower A B C]
 
--- Porting note: failed to synthesize Noetherian instance on submodule
-set_option synthInstance.etaExperiment true in
 /-- **Artin--Tate lemma**: if A ⊆ B ⊆ C is a chain of subrings of commutative rings, and
 A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
 then B is algebra-finite over A.
Diff
@@ -8,7 +8,7 @@ Authors: Kenny Lau
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
-import Mathlib.RingTheory.Adjoin.Fg
+import Mathlib.RingTheory.Adjoin.FG
 
 /-!
 # Adjoining elements and being finitely generated in an algebra tower
@@ -75,8 +75,8 @@ section
 open Classical
 
 theorem Algebra.fg_trans' {R S A : Type _} [CommSemiring R] [CommSemiring S] [CommSemiring A]
-    [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).Fg)
-    (hSA : (⊤ : Subalgebra S A).Fg) : (⊤ : Subalgebra R A).Fg :=
+    [Algebra R S] [Algebra S A] [Algebra R A] [IsScalarTower R S A] (hRS : (⊤ : Subalgebra R S).FG)
+    (hSA : (⊤ : Subalgebra S A).FG) : (⊤ : Subalgebra R A).FG :=
   let ⟨s, hs⟩ := hRS
   let ⟨t, ht⟩ := hSA
   ⟨s.image (algebraMap S A) ∪ t, by
@@ -101,8 +101,8 @@ open Finset Submodule
 
 open Classical
 
-theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).Fg) (hBC : (⊤ : Submodule B C).Fg) :
-    ∃ B₀ : Subalgebra A B, B₀.Fg ∧ (⊤ : Submodule B₀ C).Fg := by
+theorem exists_subalgebra_of_fg (hAC : (⊤ : Subalgebra A C).FG) (hBC : (⊤ : Submodule B C).FG) :
+    ∃ B₀ : Subalgebra A B, B₀.FG ∧ (⊤ : Submodule B₀ C).FG := by
   cases' hAC with x hx
   cases' hBC with y hy
   have := hy
@@ -162,9 +162,9 @@ A is noetherian, and C is algebra-finite over A, and C is module-finite over B,
 then B is algebra-finite over A.
 
 References: Atiyah--Macdonald Proposition 7.8; Stacks 00IS; Altman--Kleiman 16.17. -/
-theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).Fg)
-    (hBC : (⊤ : Submodule B C).Fg) (hBCi : Function.Injective (algebraMap B C)) :
-    (⊤ : Subalgebra A B).Fg :=
+theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).FG)
+    (hBC : (⊤ : Submodule B C).FG) (hBCi : Function.Injective (algebraMap B C)) :
+    (⊤ : Subalgebra A B).FG :=
   let ⟨B₀, hAB₀, hB₀C⟩ := exists_subalgebra_of_fg A B C hAC hBC
   Algebra.fg_trans' (B₀.fg_top.2 hAB₀) <|
     Subalgebra.fg_of_submodule_fg <|
@@ -176,4 +176,3 @@ theorem fg_of_fg_of_fg [IsNoetherianRing A] (hAC : (⊤ : Subalgebra A C).Fg)
 end Ring
 
 end ArtinTate
-
feat: port RingTheory.Adjoin.Tower (#3210)

Dependencies 8 + 536

537 files ported (98.5%)
224492 lines ported (98.6%)
Show graph

The unported dependencies are