Theorem: IsPRadical.trans
File: Mathlib/FieldTheory/IsPerfectClosure.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : M
⊢ ∃ n y, (f.comp i) y = x ^ p ^ n
state_after: case intro.intro
K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : M
n : ℕ
y : L
hy : f y = x ^ p ^ n
⊢ ∃ n y, (f.comp i) y = x ^ p ^ n
tactic: obtain ⟨n, y, hy⟩ := pow_mem f p x
state_before: case intro.intro
K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : M
n : ℕ
y : L
hy : f y = x ^ p ^ n
⊢ ∃ n y, (f.comp i) y = x ^ p ^ n
state_after: case intro.intro.intro.intro
K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : M
n : ℕ
y : L
hy : f y = x ^ p ^ n
m : ℕ
z : K
hz : i z = y ^ p ^ m
⊢ ∃ n y, (f.comp i) y = x ^ p ^ n
tactic: obtain ⟨m, z, hz⟩ := pow_mem i p y
state_before: case intro.intro.intro.intro
K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : M
n : ℕ
y : L
hy : f y = x ^ p ^ n
m : ℕ
z : K
hz : i z = y ^ p ^ m
⊢ ∃ n y, (f.comp i) y = x ^ p ^ n
state_after: no goals
tactic: exact ⟨n + m, z, by rw [RingHom.comp_apply, hz, map_pow, hy, pow_add, pow_mul]⟩
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : K
h : x ∈ RingHom.ker (f.comp i)
⊢ x ∈ pNilradical K p
state_after: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : K
h : i x ∈ RingHom.ker f
⊢ x ∈ pNilradical K p
tactic: rw [RingHom.mem_ker, RingHom.comp_apply, ← RingHom.mem_ker] at h
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁷ : CommSemiring K
inst✝⁶ : CommSemiring L
inst✝⁵ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁴ : ExpChar K p
inst✝³ : ExpChar L p
inst✝² : ExpChar M p
inst✝¹ : IsPRadical i p
inst✝ : IsPRadical f p
x : K
h : i x ∈ RingHom.ker f
⊢ x ∈ pNilradical K p
state_after: no goals
tactic: simpa only [← Ideal.mem_comap, comap_pNilradical] using ker_le f p h