Theorem: RieszExtension.step
File: Mathlib/Analysis/Convex/Cone/Basic.lean

tactic: obtain ⟨y, -, hy⟩ : ∃ y ∈ ⊤, y ∉ f.domain :=
  @SetLike.exists_of_lt (Submodule ℝ E) _ _ _ _ (lt_top_iff_ne_top.2 hdom)
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
⊢ ∃ g, f < g ∧ ∀ (x : { x // x ∈ g.domain }), ↑x ∈ s → 0 ≤ ↑g x

tactic: refine' ⟨f.supSpanSingleton y (-c) hy, _, _⟩
state_before: case intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
⊢ ∃ g, f < g ∧ ∀ (x : { x // x ∈ g.domain }), ↑x ∈ s → 0 ≤ ↑g x

tactic: set Sp := f '' { x : f.domain | (x : E) + y ∈ s }
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
⊢ ∃ c, (∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c) ∧ ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x

tactic: set Sn := f '' { x : f.domain | -(x : E) - y ∈ s }
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
⊢ ∃ c, (∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c) ∧ ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x

tactic: suffices (upperBounds Sn ∩ lowerBounds Sp).Nonempty by
  simpa only [Set.Nonempty, upperBounds, lowerBounds, ball_image_iff] using this
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
⊢ ∃ c, (∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c) ∧ ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x

tactic: refine' exists_between_of_forall_le (Nonempty.image f _) (Nonempty.image f (dense y)) _
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
⊢ Set.Nonempty (upperBounds Sn ∩ lowerBounds Sp)

tactic: rintro a ⟨xn, hxn, rfl⟩ b ⟨xp, hxp, rfl⟩
state_before: case refine'_2
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
⊢ ∀ (x : ℝ), x ∈ Sn → ∀ (y : ℝ), y ∈ Sp → x ≤ y

tactic: have := s.add_mem hxp hxn
state_before: case refine'_2.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
xn : { x // x ∈ f.domain }
hxn : xn ∈ {x | -↑x - y ∈ s}
xp : { x // x ∈ f.domain }
hxp : xp ∈ {x | ↑x + y ∈ s}
⊢ ↑f xn ≤ ↑f xp

tactic: rw [add_assoc, add_sub_cancel'_right, ← sub_eq_add_neg, ← AddSubgroupClass.coe_sub] at this
state_before: case refine'_2.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
xn : { x // x ∈ f.domain }
hxn : xn ∈ {x | -↑x - y ∈ s}
xp : { x // x ∈ f.domain }
hxp : xp ∈ {x | ↑x + y ∈ s}
this : ↑xp + y + (-↑xn - y) ∈ s
⊢ ↑f xn ≤ ↑f xp

tactic: replace := nonneg _ this
state_before: case refine'_2.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
xn : { x // x ∈ f.domain }
hxn : xn ∈ {x | -↑x - y ∈ s}
xp : { x // x ∈ f.domain }
hxp : xp ∈ {x | ↑x + y ∈ s}
this✝ : ↑xp - ↑xn ∈ s
this : ↑(xp - xn) ∈ s
⊢ ↑f xn ≤ ↑f xp

tactic: rwa [f.map_sub, sub_nonneg] at this
state_before: case refine'_2.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
xn : { x // x ∈ f.domain }
hxn : xn ∈ {x | -↑x - y ∈ s}
xp : { x // x ∈ f.domain }
hxp : xp ∈ {x | ↑x + y ∈ s}
this✝ : ↑xp - ↑xn ∈ s
this : 0 ≤ ↑f (xp - xn)
⊢ ↑f xn ≤ ↑f xp

tactic: simpa only [Set.Nonempty, upperBounds, lowerBounds, ball_image_iff] using this
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
this : Set.Nonempty (upperBounds Sn ∩ lowerBounds Sp)
⊢ ∃ c, (∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c) ∧ ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x

tactic: rcases dense (-y) with ⟨x, hx⟩
state_before: case refine'_1
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
⊢ Set.Nonempty {x | -↑x - y ∈ s}

tactic: rw [← neg_neg x, AddSubgroupClass.coe_neg, ← sub_eq_add_neg] at hx
state_before: case refine'_1.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
x : { x // x ∈ f.domain }
hx : ↑x + -y ∈ s
⊢ Set.Nonempty {x | -↑x - y ∈ s}

tactic: exact ⟨_, hx⟩
state_before: case refine'_1.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
Sp : Set ℝ := ↑f '' {x | ↑x + y ∈ s}
Sn : Set ℝ := ↑f '' {x | -↑x - y ∈ s}
x : { x // x ∈ f.domain }
hx : -↑(-x) - y ∈ s
⊢ Set.Nonempty {x | -↑x - y ∈ s}

tactic: refine' lt_iff_le_not_le.2 ⟨f.left_le_sup _ _, fun H => _⟩
state_before: case intro.intro.intro.intro.refine'_1
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
⊢ f < LinearPMap.supSpanSingleton f y (-c) hy

tactic: replace H := LinearPMap.domain_mono.monotone H
state_before: case intro.intro.intro.intro.refine'_1
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
H : LinearPMap.supSpanSingleton f y (-c) hy ≤ f
⊢ False

tactic: rw [LinearPMap.domain_supSpanSingleton, sup_le_iff, span_le, singleton_subset_iff] at H
state_before: case intro.intro.intro.intro.refine'_1
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
H : (LinearPMap.supSpanSingleton f y (-c) hy).domain ≤ f.domain
⊢ False

tactic: exact hy H.2
state_before: case intro.intro.intro.intro.refine'_1
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
H : f.domain ≤ f.domain ∧ y ∈ ↑f.domain
⊢ False

tactic: rintro ⟨z, hz⟩ hzs
state_before: case intro.intro.intro.intro.refine'_2
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
⊢ ∀ (x : { x // x ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain }),
    ↑x ∈ s → 0 ≤ ↑(LinearPMap.supSpanSingleton f y (-c) hy) x

tactic: rcases mem_sup.1 hz with ⟨x, hx, y', hy', rfl⟩
state_before: case intro.intro.intro.intro.refine'_2.mk
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
z : E
hz : z ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : ↑{ val := z, property := hz } ∈ s
⊢ 0 ≤ ↑(LinearPMap.supSpanSingleton f y (-c) hy) { val := z, property := hz }

tactic: rcases mem_span_singleton.1 hy' with ⟨r, rfl⟩
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
y' : E
hy' : y' ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + y' ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : ↑{ val := x + y', property := hz } ∈ s
⊢ 0 ≤ ↑(LinearPMap.supSpanSingleton f y (-c) hy) { val := x + y', property := hz }

tactic: simp only [Subtype.coe_mk] at hzs
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : ↑{ val := x + r • y, property := hz } ∈ s
⊢ 0 ≤ ↑(LinearPMap.supSpanSingleton f y (-c) hy) { val := x + r • y, property := hz }

tactic: erw [LinearPMap.supSpanSingleton_apply_mk _ _ _ _ _ hx, smul_neg, ← sub_eq_add_neg, sub_nonneg]
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
⊢ 0 ≤ ↑(LinearPMap.supSpanSingleton f y (-c) hy) { val := x + r • y, property := hz }

tactic: rcases lt_trichotomy r 0 with (hr | hr | hr)
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: have : -(r⁻¹ • x) - y ∈ s := by
  rwa [← s.smul_mem_iff (neg_pos.2 hr), smul_sub, smul_neg, neg_smul, neg_neg, smul_smul,
    mul_inv_cancel hr.ne, one_smul, sub_eq_add_neg, neg_smul, neg_neg]
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inl
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : r < 0
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: replace : f (r⁻¹ • ⟨x, hx⟩) ≤ c := le_c (r⁻¹ • ⟨x, hx⟩) (by exact this)
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inl
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : r < 0
this : -(r⁻¹ • x) - y ∈ s
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: rwa [← mul_le_mul_left (neg_pos.2 hr), neg_mul, neg_mul, neg_le_neg_iff, f.map_smul,
  smul_eq_mul, ← mul_assoc, mul_inv_cancel hr.ne, one_mul] at this
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inl
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : r < 0
this : ↑f (r⁻¹ • { val := x, property := hx }) ≤ c
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: rwa [← s.smul_mem_iff (neg_pos.2 hr), smul_sub, smul_neg, neg_smul, neg_neg, smul_smul,
  mul_inv_cancel hr.ne, one_smul, sub_eq_add_neg, neg_smul, neg_neg]
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : r < 0
⊢ -(r⁻¹ • x) - y ∈ s

tactic: exact this
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : r < 0
this : -(r⁻¹ • x) - y ∈ s
⊢ -↑(r⁻¹ • { val := x, property := hx }) - y ∈ s

tactic: subst r
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inl
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : r = 0
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: simp only [zero_smul, add_zero] at hzs⊢
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inl
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
hy' : 0 • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + 0 • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + 0 • y ∈ s
⊢ 0 • c ≤ ↑f { val := x, property := hx }

tactic: apply nonneg
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inl
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
hy' : 0 • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + 0 • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x ∈ s
⊢ 0 ≤ ↑f { val := x, property := hx }

tactic: exact hzs
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inl.a
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
hy' : 0 • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + 0 • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x ∈ s
⊢ ↑{ val := x, property := hx } ∈ s

tactic: have : r⁻¹ • x + y ∈ s := by
  rwa [← s.smul_mem_iff hr, smul_add, smul_smul, mul_inv_cancel hr.ne', one_smul]
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inr
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : 0 < r
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: replace : c ≤ f (r⁻¹ • ⟨x, hx⟩) := c_le (r⁻¹ • ⟨x, hx⟩) (by exact this)
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inr
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : 0 < r
this : r⁻¹ • x + y ∈ s
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: rwa [← mul_le_mul_left hr, f.map_smul, smul_eq_mul, ← mul_assoc, mul_inv_cancel hr.ne',
  one_mul] at this
state_before: case intro.intro.intro.intro.refine'_2.mk.intro.intro.intro.intro.intro.inr.inr
𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : 0 < r
this : c ≤ ↑f (r⁻¹ • { val := x, property := hx })
⊢ r • c ≤ ↑f { val := x, property := hx }

tactic: rwa [← s.smul_mem_iff hr, smul_add, smul_smul, mul_inv_cancel hr.ne', one_smul]
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : 0 < r
⊢ r⁻¹ • x + y ∈ s

tactic: exact this
state_before: 𝕜 : Type ?u.190292
E : Type u_1
F : Type ?u.190298
G : Type ?u.190301
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s : ConvexCone ℝ E
f : E →ₗ.[ℝ] ℝ
nonneg : ∀ (x : { x // x ∈ f.domain }), ↑x ∈ s → 0 ≤ ↑f x
dense : ∀ (y : E), ∃ x, ↑x + y ∈ s
hdom : f.domain ≠ ⊤
y : E
hy : ¬y ∈ f.domain
c : ℝ
le_c : ∀ (x : { x // x ∈ f.domain }), -↑x - y ∈ s → ↑f x ≤ c
c_le : ∀ (x : { x // x ∈ f.domain }), ↑x + y ∈ s → c ≤ ↑f x
x : E
hx : x ∈ f.domain
r : ℝ
hy' : r • y ∈ (LinearPMap.mkSpanSingleton y (-c) (_ : y = 0 → False)).domain
hz : x + r • y ∈ (LinearPMap.supSpanSingleton f y (-c) hy).domain
hzs : x + r • y ∈ s
hr : 0 < r
this : r⁻¹ • x + y ∈ s
⊢ ↑(r⁻¹ • { val := x, property := hx }) + y ∈ s