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 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.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.gsmul {α : 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_gsmul_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.gsmul_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.gsmul_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_with_period_zero {α : Type u_1} {β : Type u_2} (f : α → β) :

### 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 α] [add_group β] (h : c) :
(λ (x : α), -f (x + c)) = f
theorem function.antiperiodic.periodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] [add_group β] (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 α] [add_group β] (h : c) (n : ) :
((n) * 2 * c)
theorem function.antiperiodic.nat_odd_mul_antiperiodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [semiring α] [add_group β] (h : c) (n : ) :
((n) * 2 * c + c)
theorem function.antiperiodic.int_even_mul_periodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] [add_group β] (h : c) (n : ) :
((n) * 2 * c)
theorem function.antiperiodic.int_odd_mul_antiperiodic {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [ring α] [add_group β] (h : c) (n : ) :
((n) * 2 * c + c)
theorem function.antiperiodic.nat_mul_eq_of_eq_zero {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group β] (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 α] [add_group β] (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 α] [add_group β] (h : c) (x : α) :
f (x - c) = -f x
theorem function.antiperiodic.sub_eq' {α : Type u_1} {β : Type u_2} {f : α → β} {c x : α} [add_group β] (h : c) :
f (c - x) = -f (-x)
theorem function.antiperiodic.neg {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] [add_group β] (h : c) :
theorem function.antiperiodic.neg_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c : α} [add_group α] [add_group β] (h : c) :
f (-c) = -f 0
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 α] [add_group β] (h1 : c₁) (h2 : c₂) :
(c₁ + c₂)
theorem function.antiperiodic.sub {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group β] (h1 : c₁) (h2 : c₂) :
(c₁ - c₂)
theorem function.periodic.add_antiperiod {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group α] [add_group β] (h1 : c₁) (h2 : c₂) :
(c₁ + c₂)
theorem function.periodic.sub_antiperiod {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group β] (h1 : c₁) (h2 : c₂) :
(c₁ - c₂)
theorem function.periodic.add_antiperiod_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group α] [add_group β] (h1 : c₁) (h2 : c₂) :
f (c₁ + c₂) = -f 0
theorem function.periodic.sub_antiperiod_eq {α : Type u_1} {β : Type u_2} {f : α → β} {c₁ c₂ : α} [add_group β] (h1 : c₁) (h2 : c₂) :
f (c₁ - c₂) = -f 0
theorem function.antiperiodic.mul {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] [ring β] (hf : c) (hg : c) :
theorem function.antiperiodic.div {α : Type u_1} {β : Type u_2} {f g : α → β} {c : α} [has_add α] (hf : c) (hg : c) :