algebra.periodic

# Periodicity #

In this file we define and then prove facts about periodic and antiperiodic functions.

## Main definitions #

• function.periodic: A function f is periodic if ∀ x, f (x + c) = f x. f is referred to as periodic with period c or c-periodic.

• function.antiperiodic: A function f is antiperiodic if ∀ x, f (x + c) = -f x. f is referred to as antiperiodic with antiperiod c or c-antiperiodic.

Note that any c-antiperiodic function will necessarily also be 2*c-periodic.

## Tags #

period, periodic, periodicity, antiperiodic

### Periodicity #

@[simp]
def function.periodic {α : Type u_1} {β : Type u_2} [has_add α] (f : α → β) (c : α) :
Prop

A function f is said to be periodic with period c if for all x, f (x + c) = f x.

Equations
• = ∀ (x : α), f (x + c) = f x
theorem function.periodic.funext {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_add α] (h : c) :
(λ (x : α), f (x + c)) = f
theorem function.periodic.comp {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_add α] (h : c) (g : β → γ) :
theorem function.periodic.comp_add_hom {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_add α] [has_add γ] (h : c) (g : α) (g_inv : α → γ) (hg : g) :
function.periodic (f g) (g_inv c)
theorem function.periodic.mul {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] [has_mul β] (hf : c) (hg : c) :
theorem function.periodic.add {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] [has_add β] (hf : c) (hg : c) :
theorem function.periodic.sub {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] [has_sub β] (hf : c) (hg : c) :
theorem function.periodic.div {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] [has_div β] (hf : c) (hg : c) :
theorem list.periodic_sum {α : Type u_1} {β : Type u_2} {c : α} [has_add α] (l : list (α → β)) (hl : ∀ (f : α → β), f l) :
theorem list.periodic_prod {α : Type u_1} {β : Type u_2} {c : α} [has_add α] [comm_monoid β] (l : list (α → β)) (hl : ∀ (f : α → β), f l) :
theorem multiset.periodic_sum {α : Type u_1} {β : Type u_2} {c : α} [has_add α] (s : multiset (α → β)) (hs : ∀ (f : α → β), f s) :
theorem multiset.periodic_prod {α : Type u_1} {β : Type u_2} {c : α} [has_add α] [comm_monoid β] (s : multiset (α → β)) (hs : ∀ (f : α → β), f s) :
theorem finset.periodic_sum {α : Type u_1} {β : Type u_2} {c : α} [has_add α] {ι : Type u_3} {f : ι → α → β} (s : finset ι) (hs : ∀ (i : ι), i sfunction.periodic (f i) c) :
function.periodic (s.sum (λ (i : ι), f i)) c
theorem finset.periodic_prod {α : Type u_1} {β : Type u_2} {c : α} [has_add α] [comm_monoid β] {ι : Type u_3} {f : ι → α → β} (s : finset ι) (hs : ∀ (i : ι), i sfunction.periodic (f i) c) :
function.periodic (s.prod (λ (i : ι), f i)) c
theorem function.periodic.smul {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_add α] [ β] (h : c) (a : γ) :
theorem function.periodic.vadd {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_add α] [ β] (h : c) (a : γ) :
theorem function.periodic.const_smul {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [add_monoid α] [group γ] [ α] (h : c) (a : γ) :
function.periodic (λ (x : α), f (a x)) (a⁻¹ c)
theorem function.periodic.const_smul₀ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [ α] (h : c) (a : γ) :
function.periodic (λ (x : α), f (a x)) (a⁻¹ c)
theorem function.periodic.const_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (a * x)) (a⁻¹ * c)
theorem function.periodic.const_inv_smul {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [add_monoid α] [group γ] [ α] (h : c) (a : γ) :
function.periodic (λ (x : α), f (a⁻¹ x)) (a c)
theorem function.periodic.const_inv_smul₀ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [ α] (h : c) (a : γ) :
function.periodic (λ (x : α), f (a⁻¹ x)) (a c)
theorem function.periodic.const_inv_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (a⁻¹ * x)) (a * c)
theorem function.periodic.mul_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (x * a)) (c * a⁻¹)
theorem function.periodic.mul_const' {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (x * a)) (c / a)
theorem function.periodic.mul_const_inv {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (x * a⁻¹)) (c * a)
theorem function.periodic.div_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (x / a)) (c * a)
theorem function.periodic.add_period {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} (h1 : c₁) (h2 : c₂) :
(c₁ + c₂)
theorem function.periodic.sub_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (x : α) :
f (x - c) = f x
theorem function.periodic.sub_eq' {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} (h : c) :
f (c - x) = f (-x)
theorem function.periodic.neg {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) :
(-c)
theorem function.periodic.sub_period {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} (h1 : c₁) (h2 : c₂) :
(c₁ - c₂)
theorem function.periodic.const_add {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (a + x)) c
theorem function.periodic.add_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (x + a)) c
theorem function.periodic.const_sub {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (a - x)) c
theorem function.periodic.sub_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.periodic (λ (x : α), f (x - a)) c
theorem function.periodic.nsmul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_monoid α] (h : c) (n : ) :
(n c)
theorem function.periodic.nat_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] (h : c) (n : ) :
(n * c)
theorem function.periodic.neg_nsmul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (n : ) :
(-(n c))
theorem function.periodic.neg_nat_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] (h : c) (n : ) :
(-(n * c))
theorem function.periodic.sub_nsmul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [add_group α] (h : c) (n : ) :
f (x - n c) = f x
theorem function.periodic.sub_nat_mul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [ring α] (h : c) (n : ) :
f (x - n * c) = f x
theorem function.periodic.nsmul_sub_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} (h : c) (n : ) :
f (n c - x) = f (-x)
theorem function.periodic.nat_mul_sub_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [ring α] (h : c) (n : ) :
f (n * c - x) = f (-x)
theorem function.periodic.zsmul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (n : ) :
(n c)
theorem function.periodic.int_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] (h : c) (n : ) :
(n * c)
theorem function.periodic.sub_zsmul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [add_group α] (h : c) (n : ) :
f (x - n c) = f x
theorem function.periodic.sub_int_mul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [ring α] (h : c) (n : ) :
f (x - n * c) = f x
theorem function.periodic.zsmul_sub_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} (h : c) (n : ) :
f (n c - x) = f (-x)
theorem function.periodic.int_mul_sub_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [ring α] (h : c) (n : ) :
f (n * c - x) = f (-x)
theorem function.periodic.eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) :
f c = f 0
theorem function.periodic.neg_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) :
f (-c) = f 0
theorem function.periodic.nsmul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_monoid α] (h : c) (n : ) :
f (n c) = f 0
theorem function.periodic.nat_mul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] (h : c) (n : ) :
f (n * c) = f 0
theorem function.periodic.zsmul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (n : ) :
f (n c) = f 0
theorem function.periodic.int_mul_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] (h : c) (n : ) :
f (n * c) = f 0
theorem function.periodic.exists_mem_Ico₀ {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [archimedean α] (h : c) (hc : 0 < c) (x : α) :
∃ (y : α) (H : y c), f x = f y

If a function f is periodic with positive period c, then for all x there exists some y ∈ Ico 0 c such that f x = f y.

theorem function.periodic.exists_mem_Ico {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [archimedean α] (h : c) (hc : 0 < c) (x a : α) :
∃ (y : α) (H : y (a + c)), f x = f y

If a function f is periodic with positive period c, then for all x there exists some y ∈ Ico a (a + c) such that f x = f y.

theorem function.periodic.exists_mem_Ioc {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [archimedean α] (h : c) (hc : 0 < c) (x a : α) :
∃ (y : α) (H : y (a + c)), f x = f y

If a function f is periodic with positive period c, then for all x there exists some y ∈ Ioc a (a + c) such that f x = f y.

theorem function.periodic.image_Ioc {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [archimedean α] (h : c) (hc : 0 < c) (a : α) :
f '' (a + c) =
theorem function.periodic_with_period_zero {α : Type u_1} {β : Type u_2} (f : α → β) :
theorem function.periodic.map_vadd_zmultiples {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (hf : c) (a : ) (x : α) :
f (a +ᵥ x) = f x
theorem function.periodic.map_vadd_multiples {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (hf : c) (a : ) (x : α) :
f (a +ᵥ x) = f x
def function.periodic.lift {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (x : α ) :
β

Lift a periodic function to a function from the quotient group.

Equations
@[simp]
theorem function.periodic.lift_coe {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (a : α) :
h.lift a = f a

### Antiperiodicity #

@[simp]
def function.antiperiodic {α : Type u_1} {β : Type u_2} [has_add α] [has_neg β] (f : α → β) (c : α) :
Prop

A function f is said to be antiperiodic with antiperiod c if for all x, f (x + c) = -f x.

Equations
• = ∀ (x : α), f (x + c) = -f x
theorem function.antiperiodic.funext {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_add α] [has_neg β] (h : c) :
(λ (x : α), f (x + c)) = -f
theorem function.antiperiodic.funext' {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_add α] (h : c) :
(λ (x : α), -f (x + c)) = f
theorem function.antiperiodic.periodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] (h : c) :
(2 * c)

If a function is antiperiodic with antiperiod c, then it is also periodic with period 2 * c.

theorem function.antiperiodic.eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) :
f c = -f 0
theorem function.antiperiodic.nat_even_mul_periodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] (h : c) (n : ) :
(n * (2 * c))
theorem function.antiperiodic.nat_odd_mul_antiperiodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] (h : c) (n : ) :
(n * (2 * c) + c)
theorem function.antiperiodic.int_even_mul_periodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] (h : c) (n : ) :
(n * (2 * c))
theorem function.antiperiodic.int_odd_mul_antiperiodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] (h : c) (n : ) :
(n * (2 * c) + c)
theorem function.antiperiodic.nat_mul_eq_of_eq_zero {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (hi : f 0 = 0) (n : ) :
f (n * c) = 0
theorem function.antiperiodic.int_mul_eq_of_eq_zero {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [comm_ring α] (h : c) (hi : f 0 = 0) (n : ) :
f (n * c) = 0
theorem function.antiperiodic.sub_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) (x : α) :
f (x - c) = -f x
theorem function.antiperiodic.sub_eq' {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [has_neg β] (h : c) :
f (c - x) = -f (-x)
theorem function.antiperiodic.neg {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) :
theorem function.antiperiodic.neg_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] (h : c) :
f (-c) = -f 0
theorem function.antiperiodic.const_add {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) (a : α) :
function.antiperiodic (λ (x : α), f (a + x)) c
theorem function.antiperiodic.add_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) (a : α) :
function.antiperiodic (λ (x : α), f (x + a)) c
theorem function.antiperiodic.const_sub {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} (h : c) (a : α) :
function.antiperiodic (λ (x : α), f (a - x)) c
theorem function.antiperiodic.sub_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) (a : α) :
function.antiperiodic (λ (x : α), f (x - a)) c
theorem function.antiperiodic.smul {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_add α] [monoid γ] [add_group β] [ β] (h : c) (a : γ) :
theorem function.antiperiodic.const_smul {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [add_monoid α] [has_neg β] [group γ] [ α] (h : c) (a : γ) :
function.antiperiodic (λ (x : α), f (a x)) (a⁻¹ c)
theorem function.antiperiodic.const_smul₀ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_neg β] [ α] (h : c) {a : γ} (ha : a 0) :
function.antiperiodic (λ (x : α), f (a x)) (a⁻¹ c)
theorem function.antiperiodic.const_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) {a : α} (ha : a 0) :
function.antiperiodic (λ (x : α), f (a * x)) (a⁻¹ * c)
theorem function.antiperiodic.const_inv_smul {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [add_monoid α] [has_neg β] [group γ] [ α] (h : c) (a : γ) :
function.antiperiodic (λ (x : α), f (a⁻¹ x)) (a c)
theorem function.antiperiodic.const_inv_smul₀ {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : α → β} {c : α} [has_neg β] [ α] (h : c) {a : γ} (ha : a 0) :
function.antiperiodic (λ (x : α), f (a⁻¹ x)) (a c)
theorem function.antiperiodic.const_inv_mul {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) {a : α} (ha : a 0) :
function.antiperiodic (λ (x : α), f (a⁻¹ * x)) (a * c)
theorem function.antiperiodic.mul_const {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) {a : α} (ha : a 0) :
function.antiperiodic (λ (x : α), f (x * a)) (c * a⁻¹)
theorem function.antiperiodic.mul_const' {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) {a : α} (ha : a 0) :
function.antiperiodic (λ (x : α), f (x * a)) (c / a)
theorem function.antiperiodic.mul_const_inv {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) {a : α} (ha : a 0) :
function.antiperiodic (λ (x : α), f (x * a⁻¹)) (c * a)
theorem function.antiperiodic.div_inv {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [has_neg β] (h : c) {a : α} (ha : a 0) :
function.antiperiodic (λ (x : α), f (x / a)) (c * a)
theorem function.antiperiodic.add {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group α] (h1 : c₁) (h2 : c₂) :
(c₁ + c₂)
theorem function.antiperiodic.sub {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} (h1 : c₁) (h2 : c₂) :
(c₁ - c₂)
theorem function.periodic.add_antiperiod {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group α] [has_neg β] (h1 : c₁) (h2 : c₂) :
(c₁ + c₂)
theorem function.periodic.sub_antiperiod {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} (h1 : c₁) (h2 : c₂) :
(c₁ - c₂)
theorem function.periodic.add_antiperiod_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group α] [has_neg β] (h1 : c₁) (h2 : c₂) :
f (c₁ + c₂) = -f 0
theorem function.periodic.sub_antiperiod_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} (h1 : c₁) (h2 : c₂) :
f (c₁ - c₂) = -f 0
theorem function.antiperiodic.mul {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] [has_mul β] (hf : c) (hg : c) :
theorem function.antiperiodic.div {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] (hf : c) (hg : c) :
theorem int.fract_periodic (α : Type u_1) [floor_ring α] :