Theorem: exists_extension_norm_eq
File: Mathlib/Analysis/NormedSpace/HahnBanach/Extension.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
state_after: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
tactic: letI : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
state_after: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
tactic: letI : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower _ _ _
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
state_after: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
tactic: letI : NormedSpace ℝ E := NormedSpace.restrictScalars _ 𝕜 _
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
state_after: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
tactic: let fr := reCLM.comp (f.restrictScalars ℝ)
state_before: 𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
state_after: case intro.intro
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
g : E →L[ℝ] ℝ
hextends : ∀ (x : ↥(Submodule.restrictScalars ℝ p)), g ↑x = fr x
hnormeq : ‖g‖ = ‖fr‖
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
tactic: rcases Real.exists_extension_norm_eq (p.restrictScalars ℝ) fr with ⟨g, ⟨hextends, hnormeq⟩⟩
state_before: case intro.intro
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
g : E →L[ℝ] ℝ
hextends : ∀ (x : ↥(Submodule.restrictScalars ℝ p)), g ↑x = fr x
hnormeq : ‖g‖ = ‖fr‖
⊢ ∃ g, (∀ (x : ↥p), g ↑x = f x) ∧ ‖g‖ = ‖f‖
state_after: case intro.intro
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
g : E →L[ℝ] ℝ
hextends : ∀ (x : ↥(Submodule.restrictScalars ℝ p)), g ↑x = fr x
hnormeq : ‖g‖ = ‖fr‖
⊢ (∀ (x : ↥p), g.extendTo𝕜 ↑x = f x) ∧ ‖g.extendTo𝕜‖ = ‖f‖
tactic: refine ⟨g.extendTo𝕜, ?_⟩
state_before: case intro.intro
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
g : E →L[ℝ] ℝ
hextends : ∀ (x : ↥(Submodule.restrictScalars ℝ p)), g ↑x = fr x
hnormeq : ‖g‖ = ‖fr‖
h : ∀ (x : ↥p), g.extendTo𝕜 ↑x = f x
⊢ (∀ (x : ↥p), g.extendTo𝕜 ↑x = f x) ∧ ‖g.extendTo𝕜‖ = ‖f‖
state_after: case intro.intro.refine_1
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
g : E →L[ℝ] ℝ
hextends : ∀ (x : ↥(Submodule.restrictScalars ℝ p)), g ↑x = fr x
hnormeq : ‖g‖ = ‖fr‖
h : ∀ (x : ↥p), g.extendTo𝕜 ↑x = f x
⊢ ‖g.extendTo𝕜‖ ≤ ‖f‖

case intro.intro.refine_2
𝕜 : Type u_1
inst✝⁴ : RCLike 𝕜
E : Type u_2
F : Type u_3
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : Subspace 𝕜 E
f : ↥p →L[𝕜] 𝕜
this✝¹ : Module ℝ E := RestrictScalars.module ℝ 𝕜 E
this✝ : IsScalarTower ℝ 𝕜 E := RestrictScalars.isScalarTower ℝ 𝕜 E
this : NormedSpace ℝ E := NormedSpace.restrictScalars ℝ 𝕜 E
fr : ↥p →L[ℝ] ℝ := reCLM.comp (ContinuousLinearMap.restrictScalars ℝ f)
g : E →L[ℝ] ℝ
hextends : ∀ (x : ↥(Submodule.restrictScalars ℝ p)), g ↑x = fr x
hnormeq : ‖g‖ = ‖fr‖
h : ∀ (x : ↥p), g.extendTo𝕜 ↑x = f x
⊢ ‖f‖ ≤ ‖g.extendTo𝕜‖
tactic: refine ⟨h, le_antisymm ?_ ?_⟩