Theorem: PerfectRing.toPerfectField
File: Mathlib/FieldTheory/Perfect.lean

tactic: obtain hp | ⟨hp⟩ := ‹ExpChar K p›
state_before: K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
⊢ PerfectField K
state_after: case zero
K : Type u_1
inst✝³ : Field K
inst✝² : CharZero K
inst✝¹ : ExpChar K 1
inst✝ : PerfectRing K 1
⊢ PerfectField K

case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
⊢ PerfectField K

tactic: refine PerfectField.mk fun hf ↦ ?_
state_before: case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
⊢ PerfectField K
state_after: case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
⊢ f✝.Separable

tactic: rcases separable_or p hf with h | ⟨-, g, -, rfl⟩
state_before: case prime
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
⊢ f✝.Separable
state_after: case prime.inl
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
h : f✝.Separable
⊢ f✝.Separable

case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
hf : Irreducible ((expand K p) g)
⊢ ((expand K p) g).Separable

tactic: exact ⟨Irreducible.separable⟩
state_before: case zero
K : Type u_1
inst✝³ : Field K
inst✝² : CharZero K
inst✝¹ : ExpChar K 1
inst✝ : PerfectRing K 1
⊢ PerfectField K
state_after: no goals

tactic: assumption
state_before: case prime.inl
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
f✝ : K[X]
hf : Irreducible f✝
h : f✝.Separable
⊢ f✝.Separable
state_after: no goals

tactic: exfalso
state_before: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
hf : Irreducible ((expand K p) g)
⊢ ((expand K p) g).Separable
state_after: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
hf : Irreducible ((expand K p) g)
⊢ False

tactic: revert hf
state_before: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
hf : Irreducible ((expand K p) g)
⊢ False
state_after: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
⊢ Irreducible ((expand K p) g) → False

tactic: haveI := Fact.mk hp
state_before: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
⊢ Irreducible ((expand K p) g) → False
state_after: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
this : Fact (Nat.Prime p)
⊢ Irreducible ((expand K p) g) → False

tactic: simp
state_before: case prime.inr.intro.intro.intro
K : Type u_1
p : ℕ
inst✝² : Field K
inst✝¹ : ExpChar K p
inst✝ : PerfectRing K p
hp : Nat.Prime p
hchar✝ : CharP K p
g : K[X]
this : Fact (Nat.Prime p)
⊢ Irreducible ((expand K p) g) → False
state_after: no goals