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

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
⊢ gauge s (a • x) = a • gauge s x
state_after: case inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
x : E
ha : 0 ≤ 0
⊢ gauge s (0 • x) = 0 • gauge s x

case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
⊢ gauge s (a • x) = a • gauge s x
tactic: obtain rfl | ha' := ha.eq_or_lt
state_before: case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
⊢ gauge s (a • x) = a • gauge s x
state_after: case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s} = sInf (a • {r | r ∈ Ioi 0 ∧ r⁻¹ • x ∈ s})
tactic: rw [gauge_def', gauge_def', ← Real.sInf_smul_of_nonneg ha]
state_before: case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
⊢ sInf {r | r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s} = sInf (a • {r | r ∈ Ioi 0 ∧ r⁻¹ • x ∈ s})
state_after: case inr.e_a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
⊢ {r | r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s} = a • {r | r ∈ Ioi 0 ∧ r⁻¹ • x ∈ s}
tactic: congr 1
state_before: case inr.e_a
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
⊢ {r | r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s} = a • {r | r ∈ Ioi 0 ∧ r⁻¹ • x ∈ s}
state_after: case inr.e_a.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
r : ℝ
⊢ r ∈ {r | r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s} ↔ r ∈ a • {r | r ∈ Ioi 0 ∧ r⁻¹ • x ∈ s}
tactic: ext r
state_before: case inr.e_a.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
r : ℝ
⊢ r ∈ {r | r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s} ↔ r ∈ a • {r | r ∈ Ioi 0 ∧ r⁻¹ • x ∈ s}
state_after: case inr.e_a.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
r : ℝ
⊢ r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s ↔ ∃ y, (y ∈ Ioi 0 ∧ y⁻¹ • x ∈ s) ∧ a • y = r
tactic: simp_rw [Set.mem_smul_set, Set.mem_sep_iff]
state_before: case inr.e_a.h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
r : ℝ
⊢ r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s ↔ ∃ y, (y ∈ Ioi 0 ∧ y⁻¹ • x ∈ s) ∧ a • y = r
state_after: case inr.e_a.h.mp
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
r : ℝ
⊢ r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s → ∃ y, (y ∈ Ioi 0 ∧ y⁻¹ • x ∈ s) ∧ a • y = r

case inr.e_a.h.mpr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module ℝ E
s✝ t : Set E
x✝ : E
a✝ : ℝ
α : Type u_4
inst✝⁴ : LinearOrderedField α
inst✝³ : MulActionWithZero α ℝ
inst✝² : OrderedSMul α ℝ
inst✝¹ : MulActionWithZero α E
inst✝ : IsScalarTower α ℝ (Set E)
s : Set E
a : α
ha : 0 ≤ a
x : E
ha' : 0 < a
r : ℝ
⊢ (∃ y, (y ∈ Ioi 0 ∧ y⁻¹ • x ∈ s) ∧ a • y = r) → r ∈ Ioi 0 ∧ r⁻¹ • a • x ∈ s
tactic: constructor