ring_theory.adjoin.tower
⟷
Mathlib.RingTheory.Adjoin.Tower
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -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) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -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
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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 :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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 =>
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -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) :
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -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 <|
mathlib commit https://github.com/leanprover-community/mathlib/commit/08e1d8d4d989df3a6df86f385e9053ec8a372cc1
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/9b2b58d6b14b895b2f375108e765cb47de71aebd
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/3cacc945118c8c637d89950af01da78307f59325
@@ -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,
mathlib commit https://github.com/leanprover-community/mathlib/commit/88fcb83fe7996142dfcfe7368d31304a9adc874a
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
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)
@@ -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
open Classical
(#11199)
We remove all but one open Classical
s, 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.
@@ -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
Set.image2
etc (#9275)
Set.image2
to use ∃ a ∈ s, ∃ b ∈ t, f a b = c
instead of ∃ a b, a ∈ s ∧ b ∈ t ∧ f a b = c
.Set.seq
as Set.image2
. The new definition is equal to the old one but rw [Set.seq]
gives a different result.Filter.map₂
to use ∃ u ∈ f, ∃ v ∈ g, image2 m u v ⊆ s
instead of ∃ u v, u ∈ f ∧ v ∈ g ∧ ...
Set.mem_image2
, Finset.mem_image₂
, Set.mem_mul
, Finset.mem_div
etcThe two reasons to make the change are:
∃ a ∈ s, ∃ b ∈ t, _
is a simp
-normal form, and@@ -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]
Make isNoetherian_of_isNoetherianRing_of_finite an instance
: this was impossible in Lean 3 because of a loop.
@@ -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
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:
Algebra.adjoin_algebraMap
from Mathlib/RingTheory/Adjoin/Tower.lean
to Mathlib/RingTheory/Adjoin/Basic.lean
and golf the proof to oblivionadjoin_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.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.@@ -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
@@ -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
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -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
@@ -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
Now that leanprover/lean4#2210 has been merged, this PR:
set_option synthInstance.etaExperiment true
commands (and some etaExperiment%
term elaborators)set_option maxHeartbeats
commandsCo-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>
@@ -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.
Fg
to FG
(#3948)
Please refer to this Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Naming.20convention/near/357712556
@@ -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
-
The unported dependencies are