Module docstring
{"# Periodic Functions on ℕ
This file identifies a few functions on ℕ which are periodic, and also proves a lemma about
periodic predicates which helps determine their cardinality when filtering intervals over them.
"}
{"# Periodic Functions on ℕ
This file identifies a few functions on ℕ which are periodic, and also proves a lemma about
periodic predicates which helps determine their cardinality when filtering intervals over them.
"}
Nat.periodic_gcd
theorem
(a : ℕ) : Periodic (gcd a) a
theorem periodic_gcd (a : ℕ) : Periodic (gcd a) a := by
simp only [forall_const, gcd_add_self_right, eq_self_iff_true, Periodic]
Nat.periodic_coprime
theorem
(a : ℕ) : Periodic (Coprime a) a
theorem periodic_coprime (a : ℕ) : Periodic (Coprime a) a := by
simp only [coprime_add_self_right, forall_const, eq_iff_iff, Periodic]
Nat.periodic_mod
theorem
(a : ℕ) : Periodic (fun n => n % a) a
theorem periodic_mod (a : ℕ) : Periodic (fun n => n % a) a := by
simp only [forall_const, eq_self_iff_true, add_mod_right, Periodic]
Function.Periodic.map_mod_nat
theorem
{α : Type*} {f : ℕ → α} {a : ℕ} (hf : Periodic f a) : ∀ n, f (n % a) = f n
theorem _root_.Function.Periodic.map_mod_nat {α : Type*} {f : ℕ → α} {a : ℕ} (hf : Periodic f a) :
∀ n, f (n % a) = f n := fun n => by
conv_rhs => rw [← Nat.mod_add_div n a, mul_comm, ← Nat.nsmul_eq_mul, hf.nsmul]
Nat.filter_multiset_Ico_card_eq_of_periodic
theorem
(n a : ℕ) (p : ℕ → Prop) [DecidablePred p] (pp : Periodic p a) : card (filter p (Ico n (n + a))) = a.count p
/-- An interval of length `a` filtered over a periodic predicate of period `a` has cardinality
equal to the number naturals below `a` for which `p a` is true. -/
theorem filter_multiset_Ico_card_eq_of_periodic (n a : ℕ) (p : ℕ → Prop) [DecidablePred p]
(pp : Periodic p a) : card (filter p (Ico n (n + a))) = a.count p := by
rw [count_eq_card_filter_range, Finset.card, Finset.filter_val, Finset.range_val, ←
multiset_Ico_map_mod n, ← map_count_True_eq_filter_card, ← map_count_True_eq_filter_card,
map_map]
congr; funext n
exact (Function.Periodic.map_mod_nat pp n).symm
Nat.filter_Ico_card_eq_of_periodic
theorem
(n a : ℕ) (p : ℕ → Prop) [DecidablePred p] (pp : Periodic p a) : ((Ico n (n + a)).filter p).card = a.count p
/-- An interval of length `a` filtered over a periodic predicate of period `a` has cardinality
equal to the number naturals below `a` for which `p a` is true. -/
theorem filter_Ico_card_eq_of_periodic (n a : ℕ) (p : ℕ → Prop) [DecidablePred p]
(pp : Periodic p a) : ((Ico n (n + a)).filter p).card = a.count p :=
filter_multiset_Ico_card_eq_of_periodic n a p pp