Theorem: gauge_add_le
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: refine' le_of_forall_pos_lt_add fun ε hε => _
state_before: 𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
⊢ gauge s (x + y) ≤ gauge s x + gauge s y

tactic: obtain ⟨a, ha, ha', hx⟩ :=
  exists_lt_of_gauge_lt absorbs (lt_add_of_pos_right (gauge s x) (half_pos hε))
state_before: 𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
⊢ gauge s (x + y) < gauge s x + gauge s y + ε

tactic: obtain ⟨b, hb, hb', hy⟩ :=
  exists_lt_of_gauge_lt absorbs (lt_add_of_pos_right (gauge s y) (half_pos hε))
state_before: case intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : x ∈ a • s
⊢ gauge s (x + y) < gauge s x + gauge s y + ε

tactic: rw [mem_smul_set_iff_inv_smul_mem₀ ha.ne'] at hx
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : x ∈ a • s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : y ∈ b • s
⊢ gauge s (x + y) < gauge s x + gauge s y + ε

tactic: rw [mem_smul_set_iff_inv_smul_mem₀ hb.ne'] at hy
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : y ∈ b • s
⊢ gauge s (x + y) < gauge s x + gauge s y + ε

tactic: suffices gauge s (x + y) ≤ a + b by linarith
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : b⁻¹ • y ∈ s
⊢ gauge s (x + y) < gauge s x + gauge s y + ε

tactic: have hab : 0 < a + b := add_pos ha hb
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : b⁻¹ • y ∈ s
⊢ gauge s (x + y) ≤ a + b

tactic: apply gauge_le_of_mem hab.le
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : b⁻¹ • y ∈ s
hab : 0 < a + b
⊢ gauge s (x + y) ≤ a + b

tactic: have := convex_iff_div.1 hs hx hy ha.le hb.le hab
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : b⁻¹ • y ∈ s
hab : 0 < a + b
⊢ x + y ∈ (a + b) • s

tactic: rwa [smul_smul, smul_smul, ← mul_div_right_comm, ← mul_div_right_comm, mul_inv_cancel ha.ne',
  mul_inv_cancel hb.ne', ← smul_add, one_div, ← mem_smul_set_iff_inv_smul_mem₀ hab.ne'] at this
state_before: case intro.intro.intro.intro.intro.intro
𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : b⁻¹ • y ∈ s
hab : 0 < a + b
this : (a / (a + b)) • a⁻¹ • x + (b / (a + b)) • b⁻¹ • y ∈ s
⊢ x + y ∈ (a + b) • s

tactic: linarith
state_before: 𝕜 : Type ?u.211297
E : Type u_1
F : Type ?u.211303
inst✝¹ : AddCommGroup E
inst✝ : Module ℝ E
s t : Set E
a✝ : ℝ
hs : Convex ℝ s
absorbs : Absorbent ℝ s
x y : E
ε : ℝ
hε : 0 < ε
a : ℝ
ha : 0 < a
ha' : a < gauge s x + ε / 2
hx : a⁻¹ • x ∈ s
b : ℝ
hb : 0 < b
hb' : b < gauge s y + ε / 2
hy : b⁻¹ • y ∈ s
this : gauge s (x + y) ≤ a + b
⊢ gauge s (x + y) < gauge s x + gauge s y + ε