Theorem: RingHom.ker_isMaximal_of_surjective
File: Mathlib/RingTheory/Ideal/Maps.lean

Proof steps:
state_before: R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
⊢ (ker f).IsMaximal
state_after: R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
⊢ 1 ∈ J
tactic: refine
    Ideal.isMaximal_iff.mpr
      ⟨fun h1 => one_ne_zero' K <| map_one f ▸ (mem_ker f).mp h1, fun J x hJ hxf hxJ => ?_⟩
state_before: R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
⊢ 1 ∈ J
state_after: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
⊢ 1 ∈ J
tactic: obtain ⟨y, hy⟩ := hf (f x)⁻¹
state_before: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
⊢ 1 ∈ J
state_after: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ 1 ∈ J
tactic: have H : 1 = y * x - (y * x - 1) := (sub_sub_cancel _ _).symm
state_before: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ 1 ∈ J
state_after: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ y * x - (y * x - 1) ∈ J
tactic: rw [H]
state_before: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ y * x - (y * x - 1) ∈ J
state_after: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ y * x - 1 ∈ ker f
tactic: refine J.sub_mem (J.mul_mem_left _ hxJ) (hJ ?_)
state_before: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ y * x - 1 ∈ ker f
state_after: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ f (y * x - 1) = 0
tactic: rw [mem_ker]
state_before: case intro
R✝ : Type u
S : Type v
T : Type w
R : Type u_1
K : Type u_2
F : Type u_3
inst✝³ : Ring R
inst✝² : Field K
inst✝¹ : FunLike F R K
inst✝ : RingHomClass F R K
f : F
hf : Function.Surjective ⇑f
J : Ideal R
x : R
hJ : ker f ≤ J
hxf : x ∉ ker f
hxJ : x ∈ J
y : R
hy : f y = (f x)⁻¹
H : 1 = y * x - (y * x - 1)
⊢ f (y * x - 1) = 0
state_after: no goals
tactic: simp only [hy, map_sub, map_one, map_mul, inv_mul_cancel (mt (mem_ker f).mpr hxf), sub_self]