Theorem: MDifferentiableOn.apply_eq_of_isPreconnected_isCompact_isOpen
File: Mathlib/Geometry/Manifold/Complex.lean

tactic: wlog hb₀ : f b = 0 generalizing f
state_before: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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
state_after: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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⟩
state_before: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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
state_after: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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
state_before: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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
state_after: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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]
state_before: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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
state_after: no goals

tactic: simpa [sub_eq_zero] using this hd' (sub_self _)
state_before: 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✝² : CompactSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I 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
state_after: no goals