[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
⊢ ∃ f, ↑f x₀ = 1 ∧ ∀ (x : E), x ∈ s → ↑f x < 1
[PROOFSTEP]
let f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (ne_of_mem_of_not_mem hs₀ hx₀).symm
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
⊢ ∃ f, ↑f x₀ = 1 ∧ ∀ (x : E), x ∈ s → ↑f x < 1
[PROOFSTEP]
have :=
  exists_extension_of_le_sublinear f (gauge s) (fun c hc => gauge_smul_of_nonneg hc.le)
    (gauge_add_le hs₁ <| absorbent_nhds_zero <| hs₂.mem_nhds hs₀) ?_
[GOAL]
case refine_2
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
this : ∃ g, (∀ (x : { x // x ∈ f.domain }), ↑g ↑x = ↑f x) ∧ ∀ (x : E), ↑g x ≤ gauge s x
⊢ ∃ f, ↑f x₀ = 1 ∧ ∀ (x : E), x ∈ s → ↑f x < 1
case refine_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
⊢ ∀ (x : { x // x ∈ f.domain }), ↑f x ≤ gauge s ↑x
[PROOFSTEP]
obtain ⟨φ, hφ₁, hφ₂⟩ := this
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
⊢ ∃ f, ↑f x₀ = 1 ∧ ∀ (x : E), x ∈ s → ↑f x < 1
case refine_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
⊢ ∀ (x : { x // x ∈ f.domain }), ↑f x ≤ gauge s ↑x
[PROOFSTEP]
have hφ₃ : φ x₀ = 1 := by
  rw [← f.domain.coe_mk x₀ (Submodule.mem_span_singleton_self _), hφ₁, LinearPMap.mkSpanSingleton'_apply_self]
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
⊢ ↑φ x₀ = 1
[PROOFSTEP]
rw [← f.domain.coe_mk x₀ (Submodule.mem_span_singleton_self _), hφ₁, LinearPMap.mkSpanSingleton'_apply_self]
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
⊢ ∃ f, ↑f x₀ = 1 ∧ ∀ (x : E), x ∈ s → ↑f x < 1
case refine_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
⊢ ∀ (x : { x // x ∈ f.domain }), ↑f x ≤ gauge s ↑x
[PROOFSTEP]
have hφ₄ : ∀ x ∈ s, φ x < 1 := fun x hx => (hφ₂ x).trans_lt (gauge_lt_one_of_mem_of_open hs₂ hx)
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
hφ₄ : ∀ (x : E), x ∈ s → ↑φ x < 1
⊢ ∃ f, ↑f x₀ = 1 ∧ ∀ (x : E), x ∈ s → ↑f x < 1
[PROOFSTEP]
refine' ⟨⟨φ, _⟩, hφ₃, hφ₄⟩
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
hφ₄ : ∀ (x : E), x ∈ s → ↑φ x < 1
⊢ Continuous φ.toFun
[PROOFSTEP]
refine'
  φ.continuous_of_nonzero_on_open _ (hs₂.vadd (-x₀)) (Nonempty.vadd_set ⟨0, hs₀⟩)
    (vadd_set_subset_iff.mpr fun x hx => _)
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
hφ₄ : ∀ (x : E), x ∈ s → ↑φ x < 1
x : E
hx : x ∈ s
⊢ -x₀ +ᵥ x ∈ fun x => ↑φ x = 0 → False
[PROOFSTEP]
change φ (-x₀ + x) ≠ 0
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
hφ₄ : ∀ (x : E), x ∈ s → ↑φ x < 1
x : E
hx : x ∈ s
⊢ ↑φ (-x₀ + x) ≠ 0
[PROOFSTEP]
rw [map_add, map_neg]
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
hφ₄ : ∀ (x : E), x ∈ s → ↑φ x < 1
x : E
hx : x ∈ s
⊢ -↑φ x₀ + ↑φ x ≠ 0
[PROOFSTEP]
specialize hφ₄ x hx
[GOAL]
case refine_2.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
φ : E →ₗ[ℝ] ℝ
hφ₁ : ∀ (x : { x // x ∈ f.domain }), ↑φ ↑x = ↑f x
hφ₂ : ∀ (x : E), ↑φ x ≤ gauge s x
hφ₃ : ↑φ x₀ = 1
x : E
hx : x ∈ s
hφ₄ : ↑φ x < 1
⊢ -↑φ x₀ + ↑φ x ≠ 0
[PROOFSTEP]
linarith
[GOAL]
case refine_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
⊢ ∀ (x : { x // x ∈ f.domain }), ↑f x ≤ gauge s ↑x
[PROOFSTEP]
rintro ⟨x, hx⟩
[GOAL]
case refine_1.mk
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
x : E
hx : x ∈ f.domain
⊢ ↑f { val := x, property := hx } ≤ gauge s ↑{ val := x, property := hx }
[PROOFSTEP]
obtain ⟨y, rfl⟩ := Submodule.mem_span_singleton.1 hx
[GOAL]
case refine_1.mk.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
y : ℝ
hx : y • x₀ ∈ f.domain
⊢ ↑f { val := y • x₀, property := hx } ≤ gauge s ↑{ val := y • x₀, property := hx }
[PROOFSTEP]
rw [LinearPMap.mkSpanSingleton'_apply]
[GOAL]
case refine_1.mk.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
y : ℝ
hx : y • x₀ ∈ f.domain
⊢ y • 1 ≤ gauge s ↑{ val := y • x₀, property := hx }
[PROOFSTEP]
simp only [mul_one, Algebra.id.smul_eq_mul, Submodule.coe_mk]
[GOAL]
case refine_1.mk.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
y : ℝ
hx : y • x₀ ∈ f.domain
⊢ y ≤ gauge s (y • x₀)
[PROOFSTEP]
obtain h | h := le_or_lt y 0
[GOAL]
case refine_1.mk.intro.inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
y : ℝ
hx : y • x₀ ∈ f.domain
h : y ≤ 0
⊢ y ≤ gauge s (y • x₀)
[PROOFSTEP]
exact h.trans (gauge_nonneg _)
[GOAL]
case refine_1.mk.intro.inr
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
y : ℝ
hx : y • x₀ ∈ f.domain
h : 0 < y
⊢ y ≤ gauge s (y • x₀)
[PROOFSTEP]
rw [gauge_smul_of_nonneg h.le, smul_eq_mul, le_mul_iff_one_le_right h]
[GOAL]
case refine_1.mk.intro.inr
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
hs₀ : 0 ∈ s
hs₁ : Convex ℝ s
hs₂ : IsOpen s
x₀ : E
hx₀ : ¬x₀ ∈ s
f : E →ₗ.[ℝ] ℝ := LinearPMap.mkSpanSingleton x₀ 1 (_ : x₀ ≠ 0)
y : ℝ
hx : y • x₀ ∈ f.domain
h : 0 < y
⊢ 1 ≤ gauge s x₀
[PROOFSTEP]
exact one_le_gauge_of_not_mem (hs₁.starConvex hs₀) (absorbent_nhds_zero <| hs₂.mem_nhds hs₀).absorbs hx₀
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
obtain rfl | ⟨a₀, ha₀⟩ := s.eq_empty_or_nonempty
[GOAL]
case inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
t : Set E
x y : E
ht : Convex ℝ t
hs₁ : Convex ℝ ∅
hs₂ : IsOpen ∅
disj : Disjoint ∅ t
⊢ ∃ f u, (∀ (a : E), a ∈ ∅ → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
exact ⟨0, 0, by simp, fun b _hb => le_rfl⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
t : Set E
x y : E
ht : Convex ℝ t
hs₁ : Convex ℝ ∅
hs₂ : IsOpen ∅
disj : Disjoint ∅ t
⊢ ∀ (a : E), a ∈ ∅ → ↑0 a < 0
[PROOFSTEP]
simp
[GOAL]
case inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
obtain rfl | ⟨b₀, hb₀⟩ := t.eq_empty_or_nonempty
[GOAL]
case inr.intro.inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
a₀ : E
ha₀ : a₀ ∈ s
ht : Convex ℝ ∅
disj : Disjoint s ∅
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ ∅ → u ≤ ↑f b
[PROOFSTEP]
exact ⟨0, 1, fun a _ha => zero_lt_one, by simp⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
a₀ : E
ha₀ : a₀ ∈ s
ht : Convex ℝ ∅
disj : Disjoint s ∅
⊢ ∀ (b : E), b ∈ ∅ → 1 ≤ ↑0 b
[PROOFSTEP]
simp
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
let x₀ := b₀ - a₀
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
let C := x₀ +ᵥ (s - t)
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
have : (0 : E) ∈ C := ⟨a₀ - b₀, sub_mem_sub ha₀ hb₀, by simp_rw [vadd_eq_add, sub_add_sub_cancel', sub_self]⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
⊢ (fun x => x₀ +ᵥ x) (a₀ - b₀) = 0
[PROOFSTEP]
simp_rw [vadd_eq_add, sub_add_sub_cancel', sub_self]
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this : 0 ∈ C
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
have : Convex ℝ C := (hs₁.sub ht).vadd _
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝ : 0 ∈ C
this : Convex ℝ C
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
have : x₀ ∉ C := by
  intro hx₀
  rw [← add_zero x₀] at hx₀
  exact disj.zero_not_mem_sub_set (vadd_mem_vadd_set_iff.1 hx₀)
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝ : 0 ∈ C
this : Convex ℝ C
⊢ ¬x₀ ∈ C
[PROOFSTEP]
intro hx₀
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝ : 0 ∈ C
this : Convex ℝ C
hx₀ : x₀ ∈ C
⊢ False
[PROOFSTEP]
rw [← add_zero x₀] at hx₀
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝ : 0 ∈ C
this : Convex ℝ C
hx₀ : x₀ + 0 ∈ C
⊢ False
[PROOFSTEP]
exact disj.zero_not_mem_sub_set (vadd_mem_vadd_set_iff.1 hx₀)
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝¹ : 0 ∈ C
this✝ : Convex ℝ C
this : ¬x₀ ∈ C
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
obtain ⟨f, hf₁, hf₂⟩ := separate_convex_open_set ‹0 ∈ C› ‹_› (hs₂.sub_right.vadd _) ‹x₀ ∉ C›
[GOAL]
case inr.intro.inr.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝¹ : 0 ∈ C
this✝ : Convex ℝ C
this : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
have : f b₀ = f a₀ + 1 := by simp [← hf₁]
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝¹ : 0 ∈ C
this✝ : Convex ℝ C
this : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
⊢ ↑f b₀ = ↑f a₀ + 1
[PROOFSTEP]
simp [← hf₁]
[GOAL]
case inr.intro.inr.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
have forall_le : ∀ a ∈ s, ∀ b ∈ t, f a ≤ f b := by
  intro a ha b hb
  have := hf₂ (x₀ + (a - b)) (vadd_mem_vadd_set <| sub_mem_sub ha hb)
  simp only [f.map_add, f.map_sub, hf₁] at this
  linarith
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
⊢ ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
[PROOFSTEP]
intro a ha b hb
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
a : E
ha : a ∈ s
b : E
hb : b ∈ t
⊢ ↑f a ≤ ↑f b
[PROOFSTEP]
have := hf₂ (x₀ + (a - b)) (vadd_mem_vadd_set <| sub_mem_sub ha hb)
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝³ : 0 ∈ C
this✝² : Convex ℝ C
this✝¹ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this✝ : ↑f b₀ = ↑f a₀ + 1
a : E
ha : a ∈ s
b : E
hb : b ∈ t
this : ↑f (x₀ + (a - b)) < 1
⊢ ↑f a ≤ ↑f b
[PROOFSTEP]
simp only [f.map_add, f.map_sub, hf₁] at this
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝³ : 0 ∈ C
this✝² : Convex ℝ C
this✝¹ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this✝ : ↑f b₀ = ↑f a₀ + 1
a : E
ha : a ∈ s
b : E
hb : b ∈ t
this : ↑f b₀ - ↑f a₀ + (↑f a - ↑f b) < 1
⊢ ↑f a ≤ ↑f b
[PROOFSTEP]
linarith
[GOAL]
case inr.intro.inr.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u ≤ ↑f b
[PROOFSTEP]
refine' ⟨f, sInf (f '' t), image_subset_iff.1 (_ : f '' s ⊆ Iio (sInf (f '' t))), fun b hb => _⟩
[GOAL]
case inr.intro.inr.intro.intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
⊢ ↑f '' s ⊆ Iio (sInf (↑f '' t))
[PROOFSTEP]
rw [← interior_Iic]
[GOAL]
case inr.intro.inr.intro.intro.intro.refine'_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
⊢ ↑f '' s ⊆ interior (Iic (sInf (↑f '' t)))
[PROOFSTEP]
refine' interior_maximal (image_subset_iff.2 fun a ha => _) (f.isOpenMap_of_ne_zero _ _ hs₂)
[GOAL]
case inr.intro.inr.intro.intro.intro.refine'_1.refine'_1
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
a : E
ha : a ∈ s
⊢ a ∈ ↑f ⁻¹' Iic (sInf (↑f '' t))
[PROOFSTEP]
exact le_csInf (Nonempty.image _ ⟨_, hb₀⟩) (ball_image_of_ball <| forall_le _ ha)
[GOAL]
case inr.intro.inr.intro.intro.intro.refine'_1.refine'_2
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
⊢ f ≠ 0
[PROOFSTEP]
rintro rfl
[GOAL]
case inr.intro.inr.intro.intro.intro.refine'_1.refine'_2
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
hf₁ : ↑0 x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑0 x < 1
this : ↑0 b₀ = ↑0 a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑0 a ≤ ↑0 b
⊢ False
[PROOFSTEP]
simp at hf₁
[GOAL]
case inr.intro.inr.intro.intro.intro.refine'_2
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht : Convex ℝ t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
x₀ : E := b₀ - a₀
C : Set E := x₀ +ᵥ (s - t)
this✝² : 0 ∈ C
this✝¹ : Convex ℝ C
this✝ : ¬x₀ ∈ C
f : E →L[ℝ] ℝ
hf₁ : ↑f x₀ = 1
hf₂ : ∀ (x : E), x ∈ C → ↑f x < 1
this : ↑f b₀ = ↑f a₀ + 1
forall_le : ∀ (a : E), a ∈ s → ∀ (b : E), b ∈ t → ↑f a ≤ ↑f b
b : E
hb : b ∈ t
⊢ sInf (↑f '' t) ≤ ↑f b
[PROOFSTEP]
exact csInf_le ⟨f a₀, ball_image_of_ball <| forall_le _ ha₀⟩ (mem_image_of_mem _ hb)
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
ht₁ : Convex ℝ t
ht₂ : IsOpen t
disj : ¬x ∈ t
f : E →L[ℝ] ℝ
hf : ∀ (a : E), a ∈ t → ↑f a < ↑f x
⊢ ∀ (b : E), b ∈ t → ↑(-f) x < ↑(-f) b
[PROOFSTEP]
simpa
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s t
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u < ↑f b
[PROOFSTEP]
obtain rfl | ⟨a₀, ha₀⟩ := s.eq_empty_or_nonempty
[GOAL]
case inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
t : Set E
x y : E
ht₁ : Convex ℝ t
ht₃ : IsOpen t
hs₁ : Convex ℝ ∅
hs₂ : IsOpen ∅
disj : Disjoint ∅ t
⊢ ∃ f u, (∀ (a : E), a ∈ ∅ → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u < ↑f b
[PROOFSTEP]
exact ⟨0, -1, by simp, fun b _hb => by norm_num⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
t : Set E
x y : E
ht₁ : Convex ℝ t
ht₃ : IsOpen t
hs₁ : Convex ℝ ∅
hs₂ : IsOpen ∅
disj : Disjoint ∅ t
⊢ ∀ (a : E), a ∈ ∅ → ↑0 a < -1
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
t : Set E
x y : E
ht₁ : Convex ℝ t
ht₃ : IsOpen t
hs₁ : Convex ℝ ∅
hs₂ : IsOpen ∅
disj : Disjoint ∅ t
b : E
_hb : b ∈ t
⊢ -1 < ↑0 b
[PROOFSTEP]
norm_num
[GOAL]
case inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u < ↑f b
[PROOFSTEP]
obtain rfl | ⟨b₀, hb₀⟩ := t.eq_empty_or_nonempty
[GOAL]
case inr.intro.inl
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
a₀ : E
ha₀ : a₀ ∈ s
ht₁ : Convex ℝ ∅
ht₃ : IsOpen ∅
disj : Disjoint s ∅
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ ∅ → u < ↑f b
[PROOFSTEP]
exact ⟨0, 1, fun a _ha => by norm_num, by simp⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
a₀ : E
ha₀ : a₀ ∈ s
ht₁ : Convex ℝ ∅
ht₃ : IsOpen ∅
disj : Disjoint s ∅
a : E
_ha : a ∈ s
⊢ ↑0 a < 1
[PROOFSTEP]
norm_num
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
a₀ : E
ha₀ : a₀ ∈ s
ht₁ : Convex ℝ ∅
ht₃ : IsOpen ∅
disj : Disjoint s ∅
⊢ ∀ (b : E), b ∈ ∅ → 1 < ↑0 b
[PROOFSTEP]
simp
[GOAL]
case inr.intro.inr.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s t : Set E
x y : E
hs₁ : Convex ℝ s
hs₂ : IsOpen s
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s t
a₀ : E
ha₀ : a₀ ∈ s
b₀ : E
hb₀ : b₀ ∈ t
⊢ ∃ f u, (∀ (a : E), a ∈ s → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u < ↑f b
[PROOFSTEP]
obtain ⟨f, s, hf₁, hf₂⟩ := geometric_hahn_banach_open hs₁ hs₂ ht₁ disj
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
⊢ ∃ f u, (∀ (a : E), a ∈ s✝ → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u < ↑f b
[PROOFSTEP]
have hf : IsOpenMap f := by
  refine' f.isOpenMap_of_ne_zero _
  rintro rfl
  simp_rw [ContinuousLinearMap.zero_apply] at hf₁ hf₂
  exact (hf₁ _ ha₀).not_le (hf₂ _ hb₀)
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
⊢ IsOpenMap ↑f
[PROOFSTEP]
refine' f.isOpenMap_of_ne_zero _
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
⊢ f ≠ 0
[PROOFSTEP]
rintro rfl
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑0 a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑0 b
⊢ False
[PROOFSTEP]
simp_rw [ContinuousLinearMap.zero_apply] at hf₁ hf₂
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → 0 < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ 0
⊢ False
[PROOFSTEP]
exact (hf₁ _ ha₀).not_le (hf₂ _ hb₀)
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
hf : IsOpenMap ↑f
⊢ ∃ f u, (∀ (a : E), a ∈ s✝ → ↑f a < u) ∧ ∀ (b : E), b ∈ t → u < ↑f b
[PROOFSTEP]
refine' ⟨f, s, hf₁, image_subset_iff.1 (_ : f '' t ⊆ Ioi s)⟩
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
hf : IsOpenMap ↑f
⊢ ↑f '' t ⊆ Ioi s
[PROOFSTEP]
rw [← interior_Ici]
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
hf : IsOpenMap ↑f
⊢ ↑f '' t ⊆ interior (Ici s)
[PROOFSTEP]
refine' interior_maximal (image_subset_iff.2 hf₂) (f.isOpenMap_of_ne_zero _ _ ht₃)
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
f : E →L[ℝ] ℝ
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑f a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑f b
hf : IsOpenMap ↑f
⊢ f ≠ 0
[PROOFSTEP]
rintro rfl
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → ↑0 a < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ ↑0 b
hf : IsOpenMap ↑0
⊢ False
[PROOFSTEP]
simp_rw [ContinuousLinearMap.zero_apply] at hf₁ hf₂
[GOAL]
case inr.intro.inr.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace E
inst✝³ : AddCommGroup E
inst✝² : TopologicalAddGroup E
inst✝¹ : Module ℝ E
inst✝ : ContinuousSMul ℝ E
s✝ t : Set E
x y : E
hs₁ : Convex ℝ s✝
hs₂ : IsOpen s✝
ht₁ : Convex ℝ t
ht₃ : IsOpen t
disj : Disjoint s✝ t
a₀ : E
ha₀ : a₀ ∈ s✝
b₀ : E
hb₀ : b₀ ∈ t
s : ℝ
hf₁ : ∀ (a : E), a ∈ s✝ → 0 < s
hf₂ : ∀ (b : E), b ∈ t → s ≤ 0
hf : IsOpenMap ↑0
⊢ False
[PROOFSTEP]
exact (hf₁ _ ha₀).not_le (hf₂ _ hb₀)
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
obtain rfl | hs := s.eq_empty_or_nonempty
[GOAL]
case inl
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
ht₁ : Convex ℝ t
ht₂ : IsClosed t
hs₁ : Convex ℝ ∅
hs₂ : IsCompact ∅
disj : Disjoint ∅ t
⊢ ∃ f u v, (∀ (a : E), a ∈ ∅ → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
exact ⟨0, -2, -1, by simp, by norm_num, fun b _hb => by norm_num⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
ht₁ : Convex ℝ t
ht₂ : IsClosed t
hs₁ : Convex ℝ ∅
hs₂ : IsCompact ∅
disj : Disjoint ∅ t
⊢ ∀ (a : E), a ∈ ∅ → ↑0 a < -2
[PROOFSTEP]
simp
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
ht₁ : Convex ℝ t
ht₂ : IsClosed t
hs₁ : Convex ℝ ∅
hs₂ : IsCompact ∅
disj : Disjoint ∅ t
⊢ -2 < -1
[PROOFSTEP]
norm_num
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
ht₁ : Convex ℝ t
ht₂ : IsClosed t
hs₁ : Convex ℝ ∅
hs₂ : IsCompact ∅
disj : Disjoint ∅ t
b : E
_hb : b ∈ t
⊢ -1 < ↑0 b
[PROOFSTEP]
norm_num
[GOAL]
case inr
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
obtain rfl | _ht := t.eq_empty_or_nonempty
[GOAL]
case inr.inl
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
hs : Set.Nonempty s
ht₁ : Convex ℝ ∅
ht₂ : IsClosed ∅
disj : Disjoint s ∅
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ ∅ → v < ↑f b
[PROOFSTEP]
exact ⟨0, 1, 2, fun a _ha => by norm_num, by norm_num, by simp⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
hs : Set.Nonempty s
ht₁ : Convex ℝ ∅
ht₂ : IsClosed ∅
disj : Disjoint s ∅
a : E
_ha : a ∈ s
⊢ ↑0 a < 1
[PROOFSTEP]
norm_num
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
hs : Set.Nonempty s
ht₁ : Convex ℝ ∅
ht₂ : IsClosed ∅
disj : Disjoint s ∅
⊢ 1 < 2
[PROOFSTEP]
norm_num
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
hs : Set.Nonempty s
ht₁ : Convex ℝ ∅
ht₂ : IsClosed ∅
disj : Disjoint s ∅
⊢ ∀ (b : E), b ∈ ∅ → 2 < ↑0 b
[PROOFSTEP]
simp
[GOAL]
case inr.inr
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
obtain ⟨U, V, hU, hV, hU₁, hV₁, sU, tV, disj'⟩ := disj.exists_open_convexes hs₁ hs₂ ht₁ ht₂
[GOAL]
case inr.inr.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
U V : Set E
hU : IsOpen U
hV : IsOpen V
hU₁ : Convex ℝ U
hV₁ : Convex ℝ V
sU : s ⊆ U
tV : t ⊆ V
disj' : Disjoint U V
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
obtain ⟨f, u, hf₁, hf₂⟩ := geometric_hahn_banach_open_open hU₁ hU hV₁ hV disj'
[GOAL]
case inr.inr.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
U V : Set E
hU : IsOpen U
hV : IsOpen V
hU₁ : Convex ℝ U
hV₁ : Convex ℝ V
sU : s ⊆ U
tV : t ⊆ V
disj' : Disjoint U V
f : E →L[ℝ] ℝ
u : ℝ
hf₁ : ∀ (a : E), a ∈ U → ↑f a < u
hf₂ : ∀ (b : E), b ∈ V → u < ↑f b
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
obtain ⟨x, hx₁, hx₂⟩ := hs₂.exists_forall_ge hs f.continuous.continuousOn
[GOAL]
case inr.inr.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
U V : Set E
hU : IsOpen U
hV : IsOpen V
hU₁ : Convex ℝ U
hV₁ : Convex ℝ V
sU : s ⊆ U
tV : t ⊆ V
disj' : Disjoint U V
f : E →L[ℝ] ℝ
u : ℝ
hf₁ : ∀ (a : E), a ∈ U → ↑f a < u
hf₂ : ∀ (b : E), b ∈ V → u < ↑f b
x : E
hx₁ : x ∈ s
hx₂ : ∀ (y : E), y ∈ s → ↑f y ≤ ↑f x
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
have : f x < u := hf₁ x (sU hx₁)
[GOAL]
case inr.inr.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
U V : Set E
hU : IsOpen U
hV : IsOpen V
hU₁ : Convex ℝ U
hV₁ : Convex ℝ V
sU : s ⊆ U
tV : t ⊆ V
disj' : Disjoint U V
f : E →L[ℝ] ℝ
u : ℝ
hf₁ : ∀ (a : E), a ∈ U → ↑f a < u
hf₂ : ∀ (b : E), b ∈ V → u < ↑f b
x : E
hx₁ : x ∈ s
hx₂ : ∀ (y : E), y ∈ s → ↑f y ≤ ↑f x
this : ↑f x < u
⊢ ∃ f u v, (∀ (a : E), a ∈ s → ↑f a < u) ∧ u < v ∧ ∀ (b : E), b ∈ t → v < ↑f b
[PROOFSTEP]
exact ⟨f, (f x + u) / 2, u, fun a ha => by linarith [hx₂ a ha], by linarith, fun b hb => hf₂ b (tV hb)⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
U V : Set E
hU : IsOpen U
hV : IsOpen V
hU₁ : Convex ℝ U
hV₁ : Convex ℝ V
sU : s ⊆ U
tV : t ⊆ V
disj' : Disjoint U V
f : E →L[ℝ] ℝ
u : ℝ
hf₁ : ∀ (a : E), a ∈ U → ↑f a < u
hf₂ : ∀ (b : E), b ∈ V → u < ↑f b
x : E
hx₁ : x ∈ s
hx₂ : ∀ (y : E), y ∈ s → ↑f y ≤ ↑f x
this : ↑f x < u
a : E
ha : a ∈ s
⊢ ↑f a < (↑f x + u) / 2
[PROOFSTEP]
linarith [hx₂ a ha]
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsCompact s
ht₁ : Convex ℝ t
ht₂ : IsClosed t
disj : Disjoint s t
hs : Set.Nonempty s
_ht : Set.Nonempty t
U V : Set E
hU : IsOpen U
hV : IsOpen V
hU₁ : Convex ℝ U
hV₁ : Convex ℝ V
sU : s ⊆ U
tV : t ⊆ V
disj' : Disjoint U V
f : E →L[ℝ] ℝ
u : ℝ
hf₁ : ∀ (a : E), a ∈ U → ↑f a < u
hf₂ : ∀ (b : E), b ∈ V → u < ↑f b
x : E
hx₁ : x ∈ s
hx₂ : ∀ (y : E), y ∈ s → ↑f y ≤ ↑f x
this : ↑f x < u
⊢ (↑f x + u) / 2 < u
[PROOFSTEP]
linarith
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t✝ : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
ht₁ : Convex ℝ t✝
ht₂ : IsCompact t✝
disj : Disjoint s✝ t✝
f : E →L[ℝ] ℝ
s t : ℝ
hs : ∀ (a : E), a ∈ t✝ → ↑f a < s
st : s < t
ht : ∀ (b : E), b ∈ s✝ → t < ↑f b
⊢ ∀ (a : E), a ∈ s✝ → ↑(-f) a < -t
[PROOFSTEP]
simpa using ht
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t✝ : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
ht₁ : Convex ℝ t✝
ht₂ : IsCompact t✝
disj : Disjoint s✝ t✝
f : E →L[ℝ] ℝ
s t : ℝ
hs : ∀ (a : E), a ∈ t✝ → ↑f a < s
st : s < t
ht : ∀ (b : E), b ∈ s✝ → t < ↑f b
⊢ -t < -s
[PROOFSTEP]
simpa using st
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t✝ : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
ht₁ : Convex ℝ t✝
ht₂ : IsCompact t✝
disj : Disjoint s✝ t✝
f : E →L[ℝ] ℝ
s t : ℝ
hs : ∀ (a : E), a ∈ t✝ → ↑f a < s
st : s < t
ht : ∀ (b : E), b ∈ s✝ → t < ↑f b
⊢ ∀ (b : E), b ∈ t✝ → -s < ↑(-f) b
[PROOFSTEP]
simpa using hs
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁶ : TopologicalSpace E
inst✝⁵ : AddCommGroup E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : Module ℝ E
inst✝² : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝¹ : LocallyConvexSpace ℝ E
inst✝ : T1Space E
hxy : x ≠ y
⊢ ∃ f, ↑f x < ↑f y
[PROOFSTEP]
obtain ⟨f, s, t, hs, st, ht⟩ :=
  geometric_hahn_banach_compact_closed (convex_singleton x) isCompact_singleton (convex_singleton y) isClosed_singleton
    (disjoint_singleton.2 hxy)
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁶ : TopologicalSpace E
inst✝⁵ : AddCommGroup E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : Module ℝ E
inst✝² : ContinuousSMul ℝ E
s✝ t✝ : Set E
x y : E
inst✝¹ : LocallyConvexSpace ℝ E
inst✝ : T1Space E
hxy : x ≠ y
f : E →L[ℝ] ℝ
s t : ℝ
hs : ∀ (a : E), a ∈ {x} → ↑f a < s
st : s < t
ht : ∀ (b : E), b ∈ {y} → t < ↑f b
⊢ ∃ f, ↑f x < ↑f y
[PROOFSTEP]
exact ⟨f, by linarith [hs x rfl, ht y rfl]⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁶ : TopologicalSpace E
inst✝⁵ : AddCommGroup E
inst✝⁴ : TopologicalAddGroup E
inst✝³ : Module ℝ E
inst✝² : ContinuousSMul ℝ E
s✝ t✝ : Set E
x y : E
inst✝¹ : LocallyConvexSpace ℝ E
inst✝ : T1Space E
hxy : x ≠ y
f : E →L[ℝ] ℝ
s t : ℝ
hs : ∀ (a : E), a ∈ {x} → ↑f a < s
st : s < t
ht : ∀ (b : E), b ∈ {y} → t < ↑f b
⊢ ↑f x < ↑f y
[PROOFSTEP]
linarith [hs x rfl, ht y rfl]
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
⊢ ⋂ (l : E →L[ℝ] ℝ), {x | ∃ y, y ∈ s ∧ ↑l x ≤ ↑l y} = s
[PROOFSTEP]
rw [Set.iInter_setOf]
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
⊢ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s ∧ ↑i x ≤ ↑i y} = s
[PROOFSTEP]
refine' Set.Subset.antisymm (fun x hx => _) fun x hx l => ⟨x, hx, le_rfl⟩
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s ∧ ↑i x ≤ ↑i y}
⊢ x ∈ s
[PROOFSTEP]
by_contra h
[GOAL]
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s
hs₂ : IsClosed s
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s ∧ ↑i x ≤ ↑i y}
h : ¬x ∈ s
⊢ False
[PROOFSTEP]
obtain ⟨l, s, hlA, hl⟩ := geometric_hahn_banach_closed_point hs₁ hs₂ h
[GOAL]
case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t : Set E
x✝ y : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s✝ ∧ ↑i x ≤ ↑i y}
h : ¬x ∈ s✝
l : E →L[ℝ] ℝ
s : ℝ
hlA : ∀ (a : E), a ∈ s✝ → ↑l a < s
hl : s < ↑l x
⊢ False
[PROOFSTEP]
obtain ⟨y, hy, hxy⟩ := hx l
[GOAL]
case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
inst✝⁵ : TopologicalSpace E
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalAddGroup E
inst✝² : Module ℝ E
inst✝¹ : ContinuousSMul ℝ E
s✝ t : Set E
x✝ y✝ : E
inst✝ : LocallyConvexSpace ℝ E
hs₁ : Convex ℝ s✝
hs₂ : IsClosed s✝
x : E
hx : x ∈ {x | ∀ (i : E →L[ℝ] ℝ), ∃ y, y ∈ s✝ ∧ ↑i x ≤ ↑i y}
h : ¬x ∈ s✝
l : E →L[ℝ] ℝ
s : ℝ
hlA : ∀ (a : E), a ∈ s✝ → ↑l a < s
hl : s < ↑l x
y : E
hy : y ∈ s✝
hxy : ↑l x ≤ ↑l y
⊢ False
[PROOFSTEP]
exact ((hxy.trans_lt (hlA y hy)).trans hl).not_le le_rfl


[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
have ne : (Icc a b).Nonempty :=
  nonempty_Icc.2
    (le_of_lt hab)
      -- Consider absolute min and max points
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
obtain ⟨c, cmem, cle⟩ : ∃ c ∈ Icc a b, ∀ x ∈ Icc a b, f c ≤ f x := isCompact_Icc.exists_forall_le ne hfc
[GOAL]
case intro.intro
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
obtain ⟨C, Cmem, Cge⟩ : ∃ C ∈ Icc a b, ∀ x ∈ Icc a b, f x ≤ f C := isCompact_Icc.exists_forall_ge ne hfc
[GOAL]
case intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
by_cases hc : f c = f a
[GOAL]
case pos
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
by_cases hC : f C = f a
[GOAL]
case pos
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : f C = f a
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
have : ∀ x ∈ Icc a b, f x = f a := fun x hx =>
  le_antisymm (hC ▸ Cge x hx)
    (hc ▸ cle x hx)
      -- `f` is a constant, so we can take any point in `Ioo a b`
[GOAL]
case pos
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : f C = f a
this : ∀ (x : X), x ∈ Icc a b → f x = f a
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
rcases nonempty_Ioo.2 hab with ⟨c', hc'⟩
[GOAL]
case pos.intro
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : f C = f a
this : ∀ (x : X), x ∈ Icc a b → f x = f a
c' : X
hc' : c' ∈ Ioo a b
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
refine ⟨c', hc', Or.inl fun x hx ↦ ?_⟩
[GOAL]
case pos.intro
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : f C = f a
this : ∀ (x : X), x ∈ Icc a b → f x = f a
c' : X
hc' : c' ∈ Ioo a b
x : X
hx : x ∈ Icc a b
⊢ x ∈ {x | (fun x => f c' ≤ f x) x}
[PROOFSTEP]
simp only [mem_setOf_eq, this x hx, this c' (Ioo_subset_Icc_self hc'), le_rfl]
[GOAL]
case neg
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : ¬f C = f a
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
refine' ⟨C, ⟨lt_of_le_of_ne Cmem.1 <| mt _ hC, lt_of_le_of_ne Cmem.2 <| mt _ hC⟩, Or.inr Cge⟩
[GOAL]
case neg.refine'_1
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : ¬f C = f a
⊢ a = C → f C = f a
case neg.refine'_2
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : ¬f C = f a
⊢ C = b → f C = f a
[PROOFSTEP]
exacts [fun h => by rw [h], fun h => by rw [h, hfI]]
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : ¬f C = f a
h : a = C
⊢ f C = f a
[PROOFSTEP]
rw [h]
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : f c = f a
hC : ¬f C = f a
h : C = b
⊢ f C = f a
[PROOFSTEP]
rw [h, hfI]
[GOAL]
case neg
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : ¬f c = f a
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Icc a b) c
[PROOFSTEP]
refine' ⟨c, ⟨lt_of_le_of_ne cmem.1 <| mt _ hc, lt_of_le_of_ne cmem.2 <| mt _ hc⟩, Or.inl cle⟩
[GOAL]
case neg.refine'_1
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : ¬f c = f a
⊢ a = c → f c = f a
case neg.refine'_2
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : ¬f c = f a
⊢ c = b → f c = f a
[PROOFSTEP]
exacts [fun h => by rw [h], fun h => by rw [h, hfI]]
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : ¬f c = f a
h : a = c
⊢ f c = f a
[PROOFSTEP]
rw [h]
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Icc a b)
hfI : f a = f b
ne : Set.Nonempty (Icc a b)
c : X
cmem : c ∈ Icc a b
cle : ∀ (x : X), x ∈ Icc a b → f c ≤ f x
C : X
Cmem : C ∈ Icc a b
Cge : ∀ (x : X), x ∈ Icc a b → f x ≤ f C
hc : ¬f c = f a
h : c = b
⊢ f c = f a
[PROOFSTEP]
rw [h, hfI]
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Ioo a b)
ha : Tendsto f (𝓝[Ioi a] a) (𝓝 l)
hb : Tendsto f (𝓝[Iio b] b) (𝓝 l)
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Ioo a b) c
[PROOFSTEP]
have h : EqOn (extendFrom (Ioo a b) f) f (Ioo a b) := extendFrom_extends hfc
[GOAL]
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc : ContinuousOn f (Ioo a b)
ha : Tendsto f (𝓝[Ioi a] a) (𝓝 l)
hb : Tendsto f (𝓝[Iio b] b) (𝓝 l)
h : EqOn (extendFrom (Ioo a b) f) f (Ioo a b)
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Ioo a b) c
[PROOFSTEP]
obtain ⟨c, hc, hfc⟩ : ∃ c ∈ Ioo a b, IsExtrOn (extendFrom (Ioo a b) f) (Icc a b) c :=
  exists_Ioo_extr_on_Icc hab (continuousOn_Icc_extendFrom_Ioo hab.ne hfc ha hb)
    ((eq_lim_at_left_extendFrom_Ioo hab ha).trans (eq_lim_at_right_extendFrom_Ioo hab hb).symm)
[GOAL]
case intro.intro
X : Type u_1
Y : Type u_2
inst✝⁶ : ConditionallyCompleteLinearOrder X
inst✝⁵ : DenselyOrdered X
inst✝⁴ : TopologicalSpace X
inst✝³ : OrderTopology X
inst✝² : LinearOrder Y
inst✝¹ : TopologicalSpace Y
inst✝ : OrderTopology Y
f : X → Y
a b : X
l : Y
hab : a < b
hfc✝ : ContinuousOn f (Ioo a b)
ha : Tendsto f (𝓝[Ioi a] a) (𝓝 l)
hb : Tendsto f (𝓝[Iio b] b) (𝓝 l)
h : EqOn (extendFrom (Ioo a b) f) f (Ioo a b)
c : X
hc : c ∈ Ioo a b
hfc : IsExtrOn (extendFrom (Ioo a b) f) (Icc a b) c
⊢ ∃ c, c ∈ Ioo a b ∧ IsExtrOn f (Ioo a b) c
[PROOFSTEP]
exact ⟨c, hc, (hfc.on_subset Ioo_subset_Icc_self).congr h (h hc)⟩