-- Mathlib/Geometry/Manifold/Complex.lean
theorem apply_eq_of_isPreconnected_isCompact_isOpen {f : M → F} {U : Set M} {a b : M}
    (hd : MDifferentiableOn I 𝓘(ℂ, F) f U) (hpc : IsPreconnected U) (hc : IsCompact U)
    (ho : IsOpen U) (ha : a ∈ U) (hb : b ∈ U) : f a = f b

Proof state:
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
f : M → F
U : Set M
a b : M
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hpc : IsPreconnected U
hc : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
this : ∀ {f : M → F}, MDifferentiableOn I 𝓘(ℂ, F) f U → f b = 0 → f a = f b
hb₀ : ¬f b = 0
hd' : MDifferentiableOn I 𝓘(ℂ, F) (fun x => f x - f b) U
⊢ f a = f b

Tactic:
simpa [sub_eq_zero] using this hd' (sub_self _)

Result:
no goals

Proof state:
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
U : Set M
a b : M
hpc : IsPreconnected U
hc : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
f : M → F
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hb₀ : f b = 0
⊢ f a = f b

Tactic:
rcases hc.exists_isMaxOn ⟨a, ha⟩ hd.continuousOn.norm with ⟨c, hcU, hc⟩

Result:
case intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
U : Set M
a b : M
hpc : IsPreconnected U
hc✝ : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
f : M → F
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hb₀ : f b = 0
c : M
hcU : c ∈ U
hc : IsMaxOn (fun x => ‖f x‖) U c
⊢ f a = f b

Proof state:
case intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
U : Set M
a b : M
hpc : IsPreconnected U
hc✝ : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
f : M → F
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hb₀ : f b = 0
c : M
hcU : c ∈ U
hc : IsMaxOn (fun x => ‖f x‖) U c
⊢ f a = f b

Tactic:
have : ∀ x ∈ U, ‖f x‖ = ‖f c‖ :=
  norm_eqOn_of_isPreconnected_of_isMaxOn hd hpc ho hcU hc

Result:
case intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
U : Set M
a b : M
hpc : IsPreconnected U
hc✝ : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
f : M → F
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hb₀ : f b = 0
c : M
hcU : c ∈ U
hc : IsMaxOn (fun x => ‖f x‖) U c
this : ∀ x ∈ U, ‖f x‖ = ‖f c‖
⊢ f a = f b

Proof state:
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
f : M → F
U : Set M
a b : M
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hpc : IsPreconnected U
hc : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
⊢ f a = f b

Tactic:
wlog hb₀ : f b = 0 generalizing f

Result:
case inr
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
f : M → F
U : Set M
a b : M
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hpc : IsPreconnected U
hc : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
this : ∀ {f : M → F}, MDifferentiableOn I 𝓘(ℂ, F) f U → f b = 0 → f a = f b
hb₀ : ¬f b = 0
⊢ f a = f b

E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
U : Set M
a b : M
hpc : IsPreconnected U
hc : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
f : M → F
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hb₀ : f b = 0
⊢ f a = f b

Proof state:
case intro.intro
E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℂ E
F : Type u_2
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace ℂ F
H : Type u_3
inst✝⁴ : TopologicalSpace H
I : ModelWithCorners ℂ E H
inst✝³ : I.Boundaryless
M : Type u_4
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : IsManifold I 1 M
U : Set M
a b : M
hpc : IsPreconnected U
hc✝ : IsCompact U
ho : IsOpen U
ha : a ∈ U
hb : b ∈ U
f : M → F
hd : MDifferentiableOn I 𝓘(ℂ, F) f U
hb₀ : f b = 0
c : M
hcU : c ∈ U
hc : IsMaxOn (fun x => ‖f x‖) U c
this : ∀ x ∈ U, ‖f x‖ = ‖f c‖
⊢ f a = f b

Tactic:
rw [hb₀, ← norm_eq_zero, this a ha, ← this b hb, hb₀, norm_zero]

Result:
no goals