Theorem: Complex.circleIntegral_sub_center_inv_smul_eq_of_differentiable_on_annulus_off_countable
File: Mathlib/Analysis/Complex/CauchyIntegral.lean

tactic: set A := closedBall c R \ ball c r
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
r R : ℝ
h0 : 0 < r
hle : r ≤ R
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
hc : ContinuousOn f (closedBall c R \ ball c r)
hd : ∀ (z : ℂ), z ∈ (ball c R \ closedBall c r) \ s → DifferentiableAt ℂ f z
⊢ (∮ (z : ℂ) in C(c, R), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, r), (z - c)⁻¹ • f z

tactic: obtain ⟨a, rfl⟩ : ∃ a, Real.exp a = r
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
r R : ℝ
h0 : 0 < r
hle : r ≤ R
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
hd : ∀ (z : ℂ), z ∈ (ball c R \ closedBall c r) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c R \ ball c r
hc : ContinuousOn f A
⊢ (∮ (z : ℂ) in C(c, R), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, r), (z - c)⁻¹ • f z

tactic: exact ⟨Real.log r, Real.exp_log h0⟩
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
r R : ℝ
h0 : 0 < r
hle : r ≤ R
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
hd : ∀ (z : ℂ), z ∈ (ball c R \ closedBall c r) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c R \ ball c r
hc : ContinuousOn f A
⊢ ∃ a, Real.exp a = r

case intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
R : ℝ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
hle : Real.exp a ≤ R
hd : ∀ (z : ℂ), z ∈ (ball c R \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c R \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ (∮ (z : ℂ) in C(c, R), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, Real.exp a), (z - c)⁻¹ • f z

tactic: obtain ⟨b, rfl⟩ : ∃ b, Real.exp b = R
state_before: case intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
R : ℝ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
hle : Real.exp a ≤ R
hd : ∀ (z : ℂ), z ∈ (ball c R \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c R \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ (∮ (z : ℂ) in C(c, R), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, Real.exp a), (z - c)⁻¹ • f z

tactic: exact ⟨Real.log R, Real.exp_log (h0.trans_le hle)⟩
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
R : ℝ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
hle : Real.exp a ≤ R
hd : ∀ (z : ℂ), z ∈ (ball c R \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c R \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ ∃ b, Real.exp b = R

case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : Real.exp a ≤ Real.exp b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ (∮ (z : ℂ) in C(c, Real.exp b), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, Real.exp a), (z - c)⁻¹ • f z

tactic: rw [Real.exp_le_exp] at hle
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : Real.exp a ≤ Real.exp b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ (∮ (z : ℂ) in C(c, Real.exp b), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, Real.exp a), (z - c)⁻¹ • f z

tactic: suffices
  (∫ θ in (0)..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ θ in (0)..2 * π, I • f (circleMap c (Real.exp a) θ) by
  simpa only [circleIntegral, add_sub_cancel', ofReal_exp, ← exp_add, smul_smul, ←
    div_eq_mul_inv, mul_div_cancel_left _ (circleMap_ne_center (Real.exp_pos _).ne'),
    circleMap_sub_center, deriv_circleMap]
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ (∮ (z : ℂ) in C(c, Real.exp b), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, Real.exp a), (z - c)⁻¹ • f z

tactic: set R := [[a, b]] ×ℂ [[0, 2 * π]]
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: have hdg : Differentiable ℂ g := differentiable_exp.const_add _
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: replace hs : (g ⁻¹' s).Countable := (hs.preimage (add_right_injective c)).preimage_cexp
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: have h_maps : MapsTo g R A := by rintro z ⟨h, -⟩; simpa [dist_eq, abs_exp, hle] using h.symm
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: replace hc : ContinuousOn (f ∘ g) R
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: exact hc.comp hdg.continuous.continuousOn h_maps
state_before: case hc
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
⊢ ContinuousOn (f ∘ g) R

case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
hc : ContinuousOn (f ∘ g) R
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: replace hd :
  ∀ z ∈ Ioo (min a b) (max a b) ×ℂ Ioo (min 0 (2 * π)) (max 0 (2 * π)) \ g ⁻¹' s,
    DifferentiableAt ℂ (f ∘ g) z
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
hc : ContinuousOn (f ∘ g) R
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: simpa [circleMap, exp_periodic _, sub_eq_zero, ← exp_add] using
  integral_boundary_rect_eq_zero_of_differentiable_on_off_countable _ ⟨a, 0⟩ ⟨b, 2 * π⟩ _ hs hc hd
state_before: case intro.intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
hc : ContinuousOn (f ∘ g) R
hd :
  ∀ (z : ℂ), z ∈ Ioo (min a b) (max a b) ×ℂ Ioo (min 0 (2 * π)) (max 0 (2 * π)) \ g ⁻¹' s → DifferentiableAt ℂ (f ∘ g) z
⊢ (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)

tactic: simpa only [circleIntegral, add_sub_cancel', ofReal_exp, ← exp_add, smul_smul, ←
  div_eq_mul_inv, mul_div_cancel_left _ (circleMap_ne_center (Real.exp_pos _).ne'),
  circleMap_sub_center, deriv_circleMap]
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
hs : Set.Countable s
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
this :
  (∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp b) θ)) =
    ∫ (θ : ℝ) in 0 ..2 * π, I • f (circleMap c (Real.exp a) θ)
⊢ (∮ (z : ℂ) in C(c, Real.exp b), (z - c)⁻¹ • f z) = ∮ (z : ℂ) in C(c, Real.exp a), (z - c)⁻¹ • f z

tactic: rintro z ⟨h, -⟩
state_before: E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
⊢ MapsTo g R A

tactic: simpa [dist_eq, abs_exp, hle] using h.symm
state_before: case intro
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
hc : ContinuousOn f A
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
z : ℂ
h : z ∈ re ⁻¹' [[a, b]]
⊢ g z ∈ A

tactic: refine' fun z hz => (hd (g z) ⟨_, hz.2⟩).comp z (hdg _)
state_before: case hd
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
hc : ContinuousOn (f ∘ g) R
⊢ ∀ (z : ℂ), z ∈ Ioo (min a b) (max a b) ×ℂ Ioo (min 0 (2 * π)) (max 0 (2 * π)) \ g ⁻¹' s → DifferentiableAt ℂ (f ∘ g) z

tactic: simpa [dist_eq, abs_exp, hle, and_comm] using hz.1.1
state_before: case hd
E : Type u
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
c : ℂ
f : ℂ → E
s : Set ℂ
a : ℝ
h0 : 0 < Real.exp a
b : ℝ
hle : a ≤ b
hd : ∀ (z : ℂ), z ∈ (ball c (Real.exp b) \ closedBall c (Real.exp a)) \ s → DifferentiableAt ℂ f z
A : Set ℂ := closedBall c (Real.exp b) \ ball c (Real.exp a)
R : Set ℂ := [[a, b]] ×ℂ [[0, 2 * π]]
g : ℂ → ℂ := (fun x x_1 => x + x_1) c ∘ exp
hdg : Differentiable ℂ g
hs : Set.Countable (g ⁻¹' s)
h_maps : MapsTo g R A
hc : ContinuousOn (f ∘ g) R
z : ℂ
hz : z ∈ Ioo (min a b) (max a b) ×ℂ Ioo (min 0 (2 * π)) (max 0 (2 * π)) \ g ⁻¹' s
⊢ g z ∈ ball c (Real.exp b) \ closedBall c (Real.exp a)