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

tactic: intro x hx
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
⊢ interior s ⊆ {x | gauge s x < 1}

tactic: let f : ℝ → E := fun t => t • x
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
⊢ x ∈ {x | gauge s x < 1}

tactic: have hf : Continuous f := by continuity
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
⊢ x ∈ {x | gauge s x < 1}

tactic: let s' := f ⁻¹' interior s
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
⊢ x ∈ {x | gauge s x < 1}

tactic: have hs' : IsOpen s' := hf.isOpen_preimage _ isOpen_interior
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
⊢ x ∈ {x | gauge s x < 1}

tactic: have one_mem : (1 : ℝ) ∈ s' := by simpa only [Set.mem_preimage, one_smul]
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
⊢ x ∈ {x | gauge s x < 1}

tactic: obtain ⟨ε, hε₀, hε⟩ := (Metric.nhds_basis_closedBall.1 _).1 (isOpen_iff_mem_nhds.1 hs' 1 one_mem)
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
⊢ x ∈ {x | gauge s x < 1}

tactic: rw [Real.closedBall_eq_Icc] at hε
state_before: case intro.intro
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Metric.closedBall 1 ε ⊆ s'
⊢ x ∈ {x | gauge s x < 1}

tactic: have hε₁ : 0 < 1 + ε := hε₀.trans (lt_one_add ε)
state_before: case intro.intro
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
⊢ x ∈ {x | gauge s x < 1}

tactic: have : (1 + ε)⁻¹ < 1 := by
  rw [inv_lt_one_iff]
  right
  linarith
state_before: case intro.intro
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
⊢ x ∈ {x | gauge s x < 1}

tactic: refine' (gauge_le_of_mem (inv_nonneg.2 hε₁.le) _).trans_lt this
state_before: case intro.intro
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
this : (1 + ε)⁻¹ < 1
⊢ x ∈ {x | gauge s x < 1}

tactic: rw [mem_inv_smul_set_iff₀ hε₁.ne']
state_before: case intro.intro
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
this : (1 + ε)⁻¹ < 1
⊢ x ∈ (1 + ε)⁻¹ • s

tactic: exact
  interior_subset
    (hε ⟨(sub_le_self _ hε₀.le).trans ((le_add_iff_nonneg_right _).2 hε₀.le), le_rfl⟩)
state_before: case intro.intro
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
this : (1 + ε)⁻¹ < 1
⊢ (1 + ε) • x ∈ s

tactic: continuity
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
⊢ Continuous f

tactic: simpa only [Set.mem_preimage, one_smul]
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
⊢ 1 ∈ s'

tactic: rw [inv_lt_one_iff]
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
⊢ (1 + ε)⁻¹ < 1

tactic: right
state_before: 𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
⊢ 1 + ε ≤ 0 ∨ 1 < 1 + ε

tactic: linarith
state_before: case h
𝕜 : Type ?u.178960
E : Type u_1
F : Type ?u.178966
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s✝ t : Set E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set E
x : E
hx : x ∈ interior s
f : ℝ → E := fun t => t • x
hf : Continuous f
s' : Set ℝ := f ⁻¹' interior s
hs' : IsOpen s'
one_mem : 1 ∈ s'
ε : ℝ
hε₀ : 0 < ε
hε : Icc (1 - ε) (1 + ε) ⊆ s'
hε₁ : 0 < 1 + ε
⊢ 1 < 1 + ε