l3lab/ntp-mathlib huggingface dataset:
theorem strongTopology.continuousConstSMul {M : Type*}
    [Monoid M] [DistribMulAction M F] [SMulCommClass 𝕜₂ M F]
    [TopologicalSpace F] [TopologicalAddGroup F] [ContinuousConstSMul M F] (𝔖 : Set (Set E))
    (h𝔖₁ : 𝔖.Nonempty) (h𝔖₂ : DirectedOn (· ⊆ ·) 𝔖) :
    @ContinuousConstSMul M (E →SL[σ] F) (strongTopology σ F 𝔖) _ := by
  letI := strongTopology σ F 𝔖
  haveI : TopologicalAddGroup (E →SL[σ] F) := strongTopology.topologicalAddGroup σ F 𝔖
  refine ⟨fun c ↦ continuous_of_continuousAt_zero (DistribSMul.toAddMonoidHom _ c) ?_⟩
  have H₁ := strongTopology.hasBasis_nhds_zero σ F _ h𝔖₁ h𝔖₂
  have H₂ : Filter.Tendsto (c • ·) (𝓝 0 : Filter F) (𝓝 0) :=
    (continuous_const_smul c).tendsto' 0 _ (smul_zero _)
  rw [ContinuousAt, map_zero, H₁.tendsto_iff H₁]
  

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
inst✝¹⁷ : NormedField 𝕜₁
inst✝¹⁶ : NormedField 𝕜₂
σ : 𝕜₁ →+* 𝕜₂
E : Type u_3
E' : Type u_4
F : Type u_5
F' : Type u_6
inst✝¹⁵ : AddCommGroup E
inst✝¹⁴ : Module 𝕜₁ E
inst✝¹³ : AddCommGroup E'
inst✝¹² : Module ℝ E'
inst✝¹¹ : AddCommGroup F
inst✝¹⁰ : Module 𝕜₂ F
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module ℝ F'
inst✝⁷ : TopologicalSpace E
inst✝⁶ : TopologicalSpace E'
M : Type u_7
inst✝⁵ : Monoid M
inst✝⁴ : DistribMulAction M F
inst✝³ : SMulCommClass 𝕜₂ M F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousConstSMul M F
𝔖 : Set (Set E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
this✝ : TopologicalSpace (E →SL[σ] F) := strongTopology σ F 𝔖
this : TopologicalAddGroup (E →SL[σ] F)
c : M
H₁ : Filter.HasBasis (𝓝 0) (fun SV => SV.1 ∈ 𝔖 ∧ SV.2 ∈ 𝓝 0) fun SV => {f | ∀ x ∈ SV.1, f x ∈ SV.2}
H₂ : Filter.Tendsto (fun x => c • x) (𝓝 0) (𝓝 0)
⊢ ∀ (ib : Set E × Set F),
    ib.1 ∈ 𝔖 ∧ ib.2 ∈ 𝓝 0 →
      ∃ ia,
        (ia.1 ∈ 𝔖 ∧ ia.2 ∈ 𝓝 0) ∧
          ∀ x ∈ {f | ∀ x ∈ ia.1, f x ∈ ia.2},
            (DistribSMul.toAddMonoidHom (E →SL[σ] F) c) x ∈ {f | ∀ x ∈ ib.1, f x ∈ ib.2}

Next tactic:
rintro ⟨s, t⟩ ⟨hs : s ∈ 𝔖, ht : t ∈ 𝓝 0⟩
theorem strongTopology.continuousConstSMul {M : Type*}
    [Monoid M] [DistribMulAction M F] [SMulCommClass 𝕜₂ M F]
    [TopologicalSpace F] [TopologicalAddGroup F] [ContinuousConstSMul M F] (𝔖 : Set (Set E))
    (h𝔖₁ : 𝔖.Nonempty) (h𝔖₂ : DirectedOn (· ⊆ ·) 𝔖) :
    @ContinuousConstSMul M (E →SL[σ] F) (strongTopology σ F 𝔖) _ := by
  letI := strongTopology σ F 𝔖
  haveI : TopologicalAddGroup (E →SL[σ] F) := strongTopology.topologicalAddGroup σ F 𝔖
  refine ⟨fun c ↦ continuous_of_continuousAt_zero (DistribSMul.toAddMonoidHom _ c) ?_⟩
  have H₁ := strongTopology.hasBasis_nhds_zero σ F _ h𝔖₁ h𝔖₂
  have H₂ : Filter.Tendsto (c • ·) (𝓝 0 : Filter F) (𝓝 0) :=
    (continuous_const_smul c).tendsto' 0 _ (smul_zero _)
  rw [ContinuousAt, map_zero, H₁.tendsto_iff H₁]
  rintro ⟨s, t⟩ ⟨hs : s ∈ 𝔖, ht : t ∈ 𝓝 0⟩
  

Proof state:
case mk.intro
𝕜₁ : Type u_1
𝕜₂ : Type u_2
inst✝¹⁷ : NormedField 𝕜₁
inst✝¹⁶ : NormedField 𝕜₂
σ : 𝕜₁ →+* 𝕜₂
E : Type u_3
E' : Type u_4
F : Type u_5
F' : Type u_6
inst✝¹⁵ : AddCommGroup E
inst✝¹⁴ : Module 𝕜₁ E
inst✝¹³ : AddCommGroup E'
inst✝¹² : Module ℝ E'
inst✝¹¹ : AddCommGroup F
inst✝¹⁰ : Module 𝕜₂ F
inst✝⁹ : AddCommGroup F'
inst✝⁸ : Module ℝ F'
inst✝⁷ : TopologicalSpace E
inst✝⁶ : TopologicalSpace E'
M : Type u_7
inst✝⁵ : Monoid M
inst✝⁴ : DistribMulAction M F
inst✝³ : SMulCommClass 𝕜₂ M F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousConstSMul M F
𝔖 : Set (Set E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
this✝ : TopologicalSpace (E →SL[σ] F) := strongTopology σ F 𝔖
this : TopologicalAddGroup (E →SL[σ] F)
c : M
H₁ : Filter.HasBasis (𝓝 0) (fun SV => SV.1 ∈ 𝔖 ∧ SV.2 ∈ 𝓝 0) fun SV => {f | ∀ x ∈ SV.1, f x ∈ SV.2}
H₂ : Filter.Tendsto (fun x => c • x) (𝓝 0) (𝓝 0)
s : Set E
t : Set F
hs : s ∈ 𝔖
ht : t ∈ 𝓝 0
⊢ ∃ ia,
    (ia.1 ∈ 𝔖 ∧ ia.2 ∈ 𝓝 0) ∧
      ∀ x ∈ {f | ∀ x ∈ ia.1, f x ∈ ia.2},
        (DistribSMul.toAddMonoidHom (E →SL[σ] F) c) x ∈ {f | ∀ x ∈ (s, t).1, f x ∈ (s, t).2}

Next tactic:
exact ⟨(s, (c • ·) ⁻¹' t), ⟨hs, H₂ ht⟩, fun f  ↦ _root_.id⟩
/-- Pre-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def precomp [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G] [RingHomSurjective σ]
    [RingHomIsometric σ] (L : E →SL[σ] F) : (F →SL[τ] G) →L[𝕜₃] E →SL[ρ] G
    where
  toFun f := f.comp L
  map_add' f g := add_comp f g L
  map_smul' a f := smul_comp a f L
  cont := by
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : ContinuousConstSMul 𝕜₃ G
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
L : E →SL[σ] F
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp f L,
              map_add' := (_ : ∀ (f g : F →SL[τ] G), comp (f + g) L = comp f L + comp g L) },
          map_smul' := (_ : ∀ (a : 𝕜₃) (f : F →SL[τ] G), comp (a • f) L = a • comp f L) }.toAddHom.toFun

Next tactic:
letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
/-- Pre-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def precomp [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G] [RingHomSurjective σ]
    [RingHomIsometric σ] (L : E →SL[σ] F) : (F →SL[τ] G) →L[𝕜₃] E →SL[ρ] G
    where
  toFun f := f.comp L
  map_add' f g := add_comp f g L
  map_smul' a f := smul_comp a f L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : ContinuousConstSMul 𝕜₃ G
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
L : E →SL[σ] F
this : UniformSpace G := TopologicalAddGroup.toUniformSpace G
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp f L,
              map_add' := (_ : ∀ (f g : F →SL[τ] G), comp (f + g) L = comp f L + comp g L) },
          map_smul' := (_ : ∀ (a : 𝕜₃) (f : F →SL[τ] G), comp (a • f) L = a • comp f L) }.toAddHom.toFun

Next tactic:
haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
/-- Pre-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def precomp [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G] [RingHomSurjective σ]
    [RingHomIsometric σ] (L : E →SL[σ] F) : (F →SL[τ] G) →L[𝕜₃] E →SL[ρ] G
    where
  toFun f := f.comp L
  map_add' f g := add_comp f g L
  map_smul' a f := smul_comp a f L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : ContinuousConstSMul 𝕜₃ G
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
L : E →SL[σ] F
this✝ : UniformSpace G := TopologicalAddGroup.toUniformSpace G
this : UniformAddGroup G
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp f L,
              map_add' := (_ : ∀ (f g : F →SL[τ] G), comp (f + g) L = comp f L + comp g L) },
          map_smul' := (_ : ∀ (a : 𝕜₃) (f : F →SL[τ] G), comp (a • f) L = a • comp f L) }.toAddHom.toFun

Next tactic:
rw [(strongTopology.embedding_coeFn _ _ _).continuous_iff]
/-- Pre-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def precomp [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G] [RingHomSurjective σ]
    [RingHomIsometric σ] (L : E →SL[σ] F) : (F →SL[τ] G) →L[𝕜₃] E →SL[ρ] G
    where
  toFun f := f.comp L
  map_add' f g := add_comp f g L
  map_smul' a f := smul_comp a f L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
    rw [(strongTopology.embedding_coeFn _ _ _).continuous_iff]
    -- Porting note: without this, the following doesn't work
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : ContinuousConstSMul 𝕜₃ G
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
L : E →SL[σ] F
this✝ : UniformSpace G := TopologicalAddGroup.toUniformSpace G
this : UniformAddGroup G
⊢ Continuous
    ((⇑(UniformOnFun.ofFun {S | Bornology.IsVonNBounded 𝕜₁ S}) ∘ FunLike.coe) ∘
      {
            toAddHom :=
              { toFun := fun f => comp f L,
                map_add' := (_ : ∀ (f g : F →SL[τ] G), comp (f + g) L = comp f L + comp g L) },
            map_smul' := (_ : ∀ (a : 𝕜₃) (f : F →SL[τ] G), comp (a • f) L = a • comp f L) }.toAddHom.toFun)

Next tactic:
change Continuous ((λ f ↦ UniformOnFun.ofFun _ (f ∘ L)) ∘ FunLike.coe)
/-- Pre-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def precomp [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G] [RingHomSurjective σ]
    [RingHomIsometric σ] (L : E →SL[σ] F) : (F →SL[τ] G) →L[𝕜₃] E →SL[ρ] G
    where
  toFun f := f.comp L
  map_add' f g := add_comp f g L
  map_smul' a f := smul_comp a f L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
    rw [(strongTopology.embedding_coeFn _ _ _).continuous_iff]
    -- Porting note: without this, the following doesn't work
    change Continuous ((λ f ↦ UniformOnFun.ofFun _ (f ∘ L)) ∘ FunLike.coe)
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : ContinuousConstSMul 𝕜₃ G
inst✝¹ : RingHomSurjective σ
inst✝ : RingHomIsometric σ
L : E →SL[σ] F
this✝ : UniformSpace G := TopologicalAddGroup.toUniformSpace G
this : UniformAddGroup G
⊢ Continuous ((fun f => (UniformOnFun.ofFun {S | Bornology.IsVonNBounded 𝕜₁ S}) (f ∘ ⇑L)) ∘ FunLike.coe)

Next tactic:
exact (UniformOnFun.precomp_uniformContinuous fun S hS => hS.image L).continuous.comp
        (strongTopology.embedding_coeFn _ _ _).continuous
/-- Post-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def postcomp [TopologicalAddGroup F] [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G]
    [ContinuousConstSMul 𝕜₂ F] (L : F →SL[τ] G) : (E →SL[σ] F) →SL[τ] E →SL[ρ] G
    where
  toFun f := L.comp f
  map_add' := comp_add L
  map_smul' := comp_smulₛₗ L
  cont := by
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup F
inst✝² : TopologicalAddGroup G
inst✝¹ : ContinuousConstSMul 𝕜₃ G
inst✝ : ContinuousConstSMul 𝕜₂ F
L : F →SL[τ] G
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp L f,
              map_add' := (_ : ∀ (f₁ f₂ : E →SL[σ] F), comp L (f₁ + f₂) = comp L f₁ + comp L f₂) },
          map_smul' := (_ : ∀ (c : 𝕜₂) (f : E →SL[σ] F), comp L (c • f) = τ c • comp L f) }.toAddHom.toFun

Next tactic:
letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
/-- Post-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def postcomp [TopologicalAddGroup F] [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G]
    [ContinuousConstSMul 𝕜₂ F] (L : F →SL[τ] G) : (E →SL[σ] F) →SL[τ] E →SL[ρ] G
    where
  toFun f := L.comp f
  map_add' := comp_add L
  map_smul' := comp_smulₛₗ L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup F
inst✝² : TopologicalAddGroup G
inst✝¹ : ContinuousConstSMul 𝕜₃ G
inst✝ : ContinuousConstSMul 𝕜₂ F
L : F →SL[τ] G
this : UniformSpace G := TopologicalAddGroup.toUniformSpace G
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp L f,
              map_add' := (_ : ∀ (f₁ f₂ : E →SL[σ] F), comp L (f₁ + f₂) = comp L f₁ + comp L f₂) },
          map_smul' := (_ : ∀ (c : 𝕜₂) (f : E →SL[σ] F), comp L (c • f) = τ c • comp L f) }.toAddHom.toFun

Next tactic:
haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
/-- Post-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def postcomp [TopologicalAddGroup F] [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G]
    [ContinuousConstSMul 𝕜₂ F] (L : F →SL[τ] G) : (E →SL[σ] F) →SL[τ] E →SL[ρ] G
    where
  toFun f := L.comp f
  map_add' := comp_add L
  map_smul' := comp_smulₛₗ L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup F
inst✝² : TopologicalAddGroup G
inst✝¹ : ContinuousConstSMul 𝕜₃ G
inst✝ : ContinuousConstSMul 𝕜₂ F
L : F →SL[τ] G
this✝ : UniformSpace G := TopologicalAddGroup.toUniformSpace G
this : UniformAddGroup G
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp L f,
              map_add' := (_ : ∀ (f₁ f₂ : E →SL[σ] F), comp L (f₁ + f₂) = comp L f₁ + comp L f₂) },
          map_smul' := (_ : ∀ (c : 𝕜₂) (f : E →SL[σ] F), comp L (c • f) = τ c • comp L f) }.toAddHom.toFun

Next tactic:
letI : UniformSpace F := TopologicalAddGroup.toUniformSpace F
/-- Post-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def postcomp [TopologicalAddGroup F] [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G]
    [ContinuousConstSMul 𝕜₂ F] (L : F →SL[τ] G) : (E →SL[σ] F) →SL[τ] E →SL[ρ] G
    where
  toFun f := L.comp f
  map_add' := comp_add L
  map_smul' := comp_smulₛₗ L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
    letI : UniformSpace F := TopologicalAddGroup.toUniformSpace F
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup F
inst✝² : TopologicalAddGroup G
inst✝¹ : ContinuousConstSMul 𝕜₃ G
inst✝ : ContinuousConstSMul 𝕜₂ F
L : F →SL[τ] G
this✝¹ : UniformSpace G := TopologicalAddGroup.toUniformSpace G
this✝ : UniformAddGroup G
this : UniformSpace F := TopologicalAddGroup.toUniformSpace F
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp L f,
              map_add' := (_ : ∀ (f₁ f₂ : E →SL[σ] F), comp L (f₁ + f₂) = comp L f₁ + comp L f₂) },
          map_smul' := (_ : ∀ (c : 𝕜₂) (f : E →SL[σ] F), comp L (c • f) = τ c • comp L f) }.toAddHom.toFun

Next tactic:
haveI : UniformAddGroup F := comm_topologicalAddGroup_is_uniform
/-- Post-composition by a *fixed* continuous linear map as a continuous linear map.
Note that in non-normed space it is not always true that composition is continuous
in both variables, so we have to fix one of them. -/
@[simps]
def postcomp [TopologicalAddGroup F] [TopologicalAddGroup G] [ContinuousConstSMul 𝕜₃ G]
    [ContinuousConstSMul 𝕜₂ F] (L : F →SL[τ] G) : (E →SL[σ] F) →SL[τ] E →SL[ρ] G
    where
  toFun f := L.comp f
  map_add' := comp_add L
  map_smul' := comp_smulₛₗ L
  cont := by
    letI : UniformSpace G := TopologicalAddGroup.toUniformSpace G
    haveI : UniformAddGroup G := comm_topologicalAddGroup_is_uniform
    letI : UniformSpace F := TopologicalAddGroup.toUniformSpace F
    haveI : UniformAddGroup F := comm_topologicalAddGroup_is_uniform
    

Proof state:
𝕜₁ : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type u_3
inst✝²⁰ : NormedField 𝕜₁
inst✝¹⁹ : NormedField 𝕜₂
inst✝¹⁸ : NormedField 𝕜₃
σ : 𝕜₁ →+* 𝕜₂
τ : 𝕜₂ →+* 𝕜₃
ρ : 𝕜₁ →+* 𝕜₃
inst✝¹⁷ : RingHomCompTriple σ τ ρ
E : Type u_4
E' : Type u_5
F : Type u_6
F' : Type u_7
G : Type u_8
inst✝¹⁶ : AddCommGroup E
inst✝¹⁵ : Module 𝕜₁ E
inst✝¹⁴ : AddCommGroup E'
inst✝¹³ : Module ℝ E'
inst✝¹² : AddCommGroup F
inst✝¹¹ : Module 𝕜₂ F
inst✝¹⁰ : AddCommGroup F'
inst✝⁹ : Module ℝ F'
inst✝⁸ : AddCommGroup G
inst✝⁷ : Module 𝕜₃ G
inst✝⁶ : TopologicalSpace E
inst✝⁵ : TopologicalSpace F
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup F
inst✝² : TopologicalAddGroup G
inst✝¹ : ContinuousConstSMul 𝕜₃ G
inst✝ : ContinuousConstSMul 𝕜₂ F
L : F →SL[τ] G
this✝² : UniformSpace G := TopologicalAddGroup.toUniformSpace G
this✝¹ : UniformAddGroup G
this✝ : UniformSpace F := TopologicalAddGroup.toUniformSpace F
this : UniformAddGroup F
⊢ Continuous
    {
          toAddHom :=
            { toFun := fun f => comp L f,
              map_add' := (_ : ∀ (f₁ f₂ : E →SL[σ] F), comp L (f₁ + f₂) = comp L f₁ + comp L f₂) },
          map_smul' := (_ : ∀ (c : 𝕜₂) (f : E →SL[σ] F), comp L (c • f) = τ c • comp L f) }.toAddHom.toFun

Next tactic:
rw [(strongTopology.embedding_coeFn _ _ _).continuous_iff]