nevanlinna/Nevanlinna/periodic_integrability.lean

102 lines
3.4 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import Mathlib.MeasureTheory.Integral.Periodic
theorem periodic_integrability₁
{E : Type u_1} [NormedAddCommGroup E] [NormedSpace E]
{f : → E}
{t T : }
{n : }
(h₁f : Function.Periodic f T)
(h₂f : IntervalIntegrable f MeasureTheory.volume t (t + T)) :
IntervalIntegrable f MeasureTheory.volume t (t + n * T) := by
induction' n with n hn
simp
apply IntervalIntegrable.trans (b := t + n * T)
exact hn
let A := IntervalIntegrable.comp_sub_right h₂f (n * T)
have : f = fun x ↦ f (x - n * T) := by simp [Function.Periodic.sub_nat_mul_eq h₁f n]
simp_rw [← this] at A
have : (t + T + ↑n * T) = (t + ↑(n + 1) * T) := by simp; ring
simp_rw [this] at A
exact A
theorem periodic_integrability₂
{E : Type u_1} [NormedAddCommGroup E] [NormedSpace E]
{f : → E}
{t T : }
{n : }
(h₁f : Function.Periodic f T)
(h₂f : IntervalIntegrable f MeasureTheory.volume t (t + T)) :
IntervalIntegrable f MeasureTheory.volume (t - n * T) t := by
induction' n with n hn
simp
--
apply IntervalIntegrable.trans (b := t - n * T)
--
have A := IntervalIntegrable.comp_add_right h₂f (((n + 1): ) * T)
have : f = fun x ↦ f (x + ((n + 1) : ) * T) := by
funext x
have : x = x + ↑(n + 1) * T - ↑(n + 1) * T := by ring
nth_rw 1 [this]
rw [Function.Periodic.sub_nat_mul_eq h₁f]
simp_rw [← this] at A
have : (t + T - ↑(n + 1) * T) = (t - ↑n * T) := by simp; ring
simp_rw [this] at A
exact A
--
exact hn
theorem periodic_integrability₃
{E : Type u_1} [NormedAddCommGroup E] [NormedSpace E]
{f : → E}
{t T : }
{n₁ n₂ : }
(h₁f : Function.Periodic f T)
(h₂f : IntervalIntegrable f MeasureTheory.volume t (t + T)) :
IntervalIntegrable f MeasureTheory.volume (t - n₁ * T) (t + n₂ * T) := by
apply IntervalIntegrable.trans (b := t)
exact periodic_integrability₂ h₁f h₂f
exact periodic_integrability₁ h₁f h₂f
theorem periodic_integrability4
{E : Type u_1} [NormedAddCommGroup E] [NormedSpace E]
{f : → E}
{t T : }
{a₁ a₂ : }
(h₁f : Function.Periodic f T)
(hT : 0 < T)
(h₂f : IntervalIntegrable f MeasureTheory.volume t (t + T)) :
IntervalIntegrable f MeasureTheory.volume a₁ a₂ := by
obtain ⟨n₁, hn₁⟩ : ∃ n₁ : , t - n₁ * T ≤ min a₁ a₂ := by
obtain ⟨n₁, hn₁⟩ := exists_nat_ge ((t -min a₁ a₂) / T)
use n₁
rw [sub_le_iff_le_add]
rw [div_le_iff₀ hT] at hn₁
rw [sub_le_iff_le_add] at hn₁
rw [add_comm]
exact hn₁
obtain ⟨n₂, hn₂⟩ : ∃ n₂ : , max a₁ a₂ ≤ t + n₂ * T := by
obtain ⟨n₂, hn₂⟩ := exists_nat_ge ((max a₁ a₂ - t) / T)
use n₂
rw [← sub_le_iff_le_add]
rw [div_le_iff₀ hT] at hn₂
linarith
have : Set.uIcc a₁ a₂ ⊆ Set.uIcc (t - n₁ * T) (t + n₂ * T) := by
apply Set.uIcc_subset_uIcc_iff_le.mpr
constructor
· calc min (t - ↑n₁ * T) (t + ↑n₂ * T)
_ ≤ (t - ↑n₁ * T) := by exact min_le_left (t - ↑n₁ * T) (t + ↑n₂ * T)
_ ≤ min a₁ a₂ := by exact hn₁
· calc max a₁ a₂
_ ≤ t + n₂ * T := by exact hn₂
_ ≤ max (t - ↑n₁ * T) (t + ↑n₂ * T) := by exact le_max_right (t - ↑n₁ * T) (t + ↑n₂ * T)
apply IntervalIntegrable.mono_set _ this
exact periodic_integrability₃ h₁f h₂f