Theorem: StrongFEPair.functional_equation
File: Mathlib/NumberTheory/LSeries/AbstractFuncEq.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
⊢ P.Λ (↑P.k - s) = P.ε • P.symm.Λ s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: rw [P.Λ_eq, P.symm_Λ_eq]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (t ^ (-1))) (-s) = |(-1)|⁻¹ • mellin P.g (-s / ↑(-1))
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: have step1 := mellin_comp_rpow P.g (-s) (-1)
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (t ^ (-1))) (-s) = |(-1)|⁻¹ • mellin P.g (-s / ↑(-1))
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: simp_rw [abs_neg, abs_one, inv_one, one_smul, ofReal_neg, ofReal_one, div_neg, div_one, neg_neg,
    rpow_neg_one, ← one_div] at step1
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin (fun t => P.g (1 / t)) (↑P.k - s + -↑P.k)
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: have step2 := mellin_cpow_smul (fun t ↦ P.g (1 / t)) (P.k - s) (-P.k)
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin (fun t => P.g (1 / t)) (↑P.k - s + -↑P.k)
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: rw [← sub_eq_add_neg, sub_right_comm, sub_self, zero_sub, step1] at step2
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 :
  mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) =
    P.ε • mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s)
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: have step3 := mellin_const_smul (fun t ↦ (t : ℂ) ^ (-P.k : ℂ) • P.g (1 / t)) (P.k - s) P.ε
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 :
  mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) =
    P.ε • mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s)
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
tactic: rw [step2] at step3
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
⊢ mellin P.f (↑P.k - s) = P.ε • mellin P.g s
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
⊢ mellin P.f (↑P.k - s) = mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s)
tactic: rw [← step3]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
⊢ mellin P.f (↑P.k - s) = mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s)
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = ↑t ^ (↑P.k - s - 1) • (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) t
tactic: refine setIntegral_congr measurableSet_Ioi (fun t ht ↦ ?_)
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = ↑t ^ (↑P.k - s - 1) • (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) t
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = (↑t ^ (↑P.k - s - 1) * (P.ε * (↑t ^ (-↑P.k) * (P.ε⁻¹ * ↑(t ^ P.k))))) • P.f t
tactic: simp_rw [P.h_feq' t ht, ← mul_smul]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = (↑t ^ (↑P.k - s - 1) * (P.ε * (↑t ^ (-↑P.k) * (P.ε⁻¹ * ↑(t ^ P.k))))) • P.f t
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = (↑t ^ (↑P.k - s - 1) * (P.ε * ((↑t ^ ↑P.k)⁻¹ * (P.ε⁻¹ * ↑t ^ ↑P.k)))) • P.f t
tactic: rw [cpow_neg, ofReal_cpow (le_of_lt ht)]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = (↑t ^ (↑P.k - s - 1) * (P.ε * ((↑t ^ ↑P.k)⁻¹ * (P.ε⁻¹ * ↑t ^ ↑P.k)))) • P.f t
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
this : ↑t ^ ↑P.k ≠ 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = (↑t ^ (↑P.k - s - 1) * (P.ε * ((↑t ^ ↑P.k)⁻¹ * (P.ε⁻¹ * ↑t ^ ↑P.k)))) • P.f t
tactic: have : (t : ℂ) ^ (P.k : ℂ) ≠ 0 := by
    simpa only [← ofReal_cpow (le_of_lt ht), ofReal_ne_zero] using (rpow_pos_of_pos ht _).ne'
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : StrongFEPair E
s : ℂ
step1 : mellin (fun t => P.g (1 / t)) (-s) = mellin P.g s
step2 : mellin (fun t => ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = mellin P.g s
step3 : mellin (fun t => P.ε • ↑t ^ (-↑P.k) • P.g (1 / t)) (↑P.k - s) = P.ε • mellin P.g s
t : ℝ
ht : t ∈ Ioi 0
this : ↑t ^ ↑P.k ≠ 0
⊢ ↑t ^ (↑P.k - s - 1) • P.f t = (↑t ^ (↑P.k - s - 1) * (P.ε * ((↑t ^ ↑P.k)⁻¹ * (P.ε⁻¹ * ↑t ^ ↑P.k)))) • P.f t
state_after: no goals
tactic: field_simp [P.hε]