Theorem: PreTilt.map_eq_zero
File: Mathlib/RingTheory/Perfection.lean

tactic: by_cases hf0 : f = 0
state_before: K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
⊢ (val K v O hv p) f = 0 ↔ f = 0
state_after: case pos
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : f = 0
⊢ (val K v O hv p) f = 0 ↔ f = 0

case neg
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
⊢ (val K v O hv p) f = 0 ↔ f = 0

tactic: obtain ⟨n, hn⟩ : ∃ n, coeff _ _ n f ≠ 0 := not_forall.1 fun h => hf0 <| Perfection.ext h
state_before: case neg
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
⊢ (val K v O hv p) f = 0 ↔ f = 0
state_after: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
⊢ (val K v O hv p) f = 0 ↔ f = 0

tactic: show valAux K v O hv p f = 0 ↔ f = 0
state_before: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
⊢ (val K v O hv p) f = 0 ↔ f = 0
state_after: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
⊢ valAux K v O hv p f = 0 ↔ f = 0

tactic: refine iff_of_false (fun hvf => hn ?_) hf0
state_before: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
⊢ valAux K v O hv p f = 0 ↔ f = 0
state_after: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
hvf : valAux K v O hv p f = 0
⊢ (coeff (ModP K v O hv p) p n) f = 0

tactic: rw [valAux_eq hn] at hvf
state_before: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
hvf : valAux K v O hv p f = 0
⊢ (coeff (ModP K v O hv p) p n) f = 0
state_after: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
hvf : ModP.preVal K v O hv p ((coeff (ModP K v O hv p) p n) f) ^ p ^ n = 0
⊢ (coeff (ModP K v O hv p) p n) f = 0

tactic: replace hvf := pow_eq_zero hvf
state_before: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
hvf : ModP.preVal K v O hv p ((coeff (ModP K v O hv p) p n) f) ^ p ^ n = 0
⊢ (coeff (ModP K v O hv p) p n) f = 0
state_after: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
hvf : ModP.preVal K v O hv p ((coeff (ModP K v O hv p) p n) f) = 0
⊢ (coeff (ModP K v O hv p) p n) f = 0

tactic: rwa [ModP.preVal_eq_zero] at hvf
state_before: case neg.intro
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : ¬f = 0
n : ℕ
hn : (coeff (ModP K v O hv p) p n) f ≠ 0
hvf : ModP.preVal K v O hv p ((coeff (ModP K v O hv p) p n) f) = 0
⊢ (coeff (ModP K v O hv p) p n) f = 0
state_after: no goals

tactic: rw [hf0]
state_before: case pos
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : f = 0
⊢ (val K v O hv p) f = 0 ↔ f = 0
state_after: case pos
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : f = 0
⊢ (val K v O hv p) 0 = 0 ↔ 0 = 0

tactic: exact iff_of_true (Valuation.map_zero _) rfl
state_before: case pos
K : Type u₁
inst✝² : Field K
v : Valuation K ℝ≥0
O : Type u₂
inst✝¹ : CommRing O
inst✝ : Algebra O K
hv : v.Integers O
p : ℕ
hp : Fact (Nat.Prime p)
hvp : Fact (v ↑p ≠ 1)
f : PreTilt K v O hv p
hf0 : f = 0
⊢ (val K v O hv p) 0 = 0 ↔ 0 = 0
state_after: no goals