Theorem: Rat.MulRingNorm.mulRingNorm_equiv_padic_of_bounded
File: Mathlib/NumberTheory/Ostrowski.lean

tactic: obtain ⟨p, hfp, hmin⟩ := exists_minimal_nat_zero_lt_mulRingNorm_lt_one hf_nontriv bdd
state_before: f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p : ℕ
hp0 : 0 < f ↑p
hp1 : f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)
state_after: case intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)

tactic: have hprime := is_prime_of_minimal_nat_zero_lt_mulRingNorm_lt_one hfp.1 hfp.2 hmin
state_before: case intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)
state_after: case intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)

tactic: have hprime_fact : Fact (p.Prime) := ⟨hprime⟩
state_before: case intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)
state_after: case intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)

tactic: obtain ⟨t, h⟩ := exists_pos_mulRingNorm_eq_pow_neg hfp.1 hfp.2 hmin
state_before: case intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)
state_after: case intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)

tactic: simp_rw [← equiv_on_nat_iff_equiv]
state_before: case intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∃! p, ∃ (hp : Fact (Nat.Prime p)), f.equiv (mulRingNorm_padic p)
state_after: case intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∃! p, ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n

tactic: use p
state_before: case intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∃! p, ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n
state_after: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) p ∧
    ∀ (y : ℕ),
      (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) y → y = p

tactic: constructor
state_before: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) p ∧
    ∀ (y : ℕ),
      (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) y → y = p
state_after: case h.left
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) p

case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∀ (y : ℕ),
    (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) y → y = p

tactic: use hprime_fact
state_before: case h.left
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) p
state_after: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n

tactic: refine ⟨t⁻¹, by simp only [inv_pos, h.1], fun n ↦ ?_⟩
state_before: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n
state_after: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
n : ℕ
⊢ f ↑n ^ t⁻¹ = (mulRingNorm_padic p) ↑n

tactic: have ht : t⁻¹ ≠ 0 := inv_ne_zero h.1.ne'
state_before: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
n : ℕ
⊢ f ↑n ^ t⁻¹ = (mulRingNorm_padic p) ↑n
state_after: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
n : ℕ
ht : t⁻¹ ≠ 0
⊢ f ↑n ^ t⁻¹ = (mulRingNorm_padic p) ↑n

tactic: rcases eq_or_ne n 0 with rfl | hn
state_before: case h
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
n : ℕ
ht : t⁻¹ ≠ 0
⊢ f ↑n ^ t⁻¹ = (mulRingNorm_padic p) ↑n
state_after: case h.inl
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
⊢ f ↑0 ^ t⁻¹ = (mulRingNorm_padic p) ↑0

case h.inr
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
n : ℕ
ht : t⁻¹ ≠ 0
hn : n ≠ 0
⊢ f ↑n ^ t⁻¹ = (mulRingNorm_padic p) ↑n

tactic: simp only [inv_pos, h.1]
state_before: f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ 0 < t⁻¹
state_after: no goals

tactic: simp only [Nat.cast_zero, map_zero, ne_eq, ht, not_false_eq_true, zero_rpow]
state_before: case h.inl
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
⊢ f ↑0 ^ t⁻¹ = (mulRingNorm_padic p) ↑0
state_after: no goals

tactic: rcases Nat.exists_eq_pow_mul_and_not_dvd hn p hprime.ne_one with ⟨e, m, hpm, rfl⟩
state_before: case h.inr
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
n : ℕ
ht : t⁻¹ ≠ 0
hn : n ≠ 0
⊢ f ↑n ^ t⁻¹ = (mulRingNorm_padic p) ↑n
state_after: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : ¬p ∣ m
hn : p ^ e * m ≠ 0
⊢ f ↑(p ^ e * m) ^ t⁻¹ = (mulRingNorm_padic p) ↑(p ^ e * m)

tactic: simp only [Nat.cast_mul, Nat.cast_pow, map_mul, map_pow, mulRingNorm_eq_padic_norm,
  padicNorm.padicNorm_p_of_prime, Rat.cast_inv, Rat.cast_natCast, inv_pow,
  mulRingNorm_eq_one_of_not_dvd bdd hfp.1 hfp.2 hmin hpm, h.2]
state_before: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : ¬p ∣ m
hn : p ^ e * m ≠ 0
⊢ f ↑(p ^ e * m) ^ t⁻¹ = (mulRingNorm_padic p) ↑(p ^ e * m)
state_after: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : ¬p ∣ m
hn : p ^ e * m ≠ 0
⊢ ((↑p ^ (-t)) ^ e * 1) ^ t⁻¹ = (↑p ^ e)⁻¹ * ↑(padicNorm p ↑m)

tactic: rw [← padicNorm.nat_eq_one_iff] at hpm
state_before: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : ¬p ∣ m
hn : p ^ e * m ≠ 0
⊢ ((↑p ^ (-t)) ^ e * 1) ^ t⁻¹ = (↑p ^ e)⁻¹ * ↑(padicNorm p ↑m)
state_after: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ ((↑p ^ (-t)) ^ e * 1) ^ t⁻¹ = (↑p ^ e)⁻¹ * ↑(padicNorm p ↑m)

tactic: simp only [← rpow_natCast, p.cast_nonneg, ← rpow_mul, mul_one, ← rpow_neg, hpm, cast_one]
state_before: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ ((↑p ^ (-t)) ^ e * 1) ^ t⁻¹ = (↑p ^ e)⁻¹ * ↑(padicNorm p ↑m)
state_after: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ ↑p ^ (-t * ↑e * t⁻¹) = ↑p ^ (-↑e)

tactic: congr
state_before: case h.inr.intro.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ ↑p ^ (-t * ↑e * t⁻¹) = ↑p ^ (-↑e)
state_after: case h.inr.intro.intro.intro.e_a
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ -t * ↑e * t⁻¹ = -↑e

tactic: field_simp [h.1.ne']
state_before: case h.inr.intro.intro.intro.e_a
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ -t * ↑e * t⁻¹ = -↑e
state_after: case h.inr.intro.intro.intro.e_a
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ t * ↑e = ↑e * t

tactic: ring
state_before: case h.inr.intro.intro.intro.e_a
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
ht : t⁻¹ ≠ 0
e m : ℕ
hpm : padicNorm p ↑m = 1
hn : p ^ e * m ≠ 0
⊢ t * ↑e = ↑e * t
state_after: no goals

tactic: intro q ⟨hq_prime, h_equiv⟩
state_before: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
⊢ ∀ (y : ℕ),
    (fun p => ∃ (h : Fact (Nat.Prime p)), ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic p) ↑n) y → y = p
state_after: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
⊢ q = p

tactic: by_contra! hne
state_before: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
⊢ q = p
state_after: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
hne : q ≠ p
⊢ False

tactic: apply Prime.ne_one (Nat.Prime.prime (Fact.elim hq_prime))
state_before: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
hne : q ≠ p
⊢ False
state_after: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
hne : q ≠ p
⊢ q = 1

tactic: rw [ne_comm, ← Nat.coprime_primes hprime (Fact.elim hq_prime),
  Nat.Prime.coprime_iff_not_dvd hprime] at hne
state_before: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
hne : q ≠ p
⊢ q = 1
state_after: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
hne : ¬p ∣ q
⊢ q = 1

tactic: rcases h_equiv with ⟨c, _, h_eq⟩
state_before: case h.right
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
h_equiv : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
hne : ¬p ∣ q
⊢ q = 1
state_after: case h.right.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
hne : ¬p ∣ q
c : ℝ
left✝ : 0 < c
h_eq : ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
⊢ q = 1

tactic: have h_eq' := h_eq q
state_before: case h.right.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
hne : ¬p ∣ q
c : ℝ
left✝ : 0 < c
h_eq : ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
⊢ q = 1
state_after: case h.right.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
hne : ¬p ∣ q
c : ℝ
left✝ : 0 < c
h_eq : ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
h_eq' : f ↑q ^ c = (mulRingNorm_padic q) ↑q
⊢ q = 1

tactic: simp only [mulRingNorm_eq_one_of_not_dvd bdd hfp.1 hfp.2 hmin hne, one_rpow,
  mulRingNorm_eq_padic_norm, padicNorm.padicNorm_p_of_prime, cast_inv, cast_natCast, eq_comm,
  inv_eq_one] at h_eq'
state_before: case h.right.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
hne : ¬p ∣ q
c : ℝ
left✝ : 0 < c
h_eq : ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
h_eq' : f ↑q ^ c = (mulRingNorm_padic q) ↑q
⊢ q = 1
state_after: case h.right.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
hne : ¬p ∣ q
c : ℝ
left✝ : 0 < c
h_eq : ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
h_eq' : ↑q = 1
⊢ q = 1

tactic: norm_cast at h_eq'
state_before: case h.right.intro.intro
f g : MulRingNorm ℚ
hf_nontriv : f ≠ 1
bdd : ∀ (n : ℕ), f ↑n ≤ 1
p✝ : ℕ
hp0 : 0 < f ↑p✝
hp1 : f ↑p✝ < 1
hmin✝ : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p✝ ≤ m
p : ℕ
hfp : 0 < f ↑p ∧ f ↑p < 1
hmin : ∀ (m : ℕ), 0 < f ↑m ∧ f ↑m < 1 → p ≤ m
hprime : Nat.Prime p
hprime_fact : Fact (Nat.Prime p)
t : ℝ
h : 0 < t ∧ f ↑p = ↑p ^ (-t)
q : ℕ
hq_prime : Fact (Nat.Prime q)
hne : ¬p ∣ q
c : ℝ
left✝ : 0 < c
h_eq : ∀ (n : ℕ), f ↑n ^ c = (mulRingNorm_padic q) ↑n
h_eq' : ↑q = 1
⊢ q = 1
state_after: no goals