Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit e245b24

Browse files
committed
feat(data/nat/prime, number_theory/padics/padic_norm): list of prime_pow_factors, valuation of prime power (#8473)
Co-authored-by: ineswright <52750254+ineswright@users.noreply.github.com>
1 parent 1b96e97 commit e245b24

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/data/nat/prime.lean

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,16 @@ have hn : 0 < n := nat.pos_of_ne_zero $ λ h, begin
664664
end,
665665
perm_of_prod_eq_prod (by rwa prod_factors hn) h₂ (@prime_of_mem_factors _)
666666

667+
lemma prime.factors_pow {p : ℕ} (hp : p.prime) (n : ℕ) :
668+
(p ^ n).factors = list.repeat p n :=
669+
begin
670+
symmetry,
671+
rw ← list.repeat_perm,
672+
apply nat.factors_unique (list.prod_repeat p n),
673+
{ intros q hq,
674+
rwa eq_of_mem_repeat hq },
675+
end
676+
667677
end
668678

669679
lemma succ_dvd_or_succ_dvd_of_succ_sum_dvd_mul {p : ℕ} (p_prime : prime p) {m n k l : ℕ}

src/number_theory/padics/padic_norm.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,15 @@ begin
373373
exact_mod_cast split_frac, }
374374
end
375375

376+
/-- A version of `padic_val_rat.pow` for `padic_val_nat` -/
377+
protected lemma pow (p q n : ℕ) [fact p.prime] (hq : q ≠ 0) :
378+
padic_val_nat p (q ^ n) = n * padic_val_nat p q :=
379+
begin
380+
apply @nat.cast_injective ℤ,
381+
push_cast,
382+
exact padic_val_rat.pow _ (cast_ne_zero.mpr hq),
383+
end
384+
376385
end padic_val_nat
377386

378387
section padic_val_nat
@@ -469,6 +478,12 @@ begin
469478
rwa nat.coprime_primes hp.1 hq.1, },
470479
end
471480

481+
@[simp] lemma padic_val_nat_self (p : ℕ) [fact p.prime] : padic_val_nat p p = 1 :=
482+
by simp [padic_val_nat_def (fact.out p.prime).ne_zero]
483+
484+
@[simp] lemma padic_val_nat_prime_pow (p n : ℕ) [fact p.prime] : padic_val_nat p (p ^ n) = n :=
485+
by rw [padic_val_nat.pow p _ _ (fact.out p.prime).ne_zero, padic_val_nat_self p, mul_one]
486+
472487
open_locale big_operators
473488

474489
lemma prod_pow_prime_padic_val_nat (n : nat) (hn : n ≠ 0) (m : nat) (pr : n < m) :

0 commit comments

Comments
 (0)