Theorem: geometric_hahn_banach_open
File: Mathlib/Analysis/NormedSpace/HahnBanach/Separation.lean

tactic: obtain rfl | ⟨a₀, ha₀⟩ := s.eq_empty_or_nonempty
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: obtain rfl | ⟨b₀, hb₀⟩ := t.eq_empty_or_nonempty
state_before: case inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: let x₀ := b₀ - a₀
state_before: case inr.intro.inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: let C := x₀ +ᵥ (s - t)
state_before: case inr.intro.inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: have : (0 : E) ∈ C :=
  ⟨a₀ - b₀, sub_mem_sub ha₀ hb₀, by simp_rw [vadd_eq_add, sub_add_sub_cancel', sub_self]⟩
state_before: case inr.intro.inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: have : Convex ℝ C := (hs₁.sub ht).vadd _
state_before: case inr.intro.inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: 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₀)
state_before: case inr.intro.inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: obtain ⟨f, hf₁, hf₂⟩ := separate_convex_open_set ‹0 ∈ C› ‹_› (hs₂.sub_right.vadd _) ‹x₀ ∉ C›
state_before: case inr.intro.inr.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: have : f b₀ = f a₀ + 1 := by simp [← hf₁]
state_before: case inr.intro.inr.intro.intro.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: 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
state_before: case inr.intro.inr.intro.intro.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: refine' ⟨f, sInf (f '' t), image_subset_iff.1 (_ : f '' s ⊆ Iio (sInf (f '' t))), fun b hb => _⟩
state_before: case inr.intro.inr.intro.intro.intro
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: exact ⟨0, 0, by simp, fun b _hb => le_rfl⟩
state_before: case inl
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: simp
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: exact ⟨0, 1, fun a _ha => zero_lt_one, by simp⟩
state_before: case inr.intro.inl
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: simp
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: simp_rw [vadd_eq_add, sub_add_sub_cancel', sub_self]
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: intro hx₀
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: rw [← add_zero x₀] at hx₀
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: exact disj.zero_not_mem_sub_set (vadd_mem_vadd_set_iff.1 hx₀)
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: simp [← hf₁]
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: intro a ha b hb
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: have := hf₂ (x₀ + (a - b)) (vadd_mem_vadd_set <| sub_mem_sub ha hb)
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: simp only [f.map_add, f.map_sub, hf₁] at this
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: linarith
state_before: 𝕜 : Type ?u.27194
E : Type u_1
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

tactic: rw [← interior_Iic]
state_before: case inr.intro.inr.intro.intro.intro.refine'_1
𝕜 : Type ?u.27194
E : Type u_1
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))

tactic: refine' interior_maximal (image_subset_iff.2 fun a ha => _) (f.isOpenMap_of_ne_zero _ _ hs₂)
state_before: case inr.intro.inr.intro.intro.intro.refine'_1
𝕜 : Type ?u.27194
E : Type u_1
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)))

tactic: exact le_csInf (Nonempty.image _ ⟨_, hb₀⟩) (ball_image_of_ball <| forall_le _ ha)
state_before: case inr.intro.inr.intro.intro.intro.refine'_1.refine'_1
𝕜 : Type ?u.27194
E : Type u_1
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))

tactic: rintro rfl
state_before: case inr.intro.inr.intro.intro.intro.refine'_1.refine'_2
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: simp at hf₁
state_before: case inr.intro.inr.intro.intro.intro.refine'_1.refine'_2
𝕜 : Type ?u.27194
E : Type u_1
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

tactic: exact csInf_le ⟨f a₀, ball_image_of_ball <| forall_le _ ha₀⟩ (mem_image_of_mem _ hb)
state_before: case inr.intro.inr.intro.intro.intro.refine'_2
𝕜 : Type ?u.27194
E : Type u_1
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