awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
antidiag : Finset (ι × ι) :=
  {z ∈
      SProd.sprod (α := Finset ι) (β := Finset ι)
        (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x))
        (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) |
    z.1 + z.2 = max₁ + max₂}
ha :
  antidiag =
    {z ∈
        SProd.sprod (α := Finset ι) (β := Finset ι)
          (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x))
          (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) |
      z.1 + z.2 = max₁ + max₂}
mem_antidiag : (max₁, max₂) ∈ antidiag
eq_add_sum :
  (proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) =
    HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) +
      ∑ ij ∈ antidiag.erase (max₁, max₂),
        HMul.hMul (α := A) (β := A) ((proj 𝒜 ij.1 : (a : A) → A) x : A) ((proj 𝒜 ij.2 : (a : A) → A) y : A)
i j : ι
H₁ : ¬(i = max₁ ∧ j = max₂)
H₄ : i + j = max₁ + max₂
H₂ :
  Membership.mem (γ := Finset ι)
    (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x)) i
H₃ :
  Membership.mem (γ := Finset ι)
    (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) j
max_lt : max₁ < i
⊢ HMul.hMul (α := A) (β := A) ((proj 𝒜 (i, j).1 : (a : A) → A) x : A) ((proj 𝒜 (i, j).2 : (a : A) → A) y : A) ∈ I
have notMem : i ∉ set₁
Tactic: have notMem : i ∉ set₁ := fun h =>
            lt_irrefl _ ((max'_lt_iff set₁ (nonempty x rid₁)).mp max_lt i h)
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
antidiag : Finset (ι × ι) :=
  {z ∈
      SProd.sprod (α := Finset ι) (β := Finset ι)
        (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x))
        (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) |
    z.1 + z.2 = max₁ + max₂}
ha :
  antidiag =
    {z ∈
        SProd.sprod (α := Finset ι) (β := Finset ι)
          (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x))
          (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) |
      z.1 + z.2 = max₁ + max₂}
mem_antidiag : (max₁, max₂) ∈ antidiag
eq_add_sum :
  (proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) =
    HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) +
      ∑ ij ∈ antidiag.erase (max₁, max₂),
        HMul.hMul (α := A) (β := A) ((proj 𝒜 ij.1 : (a : A) → A) x : A) ((proj 𝒜 ij.2 : (a : A) → A) y : A)
i j : ι
H₁ : ¬(i = max₁ ∧ j = max₂)
H₄ : i + j = max₁ + max₂
H₂ :
  Membership.mem (γ := Finset ι)
    (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x)) i
H₃ :
  Membership.mem (γ := Finset ι)
    (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) j
max_lt : max₂ < j
⊢ HMul.hMul (α := A) (β := A) ((proj 𝒜 (i, j).1 : (a : A) → A) x : A) ((proj 𝒜 (i, j).2 : (a : A) → A) y : A) ∈ I
have notMem : j ∉ set₂
Tactic: have notMem : j ∉ set₂ := fun h =>
            lt_irrefl _ ((max'_lt_iff set₂ (nonempty y rid₂)).mp max_lt j h)
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
mem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
⊢ ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I ∧ ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
have mem_max₃ : Membership.mem (γ := Finset ι)
    (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x)) max₁ ∧
  ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I
Tactic: rw [mem_filter] at mem_max₁ mem_max₂
Cleared hypotheses: mem_max₁, mem_max₂, hxy, mem_I
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
mem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
mem_max₃ :
  Membership.mem (γ := Finset ι)
      (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x)) max₁ ∧
    ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I
⊢ ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I ∧ ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
have mem_max₄ : Membership.mem (γ := Finset ι)
    (DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y)) max₂ ∧
  ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
Tactic: rw [mem_filter] at mem_max₁ mem_max₂
Cleared hypotheses: mem_max₁, mem_max₂, hxy, mem_I
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
mem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
⊢ HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
have neither_mem : ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I ∧ ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
Tactic: 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⟩
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
mem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
neither_mem : ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I ∧ ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
_rid : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
⊢ False
have inl : ∀
  (h :
    (↑(((AddMonoidHom.comp (N := Π₀ (i : ι), ↥(𝒜 i))
                  (DFinsupp.evalAddMonoidHom (β := fun (i : ι) ↦ ↥(𝒜 i)) max₁ : (Π₀ (i : ι), ↥(𝒜 i)) →+ ↥(𝒜 max₁))
                  (RingHom.toAddMonoidHom (RingEquiv.toRingHom (decomposeRingEquiv 𝒜)) : A →+ ⨁ (i : ι), ↥(𝒜 i)) :
                A →+ ↥(𝒜 max₁)) :
              (a : A) → ↥(𝒜 max₁))
            x) :
        A) ∈
      I),
  False
Tactic: rcases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
          with h | h
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
mem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
neither_mem : ((proj 𝒜 max₁ : (a : A) → A) x : A) ∉ I ∧ ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
_rid : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
inl :
  ∀
    (h :
      (↑(((AddMonoidHom.comp (N := Π₀ (i : ι), ↥(𝒜 i))
                    (DFinsupp.evalAddMonoidHom (β := fun (i : ι) ↦ ↥(𝒜 i)) max₁ : (Π₀ (i : ι), ↥(𝒜 i)) →+ ↥(𝒜 max₁))
                    (RingHom.toAddMonoidHom (RingEquiv.toRingHom (decomposeRingEquiv 𝒜)) : A →+ ⨁ (i : ι), ↥(𝒜 i)) :
                  A →+ ↥(𝒜 max₁)) :
                (a : A) → ↥(𝒜 max₁))
              x) :
          A) ∈
        I),
    False
⊢ False
have inr : ∀
  (h :
    (↑(((AddMonoidHom.comp (N := Π₀ (i : ι), ↥(𝒜 i))
                  (DFinsupp.evalAddMonoidHom (β := fun (i : ι) ↦ ↥(𝒜 i)) max₂ : (Π₀ (i : ι), ↥(𝒜 i)) →+ ↥(𝒜 max₂))
                  (RingHom.toAddMonoidHom (RingEquiv.toRingHom (decomposeRingEquiv 𝒜)) : A →+ ⨁ (i : ι), ↥(𝒜 i)) :
                A →+ ↥(𝒜 max₂)) :
              (a : A) → ↥(𝒜 max₂))
            y) :
        A) ∈
      I),
  False
Tactic: rcases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
          with h | h
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
I_ne_top : I ≠ ⊤
homogeneous_mem_or_mem : ∀ {x y : A}, IsHomogeneousElem 𝒜 x → IsHomogeneousElem 𝒜 y → x * y ∈ I → x ∈ I ∨ y ∈ I
x y : A
rid₁ : x ∉ I
rid₂ : y ∉ I
set₁ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
    ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₁_eq :
  set₁ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
      ((proj 𝒜 i : (a : A) → A) x : A) ∉ I}
set₂ : Finset ι :=
  {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
    ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
set₂_eq :
  set₂ =
    {i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) y) |
      ((proj 𝒜 i : (a : A) → A) y : A) ∉ I}
nonempty :
  ∀ x ∉ I,
    Finset.Nonempty.{u_1} (α := ι)
      ({i ∈ DFinsupp.support (β := fun (i : ι) ↦ ↥(𝒜 i)) ((decompose 𝒜 : (a : A) → ⨁ (i : ι), ↥(𝒜 i)) x) |
        ((proj 𝒜 i : (a : A) → A) x : A) ∉ I})
max₁ : ι := set₁.max' ⋯
max₂ : ι := set₂.max' ⋯
mem_max₁ : max₁ ∈ set₁
mem_max₂ : max₂ ∈ set₂
hxy : Membership.mem (α := A) I ((proj 𝒜 (max₁ + max₂) : (a : A) → A) (x * y) : A)
mem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∈ I
⊢ False
have notMem_I : HMul.hMul (α := A) (β := A) ((proj 𝒜 max₁ : (a : A) → A) x : A) ((proj 𝒜 max₂ : (a : A) → A) y : A) ∉ I
Tactic: have notMem_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
        rcases homogeneous_mem_or_mem ⟨max₁, SetLike.coe_mem _⟩ ⟨max₂, SetLike.coe_mem _⟩ mem_I
          with h | h
        · apply neither_mem.1 h
        · apply neither_mem.2 h
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
h : I.IsPrime
⊢ (HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)).IsPrime
have I_ne_top : HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) ≠ ⊤
Tactic: apply (Ideal.homogeneousCore 𝒜 I).isHomogeneous.isPrime_of_homogeneous_mem_or_mem
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
h : I.IsPrime
I_ne_top : HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) ≠ ⊤
⊢ (HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)).IsPrime
have homogeneous_mem_or_mem : ∀ {x y : A},
  IsHomogeneousElem 𝒜 x →
    IsHomogeneousElem 𝒜 y →
      x * y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) →
        x ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) ∨
          y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
Tactic: apply (Ideal.homogeneousCore 𝒜 I).isHomogeneous.isPrime_of_homogeneous_mem_or_mem
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (hypothesis)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
h : I.IsPrime
x y : A
hx : IsHomogeneousElem 𝒜 x
hy : IsHomogeneousElem 𝒜 y
hxy : x * y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
⊢ x ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) ∨ y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
have H : x ∈ I ∨ y ∈ I
Tactic: have H := h.mem_or_mem (Ideal.toIdeal_homogeneousCore_le 𝒜 I hxy)
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
h : I.IsPrime
x y : A
hx : IsHomogeneousElem 𝒜 x
hy : IsHomogeneousElem 𝒜 y
hxy : x * y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
H : x ∈ I ∨ y ∈ I
⊢ x ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) ∨ y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
have homogeneous_mem_or_mem : x ∈ I → x ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
Tactic: refine H.imp ?_ ?_
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
h : I.IsPrime
x y : A
hx : IsHomogeneousElem 𝒜 x
hy : IsHomogeneousElem 𝒜 y
hxy : x * y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
H : x ∈ I ∨ y ∈ I
homogeneous_mem_or_mem : x ∈ I → x ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
⊢ x ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I) ∨ y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
have homogeneous_mem_or_mem₁ : y ∈ I → y ∈ HomogeneousIdeal.toIdeal (Ideal.homogeneousCore 𝒜 I)
Tactic: refine H.imp ?_ ?_
-- Lean 4 proof step from Mathlib.RingTheory.GradedAlgebra.Radical (goal)
Goal:
ι : Type u_1
σ : Type u_2
A : Type u_3
inst : CommRing A
inst_1 : AddCommMonoid ι
inst_2 : LinearOrder ι
inst_3 : IsOrderedCancelAddMonoid ι
inst_4 : SetLike σ A
inst_5 : AddSubmonoidClass σ A
𝒜 : ι → σ
inst_6 : GradedRing 𝒜
I : Ideal A
hI : IsHomogeneous 𝒜 I
⊢ I.radical = InfSet.sInf {J : Ideal A | IsHomogeneous 𝒜 J ∧ I ≤ J ∧ J.IsPrime}
have rw : Eq.{u_3 + 1} (α := Ideal A) (InfSet.sInf {J : Ideal A | I ≤ J ∧ J.IsPrime})
  (InfSet.sInf {J : Ideal A | IsHomogeneous 𝒜 J ∧ I ≤ J ∧ J.IsPrime})
Tactic: rw [Ideal.radical_eq_sInf]