Theorem: Ideal.comap_jacobson_of_surjective
File: Mathlib/RingTheory/JacobsonIdeal.lean

tactic: unfold Ideal.jacobson
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ comap f (jacobson K) = jacobson (comap f K)

tactic: refine' le_antisymm _ _
state_before: R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ comap f (sInf {J | K ≤ J ∧ IsMaximal J}) = sInf {J | comap f K ≤ J ∧ IsMaximal J}

tactic: refine le_trans (comap_mono (le_of_eq (Trans.trans top_inf_eq.symm sInf_insert.symm))) ?_
state_before: case refine'_1
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ comap f (sInf {J | K ≤ J ∧ IsMaximal J}) ≤ sInf {J | comap f K ≤ J ∧ IsMaximal J}

tactic: rw [comap_sInf', sInf_eq_iInf]
state_before: case refine'_1
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ comap f (sInf (insert ⊤ {J | K ≤ J ∧ IsMaximal J})) ≤ sInf {J | comap f K ≤ J ∧ IsMaximal J}

tactic: refine' iInf_le_iInf_of_subset fun J hJ => _
state_before: case refine'_1
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ (⨅ (I : Ideal R) (_ : I ∈ comap f '' insert ⊤ {J | K ≤ J ∧ IsMaximal J}), I) ≤
    ⨅ (a : Ideal R) (_ : a ∈ {J | comap f K ≤ J ∧ IsMaximal J}), a

tactic: have : comap f (map f J) = J :=
  Trans.trans (comap_map_of_surjective f hf J)
    (le_antisymm (sup_le_iff.2 ⟨le_of_eq rfl, le_trans (comap_mono bot_le) hJ.left⟩)
      le_sup_left)
state_before: case refine'_1
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
J : Ideal R
hJ : J ∈ {J | comap f K ≤ J ∧ IsMaximal J}
⊢ J ∈ comap f '' insert ⊤ {J | K ≤ J ∧ IsMaximal J}

tactic: cases' map_eq_top_or_isMaximal_of_surjective _ hf hJ.right with htop hmax
state_before: case refine'_1
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
J : Ideal R
hJ : J ∈ {J | comap f K ≤ J ∧ IsMaximal J}
this : comap f (map f J) = J
⊢ J ∈ comap f '' insert ⊤ {J | K ≤ J ∧ IsMaximal J}

tactic: exact ⟨⊤, ⟨Set.mem_insert ⊤ _, htop ▸ this⟩⟩
state_before: case refine'_1.inl
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
J : Ideal R
hJ : J ∈ {J | comap f K ≤ J ∧ IsMaximal J}
this : comap f (map f J) = J
htop : map f J = ⊤
⊢ J ∈ comap f '' insert ⊤ {J | K ≤ J ∧ IsMaximal J}

tactic: exact ⟨map f J, ⟨Set.mem_insert_of_mem _ ⟨le_map_of_comap_le_of_surjective f hf hJ.1, hmax⟩,
  this⟩⟩
state_before: case refine'_1.inr
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
J : Ideal R
hJ : J ∈ {J | comap f K ≤ J ∧ IsMaximal J}
this : comap f (map f J) = J
hmax : IsMaximal (map f J)
⊢ J ∈ comap f '' insert ⊤ {J | K ≤ J ∧ IsMaximal J}

tactic: rw [comap_sInf]
state_before: case refine'_2
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ sInf {J | comap f K ≤ J ∧ IsMaximal J} ≤ comap f (sInf {J | K ≤ J ∧ IsMaximal J})

tactic: refine' le_iInf_iff.2 fun J => le_iInf_iff.2 fun hJ => _
state_before: case refine'_2
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K : Ideal S
⊢ sInf {J | comap f K ≤ J ∧ IsMaximal J} ≤ ⨅ (I : Ideal S) (_ : I ∈ {J | K ≤ J ∧ IsMaximal J}), comap f I

tactic: haveI : J.IsMaximal := hJ.right
state_before: case refine'_2
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K J : Ideal S
hJ : J ∈ {J | K ≤ J ∧ IsMaximal J}
⊢ sInf {J | comap f K ≤ J ∧ IsMaximal J} ≤ comap f J

tactic: refine' sInf_le ⟨comap_mono hJ.left, comap_isMaximal_of_surjective _ hf⟩
state_before: case refine'_2
R : Type u
S : Type v
inst✝¹ : Ring R
inst✝ : Ring S
I : Ideal R
f : R →+* S
hf : Function.Surjective ↑f
K J : Ideal S
hJ : J ∈ {J | K ≤ J ∧ IsMaximal J}
this : IsMaximal J
⊢ sInf {J | comap f K ≤ J ∧ IsMaximal J} ≤ comap f J