ring_theory.graded_algebra.radicalMathlib.RingTheory.GradedAlgebra.Radical

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -85,7 +85,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
       intro x hx
       rw [filter_nonempty_iff]
       contrapose! hx
-      simp_rw [proj_apply] at hx 
+      simp_rw [proj_apply] at hx
       rw [← sum_support_decompose 𝒜 x]
       exact Ideal.sum_mem _ hx
     set max₁ := set₁.max' (Nonempty x rid₁) with max₁_eq
@@ -114,7 +114,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
       rw [eq_sub_of_add_eq eq_add_sum.symm]
       refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
       rcases z with ⟨i, j⟩
-      simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H 
+      simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H
       rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
       have max_lt : max₁ < i ∨ max₂ < j :=
         by
@@ -123,26 +123,26 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
         · refine' False.elim (H₁ ⟨rfl, add_left_cancel H₄⟩)
         · apply Or.inr
           have := add_lt_add_right h j
-          rw [H₄] at this 
+          rw [H₄] at this
           exact lt_of_add_lt_add_left this
       cases max_lt
       · -- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
         have not_mem : i ∉ set₁ := fun h =>
           lt_irrefl _ ((max'_lt_iff set₁ (Nonempty x rid₁)).mp max_lt i h)
-        rw [set₁_eq] at not_mem 
-        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
+        rw [set₁_eq] at not_mem
+        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
         exact Ideal.mul_mem_right _ I (not_mem H₂)
       · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
         have not_mem : j ∉ set₂ := fun h =>
           lt_irrefl _ ((max'_lt_iff set₂ (Nonempty y rid₂)).mp max_lt j h)
-        rw [set₂_eq] at not_mem 
-        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
+        rw [set₂_eq] at not_mem
+        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
         exact Ideal.mul_mem_left I _ (not_mem H₃)
     have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I :=
       by
       have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I :=
         by
-        rw [mem_filter] at mem_max₁ mem_max₂ 
+        rw [mem_filter] at mem_max₁ mem_max₂
         exact ⟨mem_max₁.2, mem_max₂.2⟩
       intro rid
       cases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
Diff
@@ -62,27 +62,97 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
     intro x y hxy
     by_contra rid
     obtain ⟨rid₁, rid₂⟩ := not_or_distrib.mp rid
-    classical⟩
+    classical
+    /-
+      The idea of the proof is the following :
+      since `x * y ∈ I` and `I` homogeneous, then `proj i (x * y) ∈ I` for any `i : ι`.
+      Then consider two sets `{i ∈ x.support | xᵢ ∉ I}` and `{j ∈ y.support | yⱼ ∉ J}`;
+      let `max₁, max₂` be the maximum of the two sets, then `proj (max₁ + max₂) (x * y) ∈ I`.
+      Then, `proj max₁ x ∉ I` and `proj max₂ j ∉ I`
+      but `proj i x ∈ I` for all `max₁ < i` and `proj j y ∈ I` for all `max₂ < j`.
+      `  proj (max₁ + max₂) (x * y)`
+      `= ∑ {(i, j) ∈ supports | i + j = max₁ + max₂}, xᵢ * yⱼ`
+      `= proj max₁ x * proj max₂ y`
+      `  + ∑ {(i, j) ∈ supports \ {(max₁, max₂)} | i + j = max₁ + max₂}, xᵢ * yⱼ`.
+      This is a contradiction, because both `proj (max₁ + max₂) (x * y) ∈ I` and the sum on the
+      right hand side is in `I` however `proj max₁ x * proj max₂ y` is not in `I`.
+      -/
+    set set₁ := (decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I with set₁_eq
+    set set₂ := (decompose 𝒜 y).support.filterₓ fun i => proj 𝒜 i y ∉ I with set₂_eq
+    have nonempty :
+      ∀ x : A, x ∉ I → ((decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I).Nonempty :=
+      by
+      intro x hx
+      rw [filter_nonempty_iff]
+      contrapose! hx
+      simp_rw [proj_apply] at hx 
+      rw [← sum_support_decompose 𝒜 x]
+      exact Ideal.sum_mem _ hx
+    set max₁ := set₁.max' (Nonempty x rid₁) with max₁_eq
+    set max₂ := set₂.max' (Nonempty y rid₂) with max₂_eq
+    have mem_max₁ : max₁ ∈ set₁ := max'_mem set₁ (Nonempty x rid₁)
+    have mem_max₂ : max₂ ∈ set₂ := max'_mem set₂ (Nonempty y rid₂)
+    replace hxy : proj 𝒜 (max₁ + max₂) (x * y) ∈ I := hI _ hxy
+    have mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∈ I :=
+      by
+      set antidiag :=
+        ((decompose 𝒜 x).support ×ˢ (decompose 𝒜 y).support).filterₓ fun z : ι × ι =>
+          z.1 + z.2 = max₁ + max₂ with
+        ha
+      have mem_antidiag : (max₁, max₂) ∈ antidiag :=
+        by
+        simp only [add_sum_erase, mem_filter, mem_product]
+        exact ⟨⟨mem_of_mem_filter _ mem_max₁, mem_of_mem_filter _ mem_max₂⟩, rfl⟩
+      have eq_add_sum :=
+        calc
+          proj 𝒜 (max₁ + max₂) (x * y) = ∑ ij in antidiag, proj 𝒜 ij.1 x * proj 𝒜 ij.2 y := by
+            simp_rw [ha, proj_apply, DirectSum.decompose_mul, DirectSum.coe_mul_apply 𝒜]
+          _ =
+              proj 𝒜 max₁ x * proj 𝒜 max₂ y +
+                ∑ ij in antidiag.erase (max₁, max₂), proj 𝒜 ij.1 x * proj 𝒜 ij.2 y :=
+            (add_sum_erase _ _ mem_antidiag).symm
+      rw [eq_sub_of_add_eq eq_add_sum.symm]
+      refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
+      rcases z with ⟨i, j⟩
+      simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H 
+      rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
+      have max_lt : max₁ < i ∨ max₂ < j :=
+        by
+        rcases lt_trichotomy max₁ i with (h | rfl | h)
+        · exact Or.inl h
+        · refine' False.elim (H₁ ⟨rfl, add_left_cancel H₄⟩)
+        · apply Or.inr
+          have := add_lt_add_right h j
+          rw [H₄] at this 
+          exact lt_of_add_lt_add_left this
+      cases max_lt
+      · -- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
+        have not_mem : i ∉ set₁ := fun h =>
+          lt_irrefl _ ((max'_lt_iff set₁ (Nonempty x rid₁)).mp max_lt i h)
+        rw [set₁_eq] at not_mem 
+        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
+        exact Ideal.mul_mem_right _ I (not_mem H₂)
+      · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
+        have not_mem : j ∉ set₂ := fun h =>
+          lt_irrefl _ ((max'_lt_iff set₂ (Nonempty y rid₂)).mp max_lt j h)
+        rw [set₂_eq] at not_mem 
+        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
+        exact Ideal.mul_mem_left I _ (not_mem H₃)
+    have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I :=
+      by
+      have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I :=
+        by
+        rw [mem_filter] at mem_max₁ mem_max₂ 
+        exact ⟨mem_max₁.2, mem_max₂.2⟩
+      intro rid
+      cases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
+      · apply neither_mem.1 h
+      · apply neither_mem.2 h
+    exact not_mem_I mem_I⟩
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
 -/
 
 #print Ideal.IsHomogeneous.isPrime_iff /-
-/-
-  The idea of the proof is the following :
-  since `x * y ∈ I` and `I` homogeneous, then `proj i (x * y) ∈ I` for any `i : ι`.
-  Then consider two sets `{i ∈ x.support | xᵢ ∉ I}` and `{j ∈ y.support | yⱼ ∉ J}`;
-  let `max₁, max₂` be the maximum of the two sets, then `proj (max₁ + max₂) (x * y) ∈ I`.
-  Then, `proj max₁ x ∉ I` and `proj max₂ j ∉ I`
-  but `proj i x ∈ I` for all `max₁ < i` and `proj j y ∈ I` for all `max₂ < j`.
-  `  proj (max₁ + max₂) (x * y)`
-  `= ∑ {(i, j) ∈ supports | i + j = max₁ + max₂}, xᵢ * yⱼ`
-  `= proj max₁ x * proj max₂ y`
-  `  + ∑ {(i, j) ∈ supports \ {(max₁, max₂)} | i + j = max₁ + max₂}, xᵢ * yⱼ`.
-  This is a contradiction, because both `proj (max₁ + max₂) (x * y) ∈ I` and the sum on the
-  right hand side is in `I` however `proj max₁ x * proj max₂ y` is not in `I`.
-  -/
--- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
--- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     I.IsPrime ↔
       I ≠ ⊤ ∧
Diff
@@ -62,97 +62,27 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
     intro x y hxy
     by_contra rid
     obtain ⟨rid₁, rid₂⟩ := not_or_distrib.mp rid
-    classical
-    /-
-      The idea of the proof is the following :
-      since `x * y ∈ I` and `I` homogeneous, then `proj i (x * y) ∈ I` for any `i : ι`.
-      Then consider two sets `{i ∈ x.support | xᵢ ∉ I}` and `{j ∈ y.support | yⱼ ∉ J}`;
-      let `max₁, max₂` be the maximum of the two sets, then `proj (max₁ + max₂) (x * y) ∈ I`.
-      Then, `proj max₁ x ∉ I` and `proj max₂ j ∉ I`
-      but `proj i x ∈ I` for all `max₁ < i` and `proj j y ∈ I` for all `max₂ < j`.
-      `  proj (max₁ + max₂) (x * y)`
-      `= ∑ {(i, j) ∈ supports | i + j = max₁ + max₂}, xᵢ * yⱼ`
-      `= proj max₁ x * proj max₂ y`
-      `  + ∑ {(i, j) ∈ supports \ {(max₁, max₂)} | i + j = max₁ + max₂}, xᵢ * yⱼ`.
-      This is a contradiction, because both `proj (max₁ + max₂) (x * y) ∈ I` and the sum on the
-      right hand side is in `I` however `proj max₁ x * proj max₂ y` is not in `I`.
-      -/
-    set set₁ := (decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I with set₁_eq
-    set set₂ := (decompose 𝒜 y).support.filterₓ fun i => proj 𝒜 i y ∉ I with set₂_eq
-    have nonempty :
-      ∀ x : A, x ∉ I → ((decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I).Nonempty :=
-      by
-      intro x hx
-      rw [filter_nonempty_iff]
-      contrapose! hx
-      simp_rw [proj_apply] at hx 
-      rw [← sum_support_decompose 𝒜 x]
-      exact Ideal.sum_mem _ hx
-    set max₁ := set₁.max' (Nonempty x rid₁) with max₁_eq
-    set max₂ := set₂.max' (Nonempty y rid₂) with max₂_eq
-    have mem_max₁ : max₁ ∈ set₁ := max'_mem set₁ (Nonempty x rid₁)
-    have mem_max₂ : max₂ ∈ set₂ := max'_mem set₂ (Nonempty y rid₂)
-    replace hxy : proj 𝒜 (max₁ + max₂) (x * y) ∈ I := hI _ hxy
-    have mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∈ I :=
-      by
-      set antidiag :=
-        ((decompose 𝒜 x).support ×ˢ (decompose 𝒜 y).support).filterₓ fun z : ι × ι =>
-          z.1 + z.2 = max₁ + max₂ with
-        ha
-      have mem_antidiag : (max₁, max₂) ∈ antidiag :=
-        by
-        simp only [add_sum_erase, mem_filter, mem_product]
-        exact ⟨⟨mem_of_mem_filter _ mem_max₁, mem_of_mem_filter _ mem_max₂⟩, rfl⟩
-      have eq_add_sum :=
-        calc
-          proj 𝒜 (max₁ + max₂) (x * y) = ∑ ij in antidiag, proj 𝒜 ij.1 x * proj 𝒜 ij.2 y := by
-            simp_rw [ha, proj_apply, DirectSum.decompose_mul, DirectSum.coe_mul_apply 𝒜]
-          _ =
-              proj 𝒜 max₁ x * proj 𝒜 max₂ y +
-                ∑ ij in antidiag.erase (max₁, max₂), proj 𝒜 ij.1 x * proj 𝒜 ij.2 y :=
-            (add_sum_erase _ _ mem_antidiag).symm
-      rw [eq_sub_of_add_eq eq_add_sum.symm]
-      refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
-      rcases z with ⟨i, j⟩
-      simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H 
-      rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
-      have max_lt : max₁ < i ∨ max₂ < j :=
-        by
-        rcases lt_trichotomy max₁ i with (h | rfl | h)
-        · exact Or.inl h
-        · refine' False.elim (H₁ ⟨rfl, add_left_cancel H₄⟩)
-        · apply Or.inr
-          have := add_lt_add_right h j
-          rw [H₄] at this 
-          exact lt_of_add_lt_add_left this
-      cases max_lt
-      · -- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
-        have not_mem : i ∉ set₁ := fun h =>
-          lt_irrefl _ ((max'_lt_iff set₁ (Nonempty x rid₁)).mp max_lt i h)
-        rw [set₁_eq] at not_mem 
-        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
-        exact Ideal.mul_mem_right _ I (not_mem H₂)
-      · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
-        have not_mem : j ∉ set₂ := fun h =>
-          lt_irrefl _ ((max'_lt_iff set₂ (Nonempty y rid₂)).mp max_lt j h)
-        rw [set₂_eq] at not_mem 
-        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
-        exact Ideal.mul_mem_left I _ (not_mem H₃)
-    have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I :=
-      by
-      have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I :=
-        by
-        rw [mem_filter] at mem_max₁ mem_max₂ 
-        exact ⟨mem_max₁.2, mem_max₂.2⟩
-      intro rid
-      cases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
-      · apply neither_mem.1 h
-      · apply neither_mem.2 h
-    exact not_mem_I mem_I⟩
+    classical⟩
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
 -/
 
 #print Ideal.IsHomogeneous.isPrime_iff /-
+/-
+  The idea of the proof is the following :
+  since `x * y ∈ I` and `I` homogeneous, then `proj i (x * y) ∈ I` for any `i : ι`.
+  Then consider two sets `{i ∈ x.support | xᵢ ∉ I}` and `{j ∈ y.support | yⱼ ∉ J}`;
+  let `max₁, max₂` be the maximum of the two sets, then `proj (max₁ + max₂) (x * y) ∈ I`.
+  Then, `proj max₁ x ∉ I` and `proj max₂ j ∉ I`
+  but `proj i x ∈ I` for all `max₁ < i` and `proj j y ∈ I` for all `max₂ < j`.
+  `  proj (max₁ + max₂) (x * y)`
+  `= ∑ {(i, j) ∈ supports | i + j = max₁ + max₂}, xᵢ * yⱼ`
+  `= proj max₁ x * proj max₂ y`
+  `  + ∑ {(i, j) ∈ supports \ {(max₁, max₂)} | i + j = max₁ + max₂}, xᵢ * yⱼ`.
+  This is a contradiction, because both `proj (max₁ + max₂) (x * y) ∈ I` and the sum on the
+  right hand side is in `I` however `proj max₁ x * proj max₂ y` is not in `I`.
+  -/
+-- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
+-- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     I.IsPrime ↔
       I ≠ ⊤ ∧
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 Jujian Zhang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jujian Zhang, Eric Wieser
 -/
-import Mathbin.RingTheory.GradedAlgebra.HomogeneousIdeal
+import RingTheory.GradedAlgebra.HomogeneousIdeal
 
 #align_import ring_theory.graded_algebra.radical from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Jujian Zhang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jujian Zhang, Eric Wieser
-
-! This file was ported from Lean 3 source module ring_theory.graded_algebra.radical
-! leanprover-community/mathlib commit 38df578a6450a8c5142b3727e3ae894c2300cae0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.RingTheory.GradedAlgebra.HomogeneousIdeal
 
+#align_import ring_theory.graded_algebra.radical from "leanprover-community/mathlib"@"38df578a6450a8c5142b3727e3ae894c2300cae0"
+
 /-!
 
 This file contains a proof that the radical of any homogeneous ideal is a homogeneous ideal
Diff
@@ -54,9 +54,8 @@ variable [LinearOrderedCancelAddCommMonoid ι]
 
 variable [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} [GradedRing 𝒜]
 
-include A
-
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem /-
 theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI : I.Homogeneous 𝒜)
     (I_ne_top : I ≠ ⊤)
     (homogeneous_mem_or_mem :
@@ -154,7 +153,9 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
       · apply neither_mem.2 h
     exact not_mem_I mem_I⟩
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
+-/
 
+#print Ideal.IsHomogeneous.isPrime_iff /-
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     I.IsPrime ↔
       I ≠ ⊤ ∧
@@ -164,7 +165,9 @@ theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     fun ⟨I_ne_top, homogeneous_mem_or_mem⟩ =>
     h.isPrime_of_homogeneous_mem_or_mem I_ne_top @homogeneous_mem_or_mem⟩
 #align ideal.is_homogeneous.is_prime_iff Ideal.IsHomogeneous.isPrime_iff
+-/
 
+#print Ideal.IsPrime.homogeneousCore /-
 theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
     (I.homogeneousCore 𝒜).toIdeal.IsPrime :=
   by
@@ -176,7 +179,9 @@ theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
   · exact Ideal.mem_homogeneousCore_of_homogeneous_of_mem hx
   · exact Ideal.mem_homogeneousCore_of_homogeneous_of_mem hy
 #align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCore
+-/
 
+#print Ideal.IsHomogeneous.radical_eq /-
 theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     I.radical = sInf {J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime} :=
   by
@@ -189,19 +194,26 @@ theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     refine' ⟨HomogeneousIdeal.isHomogeneous _, _, HJ₂.homogeneous_core⟩
     refine' hI.to_ideal_homogeneous_core_eq_self.symm.trans_le (Ideal.homogeneousCore_mono _ HJ₁)
 #align ideal.is_homogeneous.radical_eq Ideal.IsHomogeneous.radical_eq
+-/
 
+#print Ideal.IsHomogeneous.radical /-
 theorem Ideal.IsHomogeneous.radical {I : Ideal A} (h : I.Homogeneous 𝒜) : I.radical.Homogeneous 𝒜 :=
   by rw [h.radical_eq]; exact Ideal.IsHomogeneous.sInf fun _ => And.left
 #align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radical
+-/
 
+#print HomogeneousIdeal.radical /-
 /-- The radical of a homogenous ideal, as another homogenous ideal. -/
 def HomogeneousIdeal.radical (I : HomogeneousIdeal 𝒜) : HomogeneousIdeal 𝒜 :=
   ⟨I.toIdeal.radical, I.Homogeneous.radical⟩
 #align homogeneous_ideal.radical HomogeneousIdeal.radical
+-/
 
+#print HomogeneousIdeal.coe_radical /-
 @[simp]
 theorem HomogeneousIdeal.coe_radical (I : HomogeneousIdeal 𝒜) :
     I.radical.toIdeal = I.toIdeal.radical :=
   rfl
 #align homogeneous_ideal.coe_radical HomogeneousIdeal.coe_radical
+-/
 
Diff
@@ -115,7 +115,6 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
               proj 𝒜 max₁ x * proj 𝒜 max₂ y +
                 ∑ ij in antidiag.erase (max₁, max₂), proj 𝒜 ij.1 x * proj 𝒜 ij.2 y :=
             (add_sum_erase _ _ mem_antidiag).symm
-          
       rw [eq_sub_of_add_eq eq_add_sum.symm]
       refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
       rcases z with ⟨i, j⟩
Diff
@@ -67,93 +67,93 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
     by_contra rid
     obtain ⟨rid₁, rid₂⟩ := not_or_distrib.mp rid
     classical
-      /-
-        The idea of the proof is the following :
-        since `x * y ∈ I` and `I` homogeneous, then `proj i (x * y) ∈ I` for any `i : ι`.
-        Then consider two sets `{i ∈ x.support | xᵢ ∉ I}` and `{j ∈ y.support | yⱼ ∉ J}`;
-        let `max₁, max₂` be the maximum of the two sets, then `proj (max₁ + max₂) (x * y) ∈ I`.
-        Then, `proj max₁ x ∉ I` and `proj max₂ j ∉ I`
-        but `proj i x ∈ I` for all `max₁ < i` and `proj j y ∈ I` for all `max₂ < j`.
-        `  proj (max₁ + max₂) (x * y)`
-        `= ∑ {(i, j) ∈ supports | i + j = max₁ + max₂}, xᵢ * yⱼ`
-        `= proj max₁ x * proj max₂ y`
-        `  + ∑ {(i, j) ∈ supports \ {(max₁, max₂)} | i + j = max₁ + max₂}, xᵢ * yⱼ`.
-        This is a contradiction, because both `proj (max₁ + max₂) (x * y) ∈ I` and the sum on the
-        right hand side is in `I` however `proj max₁ x * proj max₂ y` is not in `I`.
-        -/
-      set set₁ := (decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I with set₁_eq
-      set set₂ := (decompose 𝒜 y).support.filterₓ fun i => proj 𝒜 i y ∉ I with set₂_eq
-      have nonempty :
-        ∀ x : A, x ∉ I → ((decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I).Nonempty :=
+    /-
+      The idea of the proof is the following :
+      since `x * y ∈ I` and `I` homogeneous, then `proj i (x * y) ∈ I` for any `i : ι`.
+      Then consider two sets `{i ∈ x.support | xᵢ ∉ I}` and `{j ∈ y.support | yⱼ ∉ J}`;
+      let `max₁, max₂` be the maximum of the two sets, then `proj (max₁ + max₂) (x * y) ∈ I`.
+      Then, `proj max₁ x ∉ I` and `proj max₂ j ∉ I`
+      but `proj i x ∈ I` for all `max₁ < i` and `proj j y ∈ I` for all `max₂ < j`.
+      `  proj (max₁ + max₂) (x * y)`
+      `= ∑ {(i, j) ∈ supports | i + j = max₁ + max₂}, xᵢ * yⱼ`
+      `= proj max₁ x * proj max₂ y`
+      `  + ∑ {(i, j) ∈ supports \ {(max₁, max₂)} | i + j = max₁ + max₂}, xᵢ * yⱼ`.
+      This is a contradiction, because both `proj (max₁ + max₂) (x * y) ∈ I` and the sum on the
+      right hand side is in `I` however `proj max₁ x * proj max₂ y` is not in `I`.
+      -/
+    set set₁ := (decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I with set₁_eq
+    set set₂ := (decompose 𝒜 y).support.filterₓ fun i => proj 𝒜 i y ∉ I with set₂_eq
+    have nonempty :
+      ∀ x : A, x ∉ I → ((decompose 𝒜 x).support.filterₓ fun i => proj 𝒜 i x ∉ I).Nonempty :=
+      by
+      intro x hx
+      rw [filter_nonempty_iff]
+      contrapose! hx
+      simp_rw [proj_apply] at hx 
+      rw [← sum_support_decompose 𝒜 x]
+      exact Ideal.sum_mem _ hx
+    set max₁ := set₁.max' (Nonempty x rid₁) with max₁_eq
+    set max₂ := set₂.max' (Nonempty y rid₂) with max₂_eq
+    have mem_max₁ : max₁ ∈ set₁ := max'_mem set₁ (Nonempty x rid₁)
+    have mem_max₂ : max₂ ∈ set₂ := max'_mem set₂ (Nonempty y rid₂)
+    replace hxy : proj 𝒜 (max₁ + max₂) (x * y) ∈ I := hI _ hxy
+    have mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∈ I :=
+      by
+      set antidiag :=
+        ((decompose 𝒜 x).support ×ˢ (decompose 𝒜 y).support).filterₓ fun z : ι × ι =>
+          z.1 + z.2 = max₁ + max₂ with
+        ha
+      have mem_antidiag : (max₁, max₂) ∈ antidiag :=
         by
-        intro x hx
-        rw [filter_nonempty_iff]
-        contrapose! hx
-        simp_rw [proj_apply] at hx 
-        rw [← sum_support_decompose 𝒜 x]
-        exact Ideal.sum_mem _ hx
-      set max₁ := set₁.max' (Nonempty x rid₁) with max₁_eq
-      set max₂ := set₂.max' (Nonempty y rid₂) with max₂_eq
-      have mem_max₁ : max₁ ∈ set₁ := max'_mem set₁ (Nonempty x rid₁)
-      have mem_max₂ : max₂ ∈ set₂ := max'_mem set₂ (Nonempty y rid₂)
-      replace hxy : proj 𝒜 (max₁ + max₂) (x * y) ∈ I := hI _ hxy
-      have mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∈ I :=
+        simp only [add_sum_erase, mem_filter, mem_product]
+        exact ⟨⟨mem_of_mem_filter _ mem_max₁, mem_of_mem_filter _ mem_max₂⟩, rfl⟩
+      have eq_add_sum :=
+        calc
+          proj 𝒜 (max₁ + max₂) (x * y) = ∑ ij in antidiag, proj 𝒜 ij.1 x * proj 𝒜 ij.2 y := by
+            simp_rw [ha, proj_apply, DirectSum.decompose_mul, DirectSum.coe_mul_apply 𝒜]
+          _ =
+              proj 𝒜 max₁ x * proj 𝒜 max₂ y +
+                ∑ ij in antidiag.erase (max₁, max₂), proj 𝒜 ij.1 x * proj 𝒜 ij.2 y :=
+            (add_sum_erase _ _ mem_antidiag).symm
+          
+      rw [eq_sub_of_add_eq eq_add_sum.symm]
+      refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
+      rcases z with ⟨i, j⟩
+      simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H 
+      rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
+      have max_lt : max₁ < i ∨ max₂ < j :=
         by
-        set antidiag :=
-          ((decompose 𝒜 x).support ×ˢ (decompose 𝒜 y).support).filterₓ fun z : ι × ι =>
-            z.1 + z.2 = max₁ + max₂ with
-          ha
-        have mem_antidiag : (max₁, max₂) ∈ antidiag :=
-          by
-          simp only [add_sum_erase, mem_filter, mem_product]
-          exact ⟨⟨mem_of_mem_filter _ mem_max₁, mem_of_mem_filter _ mem_max₂⟩, rfl⟩
-        have eq_add_sum :=
-          calc
-            proj 𝒜 (max₁ + max₂) (x * y) = ∑ ij in antidiag, proj 𝒜 ij.1 x * proj 𝒜 ij.2 y := by
-              simp_rw [ha, proj_apply, DirectSum.decompose_mul, DirectSum.coe_mul_apply 𝒜]
-            _ =
-                proj 𝒜 max₁ x * proj 𝒜 max₂ y +
-                  ∑ ij in antidiag.erase (max₁, max₂), proj 𝒜 ij.1 x * proj 𝒜 ij.2 y :=
-              (add_sum_erase _ _ mem_antidiag).symm
-            
-        rw [eq_sub_of_add_eq eq_add_sum.symm]
-        refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
-        rcases z with ⟨i, j⟩
-        simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H 
-        rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
-        have max_lt : max₁ < i ∨ max₂ < j :=
-          by
-          rcases lt_trichotomy max₁ i with (h | rfl | h)
-          · exact Or.inl h
-          · refine' False.elim (H₁ ⟨rfl, add_left_cancel H₄⟩)
-          · apply Or.inr
-            have := add_lt_add_right h j
-            rw [H₄] at this 
-            exact lt_of_add_lt_add_left this
-        cases max_lt
-        · -- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
-          have not_mem : i ∉ set₁ := fun h =>
-            lt_irrefl _ ((max'_lt_iff set₁ (Nonempty x rid₁)).mp max_lt i h)
-          rw [set₁_eq] at not_mem 
-          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
-          exact Ideal.mul_mem_right _ I (not_mem H₂)
-        · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
-          have not_mem : j ∉ set₂ := fun h =>
-            lt_irrefl _ ((max'_lt_iff set₂ (Nonempty y rid₂)).mp max_lt j h)
-          rw [set₂_eq] at not_mem 
-          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
-          exact Ideal.mul_mem_left I _ (not_mem H₃)
-      have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I :=
+        rcases lt_trichotomy max₁ i with (h | rfl | h)
+        · exact Or.inl h
+        · refine' False.elim (H₁ ⟨rfl, add_left_cancel H₄⟩)
+        · apply Or.inr
+          have := add_lt_add_right h j
+          rw [H₄] at this 
+          exact lt_of_add_lt_add_left this
+      cases max_lt
+      · -- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
+        have not_mem : i ∉ set₁ := fun h =>
+          lt_irrefl _ ((max'_lt_iff set₁ (Nonempty x rid₁)).mp max_lt i h)
+        rw [set₁_eq] at not_mem 
+        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
+        exact Ideal.mul_mem_right _ I (not_mem H₂)
+      · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
+        have not_mem : j ∉ set₂ := fun h =>
+          lt_irrefl _ ((max'_lt_iff set₂ (Nonempty y rid₂)).mp max_lt j h)
+        rw [set₂_eq] at not_mem 
+        simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
+        exact Ideal.mul_mem_left I _ (not_mem H₃)
+    have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I :=
+      by
+      have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I :=
         by
-        have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I :=
-          by
-          rw [mem_filter] at mem_max₁ mem_max₂ 
-          exact ⟨mem_max₁.2, mem_max₂.2⟩
-        intro rid
-        cases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
-        · apply neither_mem.1 h
-        · apply neither_mem.2 h
-      exact not_mem_I mem_I⟩
+        rw [mem_filter] at mem_max₁ mem_max₂ 
+        exact ⟨mem_max₁.2, mem_max₂.2⟩
+      intro rid
+      cases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
+      · apply neither_mem.1 h
+      · apply neither_mem.2 h
+    exact not_mem_I mem_I⟩
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
 
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
@@ -179,7 +179,7 @@ theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
 #align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCore
 
 theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
-    I.radical = sInf { J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime } :=
+    I.radical = sInf {J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime} :=
   by
   rw [Ideal.radical_eq_sInf]
   apply le_antisymm
Diff
@@ -89,7 +89,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
         intro x hx
         rw [filter_nonempty_iff]
         contrapose! hx
-        simp_rw [proj_apply] at hx
+        simp_rw [proj_apply] at hx 
         rw [← sum_support_decompose 𝒜 x]
         exact Ideal.sum_mem _ hx
       set max₁ := set₁.max' (Nonempty x rid₁) with max₁_eq
@@ -119,7 +119,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
         rw [eq_sub_of_add_eq eq_add_sum.symm]
         refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
         rcases z with ⟨i, j⟩
-        simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H
+        simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H 
         rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
         have max_lt : max₁ < i ∨ max₂ < j :=
           by
@@ -128,26 +128,26 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
           · refine' False.elim (H₁ ⟨rfl, add_left_cancel H₄⟩)
           · apply Or.inr
             have := add_lt_add_right h j
-            rw [H₄] at this
+            rw [H₄] at this 
             exact lt_of_add_lt_add_left this
         cases max_lt
         · -- in this case `max₁ < i`, then `xᵢ ∈ I`; for otherwise `i ∈ set₁` then `i ≤ max₁`.
           have not_mem : i ∉ set₁ := fun h =>
             lt_irrefl _ ((max'_lt_iff set₁ (Nonempty x rid₁)).mp max_lt i h)
-          rw [set₁_eq] at not_mem
-          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
+          rw [set₁_eq] at not_mem 
+          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
           exact Ideal.mul_mem_right _ I (not_mem H₂)
         · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
           have not_mem : j ∉ set₂ := fun h =>
             lt_irrefl _ ((max'_lt_iff set₂ (Nonempty y rid₂)).mp max_lt j h)
-          rw [set₂_eq] at not_mem
-          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
+          rw [set₂_eq] at not_mem 
+          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem 
           exact Ideal.mul_mem_left I _ (not_mem H₃)
       have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I :=
         by
         have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I :=
           by
-          rw [mem_filter] at mem_max₁ mem_max₂
+          rw [mem_filter] at mem_max₁ mem_max₂ 
           exact ⟨mem_max₁.2, mem_max₂.2⟩
         intro rid
         cases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
Diff
@@ -44,7 +44,7 @@ homogeneous, radical
 
 open GradedRing DirectSum SetLike Finset
 
-open BigOperators
+open scoped BigOperators
 
 variable {ι σ A : Type _}
 
Diff
@@ -56,9 +56,6 @@ variable [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} [GradedRing
 
 include A
 
-/- warning: ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem -> Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_memₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI : I.Homogeneous 𝒜)
     (I_ne_top : I ≠ ⊤)
@@ -159,9 +156,6 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
       exact not_mem_I mem_I⟩
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
 
-/- warning: ideal.is_homogeneous.is_prime_iff -> Ideal.IsHomogeneous.isPrime_iff is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.is_prime_iff Ideal.IsHomogeneous.isPrime_iffₓ'. -/
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     I.IsPrime ↔
       I ≠ ⊤ ∧
@@ -172,12 +166,6 @@ theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     h.isPrime_of_homogeneous_mem_or_mem I_ne_top @homogeneous_mem_or_mem⟩
 #align ideal.is_homogeneous.is_prime_iff Ideal.IsHomogeneous.isPrime_iff
 
-/- warning: ideal.is_prime.homogeneous_core -> Ideal.IsPrime.homogeneousCore is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) I) -> (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (HomogeneousIdeal.toIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 (Ideal.homogeneousCore.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I)))
-but is expected to have type
-  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) I) -> (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (HomogeneousIdeal.toIdeal.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 (Ideal.homogeneousCore.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I)))
-Case conversion may be inaccurate. Consider using '#align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCoreₓ'. -/
 theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
     (I.homogeneousCore 𝒜).toIdeal.IsPrime :=
   by
@@ -190,9 +178,6 @@ theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
   · exact Ideal.mem_homogeneousCore_of_homogeneous_of_mem hy
 #align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCore
 
-/- warning: ideal.is_homogeneous.radical_eq -> Ideal.IsHomogeneous.radical_eq is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.radical_eq Ideal.IsHomogeneous.radical_eqₓ'. -/
 theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     I.radical = sInf { J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime } :=
   by
@@ -206,33 +191,15 @@ theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     refine' hI.to_ideal_homogeneous_core_eq_self.symm.trans_le (Ideal.homogeneousCore_mono _ HJ₁)
 #align ideal.is_homogeneous.radical_eq Ideal.IsHomogeneous.radical_eq
 
-/- warning: ideal.is_homogeneous.radical -> Ideal.IsHomogeneous.radical is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I))
-but is expected to have type
-  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I))
-Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radicalₓ'. -/
 theorem Ideal.IsHomogeneous.radical {I : Ideal A} (h : I.Homogeneous 𝒜) : I.radical.Homogeneous 𝒜 :=
   by rw [h.radical_eq]; exact Ideal.IsHomogeneous.sInf fun _ => And.left
 #align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radical
 
-/- warning: homogeneous_ideal.radical -> HomogeneousIdeal.radical is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜], (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5) -> (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5)
-but is expected to have type
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜], (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5) -> (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5)
-Case conversion may be inaccurate. Consider using '#align homogeneous_ideal.radical HomogeneousIdeal.radicalₓ'. -/
 /-- The radical of a homogenous ideal, as another homogenous ideal. -/
 def HomogeneousIdeal.radical (I : HomogeneousIdeal 𝒜) : HomogeneousIdeal 𝒜 :=
   ⟨I.toIdeal.radical, I.Homogeneous.radical⟩
 #align homogeneous_ideal.radical HomogeneousIdeal.radical
 
-/- warning: homogeneous_ideal.coe_radical -> HomogeneousIdeal.coe_radical is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] (I : HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5), Eq.{succ u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (HomogeneousIdeal.toIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 (HomogeneousIdeal.radical.{u1, u2, u3} ι σ A _inst_1 _inst_2 _inst_3 _inst_4 𝒜 _inst_5 I)) (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) (HomogeneousIdeal.toIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I))
-but is expected to have type
-  forall {ι : Type.{u3}} {σ : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u1} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} ι] [_inst_3 : SetLike.{u2, u1} σ A] [_inst_4 : AddSubmonoidClass.{u2, u1} σ A (AddMonoid.toAddZeroClass.{u1} A (AddMonoidWithOne.toAddMonoid.{u1} A (AddGroupWithOne.toAddMonoidWithOne.{u1} A (Ring.toAddGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u3, u1, u2} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜] (I : HomogeneousIdeal.{u3, u2, u1} ι σ A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) _inst_5), Eq.{succ u1} (Ideal.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))) (HomogeneousIdeal.toIdeal.{u3, u2, u1} ι σ A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) _inst_5 (HomogeneousIdeal.radical.{u3, u2, u1} ι σ A _inst_1 _inst_2 _inst_3 _inst_4 𝒜 _inst_5 I)) (Ideal.radical.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1) (HomogeneousIdeal.toIdeal.{u3, u2, u1} ι σ A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) _inst_5 I))
-Case conversion may be inaccurate. Consider using '#align homogeneous_ideal.coe_radical HomogeneousIdeal.coe_radicalₓ'. -/
 @[simp]
 theorem HomogeneousIdeal.coe_radical (I : HomogeneousIdeal 𝒜) :
     I.radical.toIdeal = I.toIdeal.radical :=
Diff
@@ -213,9 +213,7 @@ but is expected to have type
   forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I))
 Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radicalₓ'. -/
 theorem Ideal.IsHomogeneous.radical {I : Ideal A} (h : I.Homogeneous 𝒜) : I.radical.Homogeneous 𝒜 :=
-  by
-  rw [h.radical_eq]
-  exact Ideal.IsHomogeneous.sInf fun _ => And.left
+  by rw [h.radical_eq]; exact Ideal.IsHomogeneous.sInf fun _ => And.left
 #align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radical
 
 /- warning: homogeneous_ideal.radical -> HomogeneousIdeal.radical is a dubious translation:
Diff
@@ -57,10 +57,7 @@ variable [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} [GradedRing
 include A
 
 /- warning: ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem -> Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Ne.{succ u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Submodule.hasTop.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) -> (forall {x : A} {y : A}, (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 y) -> (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (Ring.toDistrib.{u3} A (CommRing.toRing.{u3} A _inst_1)))) x y) I) -> (Or (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x I) (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) y I))) -> (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) I)
-but is expected to have type
-  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Ne.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.instTopSubmodule.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))))) -> (forall {x : A} {y : A}, (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 y) -> (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (NonUnitalNonAssocRing.toMul.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x y) I) -> (Or (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) x I) (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) y I))) -> (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) I)
+<too large>
 Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_memₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI : I.Homogeneous 𝒜)
@@ -163,10 +160,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
 
 /- warning: ideal.is_homogeneous.is_prime_iff -> Ideal.IsHomogeneous.isPrime_iff is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Iff (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) I) (And (Ne.{succ u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Submodule.hasTop.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) (forall {x : A} {y : A}, (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 y) -> (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (Ring.toDistrib.{u3} A (CommRing.toRing.{u3} A _inst_1)))) x y) I) -> (Or (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x I) (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) y I)))))
-but is expected to have type
-  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Iff (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) I) (And (Ne.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.instTopSubmodule.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))))) (forall {x : A} {y : A}, (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 y) -> (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (NonUnitalNonAssocRing.toMul.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x y) I) -> (Or (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) x I) (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) y I)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.is_prime_iff Ideal.IsHomogeneous.isPrime_iffₓ'. -/
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     I.IsPrime ↔
@@ -197,10 +191,7 @@ theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
 #align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCore
 
 /- warning: ideal.is_homogeneous.radical_eq -> Ideal.IsHomogeneous.radical_eq is a dubious translation:
-lean 3 declaration is
-  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Eq.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I) (InfSet.sInf.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.hasInf.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))) (setOf.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (fun (J : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) => And (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 J) (And (LE.le.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Preorder.toHasLe.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (PartialOrder.toPreorder.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.partialOrder.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))))) I J) (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) J))))))
-but is expected to have type
-  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Eq.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I) (InfSet.sInf.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Submodule.instInfSetSubmodule.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)))) (setOf.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (fun (J : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) => And (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 J) (And (LE.le.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Preorder.toLE.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (PartialOrder.toPreorder.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.completeLattice.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))))))) I J) (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) J))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.radical_eq Ideal.IsHomogeneous.radical_eqₓ'. -/
 theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     I.radical = sInf { J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime } :=
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jujian Zhang, Eric Wieser
 
 ! This file was ported from Lean 3 source module ring_theory.graded_algebra.radical
-! leanprover-community/mathlib commit f1944b30c97c5eb626e498307dec8b022a05bd0a
+! leanprover-community/mathlib commit 38df578a6450a8c5142b3727e3ae894c2300cae0
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -16,6 +16,9 @@ This file contains a proof that the radical of any homogeneous ideal is a homoge
 
 ## Main statements
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 * `ideal.is_homogeneous.is_prime_iff`: for any `I : ideal A`, if `I` is homogeneous, then
   `I` is prime if and only if `I` is homogeneously prime, i.e. `I ≠ ⊤` and if `x, y` are
   homogeneous elements such that `x * y ∈ I`, then at least one of `x,y` is in `I`.
Diff
@@ -53,6 +53,12 @@ variable [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} [GradedRing
 
 include A
 
+/- warning: ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem -> Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Ne.{succ u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Submodule.hasTop.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) -> (forall {x : A} {y : A}, (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 y) -> (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (Ring.toDistrib.{u3} A (CommRing.toRing.{u3} A _inst_1)))) x y) I) -> (Or (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x I) (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) y I))) -> (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) I)
+but is expected to have type
+  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Ne.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.instTopSubmodule.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))))) -> (forall {x : A} {y : A}, (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 y) -> (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (NonUnitalNonAssocRing.toMul.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x y) I) -> (Or (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) x I) (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) y I))) -> (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) I)
+Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_memₓ'. -/
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI : I.Homogeneous 𝒜)
     (I_ne_top : I ≠ ⊤)
@@ -153,6 +159,12 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
       exact not_mem_I mem_I⟩
 #align ideal.is_homogeneous.is_prime_of_homogeneous_mem_or_mem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem
 
+/- warning: ideal.is_homogeneous.is_prime_iff -> Ideal.IsHomogeneous.isPrime_iff is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Iff (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) I) (And (Ne.{succ u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Submodule.hasTop.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) (forall {x : A} {y : A}, (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u1, u3, u2} ι A σ _inst_3 𝒜 y) -> (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (Ring.toDistrib.{u3} A (CommRing.toRing.{u3} A _inst_1)))) x y) I) -> (Or (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x I) (Membership.Mem.{u3, u3} A (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.hasMem.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) y I)))))
+but is expected to have type
+  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Iff (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) I) (And (Ne.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) I (Top.top.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.instTopSubmodule.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))))) (forall {x : A} {y : A}, (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 x) -> (SetLike.Homogeneous.{u2, u3, u1} ι A σ _inst_3 𝒜 y) -> (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (NonUnitalNonAssocRing.toMul.{u3} A (NonAssocRing.toNonUnitalNonAssocRing.{u3} A (Ring.toNonAssocRing.{u3} A (CommRing.toRing.{u3} A _inst_1))))) x y) I) -> (Or (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) x I) (Membership.mem.{u3, u3} A (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (SetLike.instMembership.{u3, u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) y I)))))
+Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.is_prime_iff Ideal.IsHomogeneous.isPrime_iffₓ'. -/
 theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     I.IsPrime ↔
       I ≠ ⊤ ∧
@@ -163,6 +175,12 @@ theorem Ideal.IsHomogeneous.isPrime_iff {I : Ideal A} (h : I.Homogeneous 𝒜) :
     h.isPrime_of_homogeneous_mem_or_mem I_ne_top @homogeneous_mem_or_mem⟩
 #align ideal.is_homogeneous.is_prime_iff Ideal.IsHomogeneous.isPrime_iff
 
+/- warning: ideal.is_prime.homogeneous_core -> Ideal.IsPrime.homogeneousCore is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) I) -> (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (HomogeneousIdeal.toIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 (Ideal.homogeneousCore.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I)))
+but is expected to have type
+  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) I) -> (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (HomogeneousIdeal.toIdeal.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 (Ideal.homogeneousCore.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I)))
+Case conversion may be inaccurate. Consider using '#align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCoreₓ'. -/
 theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
     (I.homogeneousCore 𝒜).toIdeal.IsPrime :=
   by
@@ -175,6 +193,12 @@ theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
   · exact Ideal.mem_homogeneousCore_of_homogeneous_of_mem hy
 #align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCore
 
+/- warning: ideal.is_homogeneous.radical_eq -> Ideal.IsHomogeneous.radical_eq is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Eq.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I) (InfSet.sInf.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.hasInf.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))) (setOf.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (fun (J : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) => And (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 J) (And (LE.le.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Preorder.toHasLe.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (PartialOrder.toPreorder.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (SetLike.partialOrder.{u3, u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) A (Submodule.setLike.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))))) I J) (Ideal.IsPrime.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) J))))))
+but is expected to have type
+  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Eq.{succ u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I) (InfSet.sInf.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (Submodule.instInfSetSubmodule.{u3, u3} A A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)))) (setOf.{u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (fun (J : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) => And (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 J) (And (LE.le.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Preorder.toLE.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (PartialOrder.toPreorder.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (OmegaCompletePartialOrder.toPartialOrder.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (CompleteLattice.instOmegaCompletePartialOrder.{u3} (Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))) (Submodule.completeLattice.{u3, u3} A A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))))) (Semiring.toModule.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)))))))) I J) (Ideal.IsPrime.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) J))))))
+Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.radical_eq Ideal.IsHomogeneous.radical_eqₓ'. -/
 theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     I.radical = sInf { J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime } :=
   by
@@ -188,17 +212,35 @@ theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
     refine' hI.to_ideal_homogeneous_core_eq_self.symm.trans_le (Ideal.homogeneousCore_mono _ HJ₁)
 #align ideal.is_homogeneous.radical_eq Ideal.IsHomogeneous.radical_eq
 
+/- warning: ideal.is_homogeneous.radical -> Ideal.IsHomogeneous.radical is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I) -> (Ideal.IsHomogeneous.{u1, u2, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I))
+but is expected to have type
+  forall {ι : Type.{u2}} {σ : Type.{u1}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u2} ι] [_inst_3 : SetLike.{u1, u3} σ A] [_inst_4 : AddSubmonoidClass.{u1, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u2, u3, u1} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] {I : Ideal.{u3} A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1))}, (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 I) -> (Ideal.IsHomogeneous.{u2, u1, u3} ι σ A (CommSemiring.toSemiring.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u2} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u2} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u2} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u2} ι (AddCancelMonoid.toAddRightCancelMonoid.{u2} ι (AddCancelCommMonoid.toAddCancelMonoid.{u2} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u2} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u2} ι _inst_2))))) _inst_5 (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) I))
+Case conversion may be inaccurate. Consider using '#align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radicalₓ'. -/
 theorem Ideal.IsHomogeneous.radical {I : Ideal A} (h : I.Homogeneous 𝒜) : I.radical.Homogeneous 𝒜 :=
   by
   rw [h.radical_eq]
   exact Ideal.IsHomogeneous.sInf fun _ => And.left
 #align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radical
 
+/- warning: homogeneous_ideal.radical -> HomogeneousIdeal.radical is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜], (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5) -> (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5)
+but is expected to have type
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (Ring.toAddGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜], (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5) -> (HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5)
+Case conversion may be inaccurate. Consider using '#align homogeneous_ideal.radical HomogeneousIdeal.radicalₓ'. -/
 /-- The radical of a homogenous ideal, as another homogenous ideal. -/
 def HomogeneousIdeal.radical (I : HomogeneousIdeal 𝒜) : HomogeneousIdeal 𝒜 :=
   ⟨I.toIdeal.radical, I.Homogeneous.radical⟩
 #align homogeneous_ideal.radical HomogeneousIdeal.radical
 
+/- warning: homogeneous_ideal.coe_radical -> HomogeneousIdeal.coe_radical is a dubious translation:
+lean 3 declaration is
+  forall {ι : Type.{u1}} {σ : Type.{u2}} {A : Type.{u3}} [_inst_1 : CommRing.{u3} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u1} ι] [_inst_3 : SetLike.{u2, u3} σ A] [_inst_4 : AddSubmonoidClass.{u2, u3} σ A (AddMonoid.toAddZeroClass.{u3} A (AddMonoidWithOne.toAddMonoid.{u3} A (AddGroupWithOne.toAddMonoidWithOne.{u3} A (AddCommGroupWithOne.toAddGroupWithOne.{u3} A (Ring.toAddCommGroupWithOne.{u3} A (CommRing.toRing.{u3} A _inst_1)))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u1, u3, u2} ι A σ (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜] (I : HomogeneousIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5), Eq.{succ u3} (Ideal.{u3} A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1))) (HomogeneousIdeal.toIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 (HomogeneousIdeal.radical.{u1, u2, u3} ι σ A _inst_1 _inst_2 _inst_3 _inst_4 𝒜 _inst_5 I)) (Ideal.radical.{u3} A (CommRing.toCommSemiring.{u3} A _inst_1) (HomogeneousIdeal.toIdeal.{u1, u2, u3} ι σ A (Ring.toSemiring.{u3} A (CommRing.toRing.{u3} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => Eq.decidable.{u1} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u1} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u1} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u1} ι (AddCancelMonoid.toAddRightCancelMonoid.{u1} ι (AddCancelCommMonoid.toAddCancelMonoid.{u1} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u1} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} ι _inst_2))))) _inst_5 I))
+but is expected to have type
+  forall {ι : Type.{u3}} {σ : Type.{u2}} {A : Type.{u1}} [_inst_1 : CommRing.{u1} A] [_inst_2 : LinearOrderedCancelAddCommMonoid.{u3} ι] [_inst_3 : SetLike.{u2, u1} σ A] [_inst_4 : AddSubmonoidClass.{u2, u1} σ A (AddMonoid.toAddZeroClass.{u1} A (AddMonoidWithOne.toAddMonoid.{u1} A (AddGroupWithOne.toAddMonoidWithOne.{u1} A (Ring.toAddGroupWithOne.{u1} A (CommRing.toRing.{u1} A _inst_1))))) _inst_3] {𝒜 : ι -> σ} [_inst_5 : GradedRing.{u3, u1, u2} ι A σ (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜] (I : HomogeneousIdeal.{u3, u2, u1} ι σ A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) _inst_5), Eq.{succ u1} (Ideal.{u1} A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1))) (HomogeneousIdeal.toIdeal.{u3, u2, u1} ι σ A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) _inst_5 (HomogeneousIdeal.radical.{u3, u2, u1} ι σ A _inst_1 _inst_2 _inst_3 _inst_4 𝒜 _inst_5 I)) (Ideal.radical.{u1} A (CommRing.toCommSemiring.{u1} A _inst_1) (HomogeneousIdeal.toIdeal.{u3, u2, u1} ι σ A (Ring.toSemiring.{u1} A (CommRing.toRing.{u1} A _inst_1)) _inst_3 _inst_4 𝒜 (fun (a : ι) (b : ι) => instDecidableEq.{u3} ι (LinearOrderedAddCommMonoid.toLinearOrder.{u3} ι (LinearOrderedCancelAddCommMonoid.toLinearOrderedAddCommMonoid.{u3} ι _inst_2)) a b) (AddRightCancelMonoid.toAddMonoid.{u3} ι (AddCancelMonoid.toAddRightCancelMonoid.{u3} ι (AddCancelCommMonoid.toAddCancelMonoid.{u3} ι (OrderedCancelAddCommMonoid.toCancelAddCommMonoid.{u3} ι (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u3} ι _inst_2))))) _inst_5 I))
+Case conversion may be inaccurate. Consider using '#align homogeneous_ideal.coe_radical HomogeneousIdeal.coe_radicalₓ'. -/
 @[simp]
 theorem HomogeneousIdeal.coe_radical (I : HomogeneousIdeal 𝒜) :
     I.radical.toIdeal = I.toIdeal.radical :=
Diff
@@ -191,7 +191,7 @@ theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
 theorem Ideal.IsHomogeneous.radical {I : Ideal A} (h : I.Homogeneous 𝒜) : I.radical.Homogeneous 𝒜 :=
   by
   rw [h.radical_eq]
-  exact Ideal.IsHomogeneous.inf fun _ => And.left
+  exact Ideal.IsHomogeneous.sInf fun _ => And.left
 #align ideal.is_homogeneous.radical Ideal.IsHomogeneous.radical
 
 /-- The radical of a homogenous ideal, as another homogenous ideal. -/
Diff
@@ -176,12 +176,12 @@ theorem Ideal.IsPrime.homogeneousCore {I : Ideal A} (h : I.IsPrime) :
 #align ideal.is_prime.homogeneous_core Ideal.IsPrime.homogeneousCore
 
 theorem Ideal.IsHomogeneous.radical_eq {I : Ideal A} (hI : I.Homogeneous 𝒜) :
-    I.radical = infₛ { J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime } :=
+    I.radical = sInf { J | J.Homogeneous 𝒜 ∧ I ≤ J ∧ J.IsPrime } :=
   by
-  rw [Ideal.radical_eq_infₛ]
+  rw [Ideal.radical_eq_sInf]
   apply le_antisymm
-  · exact infₛ_le_infₛ fun J => And.right
-  · refine' infₛ_le_infₛ_of_forall_exists_le _
+  · exact sInf_le_sInf fun J => And.right
+  · refine' sInf_le_sInf_of_forall_exists_le _
     rintro J ⟨HJ₁, HJ₂⟩
     refine' ⟨(J.homogeneous_core 𝒜).toIdeal, _, J.to_ideal_homogeneous_core_le _⟩
     refine' ⟨HomogeneousIdeal.isHomogeneous _, _, HJ₂.homogeneous_core⟩

Changes in mathlib4

mathlib3
mathlib4
chore: avoid Ne.def (adaptation for nightly-2024-03-27) (#11813)
Diff
@@ -103,7 +103,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
         rw [eq_sub_of_add_eq eq_add_sum.symm]
         refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
         rcases z with ⟨i, j⟩
-        simp only [antidiag, mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H
+        simp only [antidiag, mem_erase, Prod.mk.inj_iff, Ne, mem_filter, mem_product] at H
         rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
         have max_lt : max₁ < i ∨ max₂ < j := by
           rcases lt_trichotomy max₁ i with (h | rfl | h)
@@ -118,13 +118,13 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
           have not_mem : i ∉ set₁ := fun h =>
             lt_irrefl _ ((max'_lt_iff set₁ (nonempty x rid₁)).mp max_lt i h)
           rw [set₁_eq] at not_mem
-          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
+          simp only [not_and, Classical.not_not, Ne, mem_filter] at not_mem
           exact Ideal.mul_mem_right _ I (not_mem H₂)
         · -- in this case `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
           have not_mem : j ∉ set₂ := fun h =>
             lt_irrefl _ ((max'_lt_iff set₂ (nonempty y rid₂)).mp max_lt j h)
           rw [set₂_eq] at not_mem
-          simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
+          simp only [not_and, Classical.not_not, Ne, mem_filter] at not_mem
           exact Ideal.mul_mem_left I _ (not_mem H₃)
       have not_mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∉ I := by
         have neither_mem : proj 𝒜 max₁ x ∉ I ∧ proj 𝒜 max₂ y ∉ I := by
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


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

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

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

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -41,11 +41,8 @@ open GradedRing DirectSum SetLike Finset
 open BigOperators
 
 variable {ι σ A : Type*}
-
 variable [CommRing A]
-
 variable [LinearOrderedCancelAddCommMonoid ι]
-
 variable [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} [GradedRing 𝒜]
 
 -- Porting note: This proof needs a long time to elaborate
chore: more backporting of simp changes from #10995 (#11001)

Co-authored-by: Patrick Massot <patrickmassot@free.fr> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -93,7 +93,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
           ((decompose 𝒜 x).support ×ˢ (decompose 𝒜 y).support).filter (fun z : ι × ι =>
             z.1 + z.2 = max₁ + max₂) with ha
         have mem_antidiag : (max₁, max₂) ∈ antidiag := by
-          simp only [add_sum_erase, mem_filter, mem_product]
+          simp only [antidiag, add_sum_erase, mem_filter, mem_product]
           exact ⟨⟨mem_of_mem_filter _ mem_max₁, mem_of_mem_filter _ mem_max₂⟩, trivial⟩
         have eq_add_sum :=
           calc
@@ -106,7 +106,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
         rw [eq_sub_of_add_eq eq_add_sum.symm]
         refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
         rcases z with ⟨i, j⟩
-        simp only [mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H
+        simp only [antidiag, mem_erase, Prod.mk.inj_iff, Ne.def, mem_filter, mem_product] at H
         rcases H with ⟨H₁, ⟨H₂, H₃⟩, H₄⟩
         have max_lt : max₁ < i ∨ max₂ < j := by
           rcases lt_trichotomy max₁ i with (h | rfl | h)
chore: rename by_contra' to by_contra! (#8797)

To fit with the "please try harder" convention of ! tactics.

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

Diff
@@ -56,7 +56,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
     Ideal.IsPrime I :=
   ⟨I_ne_top, by
     intro x y hxy
-    by_contra' rid
+    by_contra! rid
     obtain ⟨rid₁, rid₂⟩ := rid
     classical
       /-
chore: use by_contra' instead of by_contra + push_neg (#8798)

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

Diff
@@ -56,8 +56,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
     Ideal.IsPrime I :=
   ⟨I_ne_top, by
     intro x y hxy
-    by_contra rid
-    push_neg at rid
+    by_contra' rid
     obtain ⟨rid₁, rid₂⟩ := rid
     classical
       /-
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -40,7 +40,7 @@ open GradedRing DirectSum SetLike Finset
 
 open BigOperators
 
-variable {ι σ A : Type _}
+variable {ι σ A : Type*}
 
 variable [CommRing A]
 
chore: tidy various files (#6291)
Diff
@@ -28,7 +28,7 @@ This file contains a proof that the radical of any homogeneous ideal is a homoge
 Throughout this file, the indexing type `ι` of grading is assumed to be a
 `LinearOrderedCancelAddCommMonoid`. This might be stronger than necessary but cancelling
 property is strictly necessary; for a counterexample of how `Ideal.IsHomogeneous.isPrime_iff`
-fails for a non-cancellative set see `counterexample/homogeneous_prime_not_prime.lean`.
+fails for a non-cancellative set see `Counterexamples/HomogeneousPrimeNotPrime.lean`.
 
 ## Tags
 
@@ -48,7 +48,7 @@ variable [LinearOrderedCancelAddCommMonoid ι]
 
 variable [SetLike σ A] [AddSubmonoidClass σ A] {𝒜 : ι → σ} [GradedRing 𝒜]
 
-set_option maxHeartbeats 300000 in -- Porting note: This proof needs a long time to elaborate
+-- Porting note: This proof needs a long time to elaborate
 theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI : I.IsHomogeneous 𝒜)
     (I_ne_top : I ≠ ⊤)
     (homogeneous_mem_or_mem :
chore: fix grammar mistakes (#6121)
Diff
@@ -20,8 +20,8 @@ This file contains a proof that the radical of any homogeneous ideal is a homoge
   `I.homogeneous_core 𝒜` (i.e. the largest homogeneous ideal contained in `I`) is also prime.
 * `Ideal.IsHomogeneous.radical`: for any `I : Ideal A`, if `I` is homogeneous, then the
   radical of `I` is homogeneous as well.
-* `HomogeneousIdeal.radical`: for any `I : HomogeneousIdeal 𝒜`, `I.radical` is the the
-  radical of `I` as a `HomogeneousIdeal 𝒜`
+* `HomogeneousIdeal.radical`: for any `I : HomogeneousIdeal 𝒜`, `I.radical` is the
+  radical of `I` as a `HomogeneousIdeal 𝒜`.
 
 ## Implementation details
 
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

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

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Jujian Zhang. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Jujian Zhang, Eric Wieser
-
-! This file was ported from Lean 3 source module ring_theory.graded_algebra.radical
-! leanprover-community/mathlib commit f1944b30c97c5eb626e498307dec8b022a05bd0a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.RingTheory.GradedAlgebra.HomogeneousIdeal
 
+#align_import ring_theory.graded_algebra.radical from "leanprover-community/mathlib"@"f1944b30c97c5eb626e498307dec8b022a05bd0a"
+
 /-!
 
 This file contains a proof that the radical of any homogeneous ideal is a homogeneous ideal
chore: cleanup whitespace (#5988)

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

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

Diff
@@ -127,7 +127,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
           rw [set₁_eq] at not_mem
           simp only [not_and, Classical.not_not, Ne.def, mem_filter] at not_mem
           exact Ideal.mul_mem_right _ I (not_mem H₂)
-        · -- in this case  `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
+        · -- in this case `max₂ < j`, then `yⱼ ∈ I`; for otherwise `j ∈ set₂`, then `j ≤ max₂`.
           have not_mem : j ∉ set₂ := fun h =>
             lt_irrefl _ ((max'_lt_iff set₂ (nonempty y rid₂)).mp max_lt j h)
           rw [set₂_eq] at not_mem
refactor: use the typeclass SProd to implement overloaded notation · ×ˢ · (#4200)

Currently, the following notations are changed from · ×ˢ · because Lean 4 can't deal with ambiguous notations. | Definition | Notation | | :

Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Chris Hughes <chrishughes24@gmail.com>

Diff
@@ -94,7 +94,7 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
       replace hxy : proj 𝒜 (max₁ + max₂) (x * y) ∈ I := hI _ hxy
       have mem_I : proj 𝒜 max₁ x * proj 𝒜 max₂ y ∈ I := by
         set antidiag :=
-          ((decompose 𝒜 x).support ×ᶠ (decompose 𝒜 y).support).filter (fun z : ι × ι =>
+          ((decompose 𝒜 x).support ×ˢ (decompose 𝒜 y).support).filter (fun z : ι × ι =>
             z.1 + z.2 = max₁ + max₂) with ha
         have mem_antidiag : (max₁, max₂) ∈ antidiag := by
           simp only [add_sum_erase, mem_filter, mem_product]
@@ -107,7 +107,6 @@ theorem Ideal.IsHomogeneous.isPrime_of_homogeneous_mem_or_mem {I : Ideal A} (hI
                 proj 𝒜 max₁ x * proj 𝒜 max₂ y +
                   ∑ ij in antidiag.erase (max₁, max₂), proj 𝒜 ij.1 x * proj 𝒜 ij.2 y :=
               (add_sum_erase _ _ mem_antidiag).symm
-
         rw [eq_sub_of_add_eq eq_add_sum.symm]
         refine' Ideal.sub_mem _ hxy (Ideal.sum_mem _ fun z H => _)
         rcases z with ⟨i, j⟩
feat: port RingTheory.GradedAlgebra.Radical (#4223)

There is a long proof in this file that needs maxHeartbeats 300000 to complete

Dependencies 8 + 464

465 files ported (98.3%)
191891 lines ported (98.4%)
Show graph

The unported dependencies are