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

tactic: refine le_antisymm (fun x h ↦ mem_pNilradical.2 ?_) (fun x 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
⊢ Ideal.comap i (pNilradical L p) = pNilradical K p
state_after: case refine_1
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
x : K
h : x ∈ Ideal.comap i (pNilradical L p)
⊢ ∃ n, x ^ p ^ n = 0

case refine_2
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
x : K
h : x ∈ pNilradical K p
⊢ x ∈ Ideal.comap i (pNilradical L p)

tactic: simp only [Ideal.mem_comap, mem_pNilradical] at h ⊢
state_before: case refine_2
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
x : K
h : x ∈ pNilradical K p
⊢ x ∈ Ideal.comap i (pNilradical L p)
state_after: case refine_2
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
x : K
h : ∃ n, x ^ p ^ n = 0
⊢ ∃ n, i x ^ p ^ n = 0

tactic: obtain ⟨n, h⟩ := h
state_before: case refine_2
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
x : K
h : ∃ n, x ^ p ^ n = 0
⊢ ∃ n, i x ^ p ^ n = 0
state_after: case refine_2.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
x : K
n : ℕ
h : x ^ p ^ n = 0
⊢ ∃ n, i x ^ p ^ n = 0

tactic: exact ⟨n, by simpa only [map_pow, map_zero] using congr(i $h)⟩
state_before: case refine_2.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
x : K
n : ℕ
h : x ^ p ^ n = 0
⊢ ∃ n, i x ^ p ^ n = 0
state_after: no goals

tactic: obtain ⟨n, h⟩ := mem_pNilradical.1 <| Ideal.mem_comap.1 h
state_before: case refine_1
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
x : K
h : x ∈ Ideal.comap i (pNilradical L p)
⊢ ∃ n, x ^ p ^ n = 0
state_after: case refine_1.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
x : K
h✝ : x ∈ Ideal.comap i (pNilradical L p)
n : ℕ
h : i x ^ p ^ n = 0
⊢ ∃ n, x ^ p ^ n = 0

tactic: obtain ⟨m, h⟩ := mem_pNilradical.1 <| ker_le i p ((map_pow i x _).symm ▸ h)
state_before: case refine_1.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
x : K
h✝ : x ∈ Ideal.comap i (pNilradical L p)
n : ℕ
h : i x ^ p ^ n = 0
⊢ ∃ n, x ^ p ^ n = 0
state_after: case refine_1.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
x : K
h✝¹ : x ∈ Ideal.comap i (pNilradical L p)
n : ℕ
h✝ : i x ^ p ^ n = 0
m : ℕ
h : (x ^ p ^ n) ^ p ^ m = 0
⊢ ∃ n, x ^ p ^ n = 0

tactic: exact ⟨n + m, by rwa [pow_add, pow_mul]⟩
state_before: case refine_1.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
x : K
h✝¹ : x ∈ Ideal.comap i (pNilradical L p)
n : ℕ
h✝ : i x ^ p ^ n = 0
m : ℕ
h : (x ^ p ^ n) ^ p ^ m = 0
⊢ ∃ n, x ^ p ^ n = 0
state_after: no goals

tactic: rwa [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
x : K
h✝¹ : x ∈ Ideal.comap i (pNilradical L p)
n : ℕ
h✝ : i x ^ p ^ n = 0
m : ℕ
h : (x ^ p ^ n) ^ p ^ m = 0
⊢ x ^ p ^ (n + m) = 0
state_after: no goals

tactic: simpa only [map_pow, map_zero] using congr(i $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
x : K
n : ℕ
h : x ^ p ^ n = 0
⊢ i x ^ p ^ n = 0
state_after: no goals