Theorem: padicValRat.defn
File: Mathlib/NumberTheory/Padics/PadicVal.lean

Proof steps:
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hn : n = 0
⊢ False
state_after: no goals
tactic: simp_all
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d = 0
⊢ False
state_after: no goals
tactic: simp_all
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
⊢ padicValRat p q = ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
⊢ padicValRat p q = ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
tactic: have hd : d ≠ 0 := Rat.mk_denom_ne_zero_of_ne_zero hqz qdf
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
⊢ padicValRat p q = ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ padicValRat p q = ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
tactic: let ⟨c, hc1, hc2⟩ := Rat.num_den_mk hd qdf
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ padicValRat p q = ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
tactic: rw [padicValRat.multiplicity_sub_multiplicity hp.1.ne_one hqz]
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) n).get ⋯) - ↑((multiplicity (↑p) d).get ⋯)
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) (c * q.num)).get ⋯) - ↑((multiplicity (↑p) (c * ↑q.den)).get ⋯)
tactic: simp only [Nat.isUnit_iff, hc1, hc2]
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) (c * q.num)).get ⋯) - ↑((multiplicity (↑p) (c * ↑q.den)).get ⋯)
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) c).get ⋯ + (multiplicity (↑p) q.num).get ⋯) -
      ↑((multiplicity (↑p) c).get ⋯ + (multiplicity ↑p ↑q.den).get ⋯)
tactic: rw [multiplicity.mul' (Nat.prime_iff_prime_int.1 hp.1),
    multiplicity.mul' (Nat.prime_iff_prime_int.1 hp.1)]
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) c).get ⋯ + (multiplicity (↑p) q.num).get ⋯) -
      ↑((multiplicity (↑p) c).get ⋯ + (multiplicity ↑p ↑q.den).get ⋯)
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity (↑p) q.num).get ⋯) -
      (↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity ↑p ↑q.den).get ⋯))
tactic: rw [Nat.cast_add, Nat.cast_add]
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity (↑p) q.num).get ⋯) -
      (↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity ↑p ↑q.den).get ⋯))
state_after: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity (↑p) q.num).get ⋯) -
      (↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity p q.den).get ⋯))
tactic: simp_rw [Int.natCast_multiplicity p q.den]
state_before: p✝ : ℕ
hp✝ : Fact (Nat.Prime p✝)
p : ℕ
hp : Fact (Nat.Prime p)
q : ℚ
n d : ℤ
hqz : q ≠ 0
qdf : q = n /. d
hd : d ≠ 0
c : ℤ
hc1 : n = c * q.num
hc2 : d = c * ↑q.den
⊢ ↑((multiplicity (↑p) q.num).get ⋯) - ↑((multiplicity p q.den).get ⋯) =
    ↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity (↑p) q.num).get ⋯) -
      (↑((multiplicity (↑p) c).get ⋯) + ↑((multiplicity p q.den).get ⋯))
state_after: no goals
tactic: ring