[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalMono (F.map f)
⊢ F.map (f ≫ Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv)) = F.map 0
[PROOFSTEP]
have reassoc' {W : D} (h : hf.Z ⟶ W) : F.map f ≫ hf.g ≫ h = 0 ≫ h := by rw [← Category.assoc, eq_whisker hf.w]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalMono (F.map f)
W : D
h : NormalMono.Z (F.map f) ⟶ W
⊢ F.map f ≫ NormalMono.g ≫ h = 0 ≫ h
[PROOFSTEP]
rw [← Category.assoc, eq_whisker hf.w]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalMono (F.map f)
reassoc' : ∀ {W : D} (h : NormalMono.Z (F.map f) ⟶ W), F.map f ≫ NormalMono.g ≫ h = 0 ≫ h
⊢ F.map (f ≫ Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv)) = F.map 0
[PROOFSTEP]
simp [reassoc']
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalMono (F.map f)
⊢ F.map (Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv)) ≫
      (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).hom =
    NormalMono.g
[PROOFSTEP]
simp only [Full.witness, Category.assoc, Iso.inv_hom_id, Category.comp_id]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalMono (F.map f)
⊢ KernelFork.ofι
      (Fork.ι (KernelFork.ofι (F.map f) (_ : F.map f ≫ NormalMono.g = 0)) ≫
        𝟙 ((parallelPair NormalMono.g 0).obj WalkingParallelPair.zero))
      (_ :
        (Fork.ι (KernelFork.ofι (F.map f) (_ : F.map f ≫ NormalMono.g = 0)) ≫
              𝟙 ((parallelPair NormalMono.g 0).obj WalkingParallelPair.zero)) ≫
            F.map (Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv)) =
          0) ≅
    (Cones.postcomposeEquivalence (compNatIso F)).functor.obj
      (F.mapCone
        (KernelFork.ofι f
          (_ : f ≫ Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv) = 0)))
[PROOFSTEP]
apply Iso.symm
[GOAL]
case I
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalMono (F.map f)
⊢ (Cones.postcomposeEquivalence (compNatIso F)).functor.obj
      (F.mapCone
        (KernelFork.ofι f
          (_ : f ≫ Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv) = 0))) ≅
    KernelFork.ofι
      (Fork.ι (KernelFork.ofι (F.map f) (_ : F.map f ≫ NormalMono.g = 0)) ≫
        𝟙 ((parallelPair NormalMono.g 0).obj WalkingParallelPair.zero))
      (_ :
        (Fork.ι (KernelFork.ofι (F.map f) (_ : F.map f ≫ NormalMono.g = 0)) ≫
              𝟙 ((parallelPair NormalMono.g 0).obj WalkingParallelPair.zero)) ≫
            F.map (Full.preimage (NormalMono.g ≫ (Functor.objObjPreimageIso F (NormalMono.Z (F.map f))).inv)) =
          0)
[PROOFSTEP]
apply isoOfι
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
f : X ⟶ Y
I : NormalMono f
⊢ f ≫ g = f ≫ 0
[PROOFSTEP]
simpa using I.w
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
hn : NormalMono h
comm : f ≫ h = g ≫ k
t : IsLimit (PullbackCone.mk f g comm)
⊢ g ≫ k ≫ NormalMono.g = 0
[PROOFSTEP]
have reassoc' {W : C} (h' : S ⟶ W) : f ≫ h ≫ h' = g ≫ k ≫ h' := by simp only [← Category.assoc, eq_whisker comm]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
hn : NormalMono h
comm : f ≫ h = g ≫ k
t : IsLimit (PullbackCone.mk f g comm)
W : C
h' : S ⟶ W
⊢ f ≫ h ≫ h' = g ≫ k ≫ h'
[PROOFSTEP]
simp only [← Category.assoc, eq_whisker comm]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
hn : NormalMono h
comm : f ≫ h = g ≫ k
t : IsLimit (PullbackCone.mk f g comm)
reassoc' : ∀ {W : C} (h' : S ⟶ W), f ≫ h ≫ h' = g ≫ k ≫ h'
⊢ g ≫ k ≫ NormalMono.g = 0
[PROOFSTEP]
rw [← reassoc', hn.w, HasZeroMorphisms.comp_zero]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
hn : NormalMono h
comm : f ≫ h = g ≫ k
t : IsLimit (PullbackCone.mk f g comm)
⊢ IsLimit (KernelFork.ofι g (_ : g ≫ k ≫ NormalMono.g = 0))
[PROOFSTEP]
letI gr := regularOfIsPullbackSndOfRegular comm t
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
hn : NormalMono h
comm : f ≫ h = g ≫ k
t : IsLimit (PullbackCone.mk f g comm)
gr : RegularMono g := regularOfIsPullbackSndOfRegular comm t
⊢ IsLimit (KernelFork.ofι g (_ : g ≫ k ≫ NormalMono.g = 0))
[PROOFSTEP]
have q := (HasZeroMorphisms.comp_zero k hn.Z).symm
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
hn : NormalMono h
comm : f ≫ h = g ≫ k
t : IsLimit (PullbackCone.mk f g comm)
gr : RegularMono g := regularOfIsPullbackSndOfRegular comm t
q : 0 = k ≫ 0
⊢ IsLimit (KernelFork.ofι g (_ : g ≫ k ≫ NormalMono.g = 0))
[PROOFSTEP]
convert gr.isLimit
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
inst✝¹ : HasZeroMorphisms C
inst✝ : NormalMonoCategory C
X✝ Y✝ : C
f : X✝ ⟶ Y✝
x✝ : Mono f
⊢ RegularMono f
[PROOFSTEP]
haveI := normalMonoOfMono f
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
inst✝¹ : HasZeroMorphisms C
inst✝ : NormalMonoCategory C
X✝ Y✝ : C
f : X✝ ⟶ Y✝
x✝ : Mono f
this : NormalMono f
⊢ RegularMono f
[PROOFSTEP]
infer_instance
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalEpi (F.map f)
⊢ F.map (Full.preimage ((Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).hom ≫ NormalEpi.g) ≫ f) = F.map 0
[PROOFSTEP]
simp [hf.w]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalEpi (F.map f)
⊢ (Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).symm.hom ≫
      F.map (Full.preimage ((Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).hom ≫ NormalEpi.g)) =
    NormalEpi.g
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalEpi (F.map f)
⊢ CokernelCofork.ofπ
      (𝟙 ((parallelPair NormalEpi.g 0).obj WalkingParallelPair.one) ≫
        Cofork.π (CokernelCofork.ofπ (F.map f) (_ : NormalEpi.g ≫ F.map f = 0)))
      (_ :
        F.map (Full.preimage ((Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).hom ≫ NormalEpi.g)) ≫
            𝟙 ((parallelPair NormalEpi.g 0).obj WalkingParallelPair.one) ≫
              Cofork.π (CokernelCofork.ofπ (F.map f) (_ : NormalEpi.g ≫ F.map f = 0)) =
          0) ≅
    (Cocones.precomposeEquivalence (compNatIso F).symm).functor.obj
      (F.mapCocone
        (CokernelCofork.ofπ f
          (_ : Full.preimage ((Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).hom ≫ NormalEpi.g) ≫ f = 0)))
[PROOFSTEP]
apply Iso.symm
[GOAL]
case I
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝³ : HasZeroMorphisms C
D : Type u₂
inst✝² : Category.{v₁, u₂} D
inst✝¹ : HasZeroMorphisms D
F : C ⥤ D
inst✝ : IsEquivalence F
X Y : C
f : X ⟶ Y
hf : NormalEpi (F.map f)
⊢ (Cocones.precomposeEquivalence (compNatIso F).symm).functor.obj
      (F.mapCocone
        (CokernelCofork.ofπ f
          (_ : Full.preimage ((Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).hom ≫ NormalEpi.g) ≫ f = 0))) ≅
    CokernelCofork.ofπ
      (𝟙 ((parallelPair NormalEpi.g 0).obj WalkingParallelPair.one) ≫
        Cofork.π (CokernelCofork.ofπ (F.map f) (_ : NormalEpi.g ≫ F.map f = 0)))
      (_ :
        F.map (Full.preimage ((Functor.objObjPreimageIso F (NormalEpi.W (F.map f))).hom ≫ NormalEpi.g)) ≫
            𝟙 ((parallelPair NormalEpi.g 0).obj WalkingParallelPair.one) ≫
              Cofork.π (CokernelCofork.ofπ (F.map f) (_ : NormalEpi.g ≫ F.map f = 0)) =
          0)
[PROOFSTEP]
apply isoOfπ
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
f : X ⟶ Y
I : NormalEpi f
⊢ g ≫ f = 0 ≫ f
[PROOFSTEP]
simpa using I.w
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
gn : NormalEpi g
comm : f ≫ h = g ≫ k
t : IsColimit (PushoutCocone.mk h k comm)
⊢ (NormalEpi.g ≫ f) ≫ h = 0
[PROOFSTEP]
have reassoc' {W : C} (h' : R ⟶ W) : gn.g ≫ g ≫ h' = 0 ≫ h' := by rw [← Category.assoc, eq_whisker gn.w]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
gn : NormalEpi g
comm : f ≫ h = g ≫ k
t : IsColimit (PushoutCocone.mk h k comm)
W : C
h' : R ⟶ W
⊢ NormalEpi.g ≫ g ≫ h' = 0 ≫ h'
[PROOFSTEP]
rw [← Category.assoc, eq_whisker gn.w]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
gn : NormalEpi g
comm : f ≫ h = g ≫ k
t : IsColimit (PushoutCocone.mk h k comm)
reassoc' : ∀ {W : C} (h' : R ⟶ W), NormalEpi.g ≫ g ≫ h' = 0 ≫ h'
⊢ (NormalEpi.g ≫ f) ≫ h = 0
[PROOFSTEP]
rw [Category.assoc, comm, reassoc', zero_comp]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
gn : NormalEpi g
comm : f ≫ h = g ≫ k
t : IsColimit (PushoutCocone.mk h k comm)
⊢ IsColimit (CokernelCofork.ofπ h (_ : (NormalEpi.g ≫ f) ≫ h = 0))
[PROOFSTEP]
letI hn := regularOfIsPushoutSndOfRegular comm t
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
gn : NormalEpi g
comm : f ≫ h = g ≫ k
t : IsColimit (PushoutCocone.mk h k comm)
hn : RegularEpi h := regularOfIsPushoutSndOfRegular comm t
⊢ IsColimit (CokernelCofork.ofπ h (_ : (NormalEpi.g ≫ f) ≫ h = 0))
[PROOFSTEP]
have q := (@zero_comp _ _ _ gn.W _ _ f).symm
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y : C
inst✝ : HasZeroMorphisms C
P Q R S : C
f : P ⟶ Q
g : P ⟶ R
h : Q ⟶ S
k : R ⟶ S
gn : NormalEpi g
comm : f ≫ h = g ≫ k
t : IsColimit (PushoutCocone.mk h k comm)
hn : RegularEpi h := regularOfIsPushoutSndOfRegular comm t
q : 0 = 0 ≫ f
⊢ IsColimit (CokernelCofork.ofπ h (_ : (NormalEpi.g ≫ f) ≫ h = 0))
[PROOFSTEP]
convert hn.isColimit
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalMono f.unop
⊢ ∀ {Z' : Cᵒᵖ} (g' : X ⟶ Z') (eq' : NormalMono.g.op ≫ g' = 0) (m_1 : Y ⟶ Z'),
    f ≫ m_1 = g' →
      m_1 =
        (fun {Z'} g' w' =>
            (↑(KernelFork.IsLimit.lift' NormalMono.isLimit g'.unop
                  (_ : { unop := g'.unop ≫ NormalMono.g }.unop = { unop := 0 }.unop))).op)
          g' eq'
[PROOFSTEP]
rintro Z' g' w' m' rfl
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalMono f.unop
Z' : Cᵒᵖ
m' : Y ⟶ Z'
w' : NormalMono.g.op ≫ f ≫ m' = 0
⊢ m' =
    (fun {Z'} g' w' =>
        (↑(KernelFork.IsLimit.lift' NormalMono.isLimit g'.unop
              (_ : { unop := g'.unop ≫ NormalMono.g }.unop = { unop := 0 }.unop))).op)
      (f ≫ m') w'
[PROOFSTEP]
apply Quiver.Hom.unop_inj
[GOAL]
case a
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalMono f.unop
Z' : Cᵒᵖ
m' : Y ⟶ Z'
w' : NormalMono.g.op ≫ f ≫ m' = 0
⊢ m'.unop =
    ((fun {Z'} g' w' =>
          (↑(KernelFork.IsLimit.lift' NormalMono.isLimit g'.unop
                (_ : { unop := g'.unop ≫ NormalMono.g }.unop = { unop := 0 }.unop))).op)
        (f ≫ m') w').unop
[PROOFSTEP]
apply m.isLimit.uniq (KernelFork.ofι (m'.unop ≫ f.unop) _) m'.unop
[GOAL]
case a
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalMono f.unop
Z' : Cᵒᵖ
m' : Y ⟶ Z'
w' : NormalMono.g.op ≫ f ≫ m' = 0
⊢ ∀ (j : WalkingParallelPair),
    m'.unop ≫ NatTrans.app (KernelFork.ofι f.unop (_ : f.unop ≫ NormalMono.g = 0)).π j =
      NatTrans.app
        (KernelFork.ofι (m'.unop ≫ f.unop) (_ : { unop := (f ≫ m').unop ≫ NormalMono.g }.unop = { unop := 0 }.unop)).π j
[PROOFSTEP]
rintro (⟨⟩ | ⟨⟩)
[GOAL]
case a.zero
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalMono f.unop
Z' : Cᵒᵖ
m' : Y ⟶ Z'
w' : NormalMono.g.op ≫ f ≫ m' = 0
⊢ m'.unop ≫ NatTrans.app (KernelFork.ofι f.unop (_ : f.unop ≫ NormalMono.g = 0)).π WalkingParallelPair.zero =
    NatTrans.app
      (KernelFork.ofι (m'.unop ≫ f.unop) (_ : { unop := (f ≫ m').unop ≫ NormalMono.g }.unop = { unop := 0 }.unop)).π
      WalkingParallelPair.zero
[PROOFSTEP]
simp
[GOAL]
case a.one
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalMono f.unop
Z' : Cᵒᵖ
m' : Y ⟶ Z'
w' : NormalMono.g.op ≫ f ≫ m' = 0
⊢ m'.unop ≫ NatTrans.app (KernelFork.ofι f.unop (_ : f.unop ≫ NormalMono.g = 0)).π WalkingParallelPair.one =
    NatTrans.app
      (KernelFork.ofι (m'.unop ≫ f.unop) (_ : { unop := (f ≫ m').unop ≫ NormalMono.g }.unop = { unop := 0 }.unop)).π
      WalkingParallelPair.one
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalEpi f.unop
⊢ ∀ {W' : Cᵒᵖ} (g' : W' ⟶ Y) (eq' : g' ≫ NormalEpi.g.op = 0) (m_1 : W' ⟶ X),
    m_1 ≫ f = g' →
      m_1 =
        (fun {W'} g' w' =>
            (↑(CokernelCofork.IsColimit.desc' NormalEpi.isColimit g'.unop
                  (_ : { unop := NormalEpi.g ≫ g'.unop }.unop = { unop := 0 }.unop))).op)
          g' eq'
[PROOFSTEP]
rintro Z' g' w' m' rfl
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalEpi f.unop
Z' : Cᵒᵖ
m' : Z' ⟶ X
w' : (m' ≫ f) ≫ NormalEpi.g.op = 0
⊢ m' =
    (fun {W'} g' w' =>
        (↑(CokernelCofork.IsColimit.desc' NormalEpi.isColimit g'.unop
              (_ : { unop := NormalEpi.g ≫ g'.unop }.unop = { unop := 0 }.unop))).op)
      (m' ≫ f) w'
[PROOFSTEP]
apply Quiver.Hom.unop_inj
[GOAL]
case a
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalEpi f.unop
Z' : Cᵒᵖ
m' : Z' ⟶ X
w' : (m' ≫ f) ≫ NormalEpi.g.op = 0
⊢ m'.unop =
    ((fun {W'} g' w' =>
          (↑(CokernelCofork.IsColimit.desc' NormalEpi.isColimit g'.unop
                (_ : { unop := NormalEpi.g ≫ g'.unop }.unop = { unop := 0 }.unop))).op)
        (m' ≫ f) w').unop
[PROOFSTEP]
apply m.isColimit.uniq (CokernelCofork.ofπ (f.unop ≫ m'.unop) _) m'.unop
[GOAL]
case a
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalEpi f.unop
Z' : Cᵒᵖ
m' : Z' ⟶ X
w' : (m' ≫ f) ≫ NormalEpi.g.op = 0
⊢ ∀ (j : WalkingParallelPair),
    NatTrans.app (CokernelCofork.ofπ f.unop (_ : NormalEpi.g ≫ f.unop = 0)).ι j ≫ m'.unop =
      NatTrans.app
        (CokernelCofork.ofπ (f.unop ≫ m'.unop)
            (_ : { unop := NormalEpi.g ≫ (m' ≫ f).unop }.unop = { unop := 0 }.unop)).ι
        j
[PROOFSTEP]
rintro (⟨⟩ | ⟨⟩)
[GOAL]
case a.zero
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalEpi f.unop
Z' : Cᵒᵖ
m' : Z' ⟶ X
w' : (m' ≫ f) ≫ NormalEpi.g.op = 0
⊢ NatTrans.app (CokernelCofork.ofπ f.unop (_ : NormalEpi.g ≫ f.unop = 0)).ι WalkingParallelPair.zero ≫ m'.unop =
    NatTrans.app
      (CokernelCofork.ofπ (f.unop ≫ m'.unop) (_ : { unop := NormalEpi.g ≫ (m' ≫ f).unop }.unop = { unop := 0 }.unop)).ι
      WalkingParallelPair.zero
[PROOFSTEP]
simp
[GOAL]
case a.one
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y✝ : C
inst✝ : HasZeroMorphisms C
X Y : Cᵒᵖ
f : X ⟶ Y
m : NormalEpi f.unop
Z' : Cᵒᵖ
m' : Z' ⟶ X
w' : (m' ≫ f) ≫ NormalEpi.g.op = 0
⊢ NatTrans.app (CokernelCofork.ofπ f.unop (_ : NormalEpi.g ≫ f.unop = 0)).ι WalkingParallelPair.one ≫ m'.unop =
    NatTrans.app
      (CokernelCofork.ofπ (f.unop ≫ m'.unop) (_ : { unop := NormalEpi.g ≫ (m' ≫ f).unop }.unop = { unop := 0 }.unop)).ι
      WalkingParallelPair.one
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
inst✝¹ : HasZeroMorphisms C
inst✝ : NormalEpiCategory C
X✝ Y✝ : C
f : X✝ ⟶ Y✝
x✝ : Epi f
⊢ RegularEpi f
[PROOFSTEP]
haveI := normalEpiOfEpi f
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
X Y : C
inst✝¹ : HasZeroMorphisms C
inst✝ : NormalEpiCategory C
X✝ Y✝ : C
f : X✝ ⟶ Y✝
x✝ : Epi f
this : NormalEpi f
⊢ RegularEpi f
[PROOFSTEP]
infer_instance


[GOAL]
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖 : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
⊢ HasBasis (𝓝 1) p fun i => {f | ∀ (x : α), f x ∈ b i}
[PROOFSTEP]
have := h.comap fun p : G × G => p.2 / p.1
[GOAL]
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖 : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
this : HasBasis (comap (fun p => p.snd / p.fst) (𝓝 1)) p fun i => (fun p => p.snd / p.fst) ⁻¹' b i
⊢ HasBasis (𝓝 1) p fun i => {f | ∀ (x : α), f x ∈ b i}
[PROOFSTEP]
rw [← uniformity_eq_comap_nhds_one] at this
[GOAL]
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖 : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
this : HasBasis (uniformity G) p fun i => (fun p => p.snd / p.fst) ⁻¹' b i
⊢ HasBasis (𝓝 1) p fun i => {f | ∀ (x : α), f x ∈ b i}
[PROOFSTEP]
convert UniformFun.hasBasis_nhds_of_basis α _ (1 : α →ᵤ G) this
[GOAL]
case h.e'_5.h.h.e'_2.h.a
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖 : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
this : HasBasis (uniformity G) p fun i => (fun p => p.snd / p.fst) ⁻¹' b i
x✝¹ : ι
x✝ : α →ᵤ G
⊢ (∀ (x : α), x✝ x ∈ b x✝¹) ↔ (1, x✝) ∈ UniformFun.gen α G ((fun p => p.snd / p.fst) ⁻¹' b x✝¹)
[PROOFSTEP]
simp [UniformFun.gen]
[GOAL]
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖✝ : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
𝔖 : Set (Set α)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
⊢ HasBasis (𝓝 1) (fun Si => Si.fst ∈ 𝔖 ∧ p Si.snd) fun Si => {f | ∀ (x : α), x ∈ Si.fst → f x ∈ b Si.snd}
[PROOFSTEP]
have := h.comap fun p : G × G => p.1 / p.2
[GOAL]
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖✝ : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
𝔖 : Set (Set α)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
this : HasBasis (comap (fun p => p.fst / p.snd) (𝓝 1)) p fun i => (fun p => p.fst / p.snd) ⁻¹' b i
⊢ HasBasis (𝓝 1) (fun Si => Si.fst ∈ 𝔖 ∧ p Si.snd) fun Si => {f | ∀ (x : α), x ∈ Si.fst → f x ∈ b Si.snd}
[PROOFSTEP]
rw [← uniformity_eq_comap_nhds_one_swapped] at this
[GOAL]
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖✝ : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
𝔖 : Set (Set α)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
this : HasBasis (uniformity G) p fun i => (fun p => p.fst / p.snd) ⁻¹' b i
⊢ HasBasis (𝓝 1) (fun Si => Si.fst ∈ 𝔖 ∧ p Si.snd) fun Si => {f | ∀ (x : α), x ∈ Si.fst → f x ∈ b Si.snd}
[PROOFSTEP]
convert UniformOnFun.hasBasis_nhds_of_basis α _ 𝔖 (1 : α →ᵤ[𝔖] G) h𝔖₁ h𝔖₂ this
[GOAL]
case h.e'_5.h.h.e'_2.h.a
α : Type u_1
G : Type u_2
ι : Type u_3
inst✝² : Group G
𝔖✝ : Set (Set α)
inst✝¹ : UniformSpace G
inst✝ : UniformGroup G
𝔖 : Set (Set α)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
p : ι → Prop
b : ι → Set G
h : HasBasis (𝓝 1) p b
this : HasBasis (uniformity G) p fun i => (fun p => p.fst / p.snd) ⁻¹' b i
x✝¹ : Set α × ι
x✝ : α →ᵤ[𝔖] G
⊢ (∀ (x : α), x ∈ x✝¹.fst → x✝ x ∈ b x✝¹.snd) ↔
    (x✝, 1) ∈ UniformOnFun.gen 𝔖 x✝¹.fst ((fun p => p.fst / p.snd) ⁻¹' b x✝¹.snd)
[PROOFSTEP]
simp [UniformOnFun.gen]
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
⊢ ContinuousSMul 𝕜 H
[PROOFSTEP]
have : TopologicalAddGroup H := by
  rw [hφ.induced]
  exact topologicalAddGroup_induced φ
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
⊢ TopologicalAddGroup H
[PROOFSTEP]
rw [hφ.induced]
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
⊢ TopologicalAddGroup H
[PROOFSTEP]
exact topologicalAddGroup_induced φ
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ContinuousSMul 𝕜 H
[PROOFSTEP]
have : (𝓝 0 : Filter H).HasBasis _ _ := by
  rw [hφ.induced, nhds_induced, map_zero]
  exact (UniformOnFun.hasBasis_nhds_zero 𝔖 h𝔖₁ h𝔖₂).comap φ
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ HasBasis (𝓝 0) ?m.88528 ?m.88529
[PROOFSTEP]
rw [hφ.induced, nhds_induced, map_zero]
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ HasBasis (comap (↑φ) (𝓝 0)) ?m.88528 ?m.88529
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ Sort ?u.88519
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ?m.88527 → Prop
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ?m.88527 → Set H
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ Sort ?u.88519
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ?m.88527 → Prop
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ?m.88527 → Set H
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ Sort ?u.88519
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ?m.88527 → Prop
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this : TopologicalAddGroup H
⊢ ?m.88527 → Set H
[PROOFSTEP]
exact (UniformOnFun.hasBasis_nhds_zero 𝔖 h𝔖₁ h𝔖₂).comap φ
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
⊢ ContinuousSMul 𝕜 H
[PROOFSTEP]
refine' ContinuousSMul.of_basis_zero this _ _ _
[GOAL]
case refine'_1
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
⊢ ∀ {i : Set α × Set E},
    i.fst ∈ 𝔖 ∧ i.snd ∈ 𝓝 0 →
      ∃ V,
        V ∈ 𝓝 0 ∧
          ∃ j x, V • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
[PROOFSTEP]
rintro ⟨S, V⟩ ⟨hS, hV⟩
[GOAL]
case refine'_1.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
⊢ ∃ V_1,
    V_1 ∈ 𝓝 0 ∧
      ∃ j x,
        V_1 • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
have : Tendsto (fun kx : 𝕜 × E => kx.1 • kx.2) (𝓝 (0, 0)) (𝓝 <| (0 : 𝕜) • (0 : E)) :=
  continuous_smul.tendsto (0 : 𝕜 × E)
[GOAL]
case refine'_1.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 (0, 0)) (𝓝 (0 • 0))
⊢ ∃ V_1,
    V_1 ∈ 𝓝 0 ∧
      ∃ j x,
        V_1 • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
rw [zero_smul, nhds_prod_eq] at this
[GOAL]
case refine'_1.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
⊢ ∃ V_1,
    V_1 ∈ 𝓝 0 ∧
      ∃ j x,
        V_1 • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
have := this hV
[GOAL]
case refine'_1.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝² : TopologicalAddGroup H
this✝¹ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this✝ : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
this : (S, V).snd ∈ map (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0)
⊢ ∃ V_1,
    V_1 ∈ 𝓝 0 ∧
      ∃ j x,
        V_1 • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
rw [mem_map, mem_prod_iff] at this
[GOAL]
case refine'_1.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝² : TopologicalAddGroup H
this✝¹ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this✝ : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
this : ∃ t₁, t₁ ∈ 𝓝 0 ∧ ∃ t₂, t₂ ∈ 𝓝 0 ∧ t₁ ×ˢ t₂ ⊆ (fun kx => kx.fst • kx.snd) ⁻¹' (S, V).snd
⊢ ∃ V_1,
    V_1 ∈ 𝓝 0 ∧
      ∃ j x,
        V_1 • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
rcases this with ⟨U, hU, W, hW, hUW⟩
[GOAL]
case refine'_1.mk.intro.intro.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
U : Set 𝕜
hU : U ∈ 𝓝 0
W : Set E
hW : W ∈ 𝓝 0
hUW : U ×ˢ W ⊆ (fun kx => kx.fst • kx.snd) ⁻¹' (S, V).snd
⊢ ∃ V_1,
    V_1 ∈ 𝓝 0 ∧
      ∃ j x,
        V_1 • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
refine' ⟨U, hU, ⟨S, W⟩, ⟨hS, hW⟩, _⟩
[GOAL]
case refine'_1.mk.intro.intro.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
U : Set 𝕜
hU : U ∈ 𝓝 0
W : Set E
hW : W ∈ 𝓝 0
hUW : U ×ˢ W ⊆ (fun kx => kx.fst • kx.snd) ⁻¹' (S, V).snd
⊢ U • ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, W).fst → f x ∈ (S, W).snd} ⊆
    ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
rw [Set.smul_subset_iff]
[GOAL]
case refine'_1.mk.intro.intro.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
U : Set 𝕜
hU : U ∈ 𝓝 0
W : Set E
hW : W ∈ 𝓝 0
hUW : U ×ˢ W ⊆ (fun kx => kx.fst • kx.snd) ⁻¹' (S, V).snd
⊢ ∀ (a : 𝕜),
    a ∈ U →
      ∀ (b : H),
        b ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, W).fst → f x ∈ (S, W).snd} →
          a • b ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
intro a ha u hu x hx
[GOAL]
case refine'_1.mk.intro.intro.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
U : Set 𝕜
hU : U ∈ 𝓝 0
W : Set E
hW : W ∈ 𝓝 0
hUW : U ×ˢ W ⊆ (fun kx => kx.fst • kx.snd) ⁻¹' (S, V).snd
a : 𝕜
ha : a ∈ U
u : H
hu : u ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, W).fst → f x ∈ (S, W).snd}
x : α
hx : x ∈ (S, V).fst
⊢ ↑φ (a • u) x ∈ (S, V).snd
[PROOFSTEP]
rw [SMulHomClass.map_smul]
[GOAL]
case refine'_1.mk.intro.intro.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun kx => kx.fst • kx.snd) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
U : Set 𝕜
hU : U ∈ 𝓝 0
W : Set E
hW : W ∈ 𝓝 0
hUW : U ×ˢ W ⊆ (fun kx => kx.fst • kx.snd) ⁻¹' (S, V).snd
a : 𝕜
ha : a ∈ U
u : H
hu : u ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, W).fst → f x ∈ (S, W).snd}
x : α
hx : x ∈ (S, V).fst
⊢ (a • ↑φ u) x ∈ (S, V).snd
[PROOFSTEP]
exact hUW (⟨ha, hu x hx⟩ : (a, φ u x) ∈ U ×ˢ W)
[GOAL]
case refine'_2
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
⊢ ∀ (x₀ : 𝕜) {i : Set α × Set E},
    i.fst ∈ 𝔖 ∧ i.snd ∈ 𝓝 0 →
      ∃ j x,
        ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
          (fun x => x₀ • x) ⁻¹' (↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd})
[PROOFSTEP]
rintro a ⟨S, V⟩ ⟨hS, hV⟩
[GOAL]
case refine'_2.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
a : 𝕜
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
⊢ ∃ j x,
    ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
      (fun x => a • x) ⁻¹' (↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd})
[PROOFSTEP]
have : Tendsto (fun x : E => a • x) (𝓝 0) (𝓝 <| a • (0 : E)) := tendsto_id.const_smul a
[GOAL]
case refine'_2.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
a : 𝕜
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun x => a • x) (𝓝 0) (𝓝 (a • 0))
⊢ ∃ j x,
    ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
      (fun x => a • x) ⁻¹' (↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd})
[PROOFSTEP]
rw [smul_zero] at this
[GOAL]
case refine'_2.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
a : 𝕜
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun x => a • x) (𝓝 0) (𝓝 0)
⊢ ∃ j x,
    ↑φ ⁻¹' {f | ∀ (x : α), x ∈ j.fst → f x ∈ j.snd} ⊆
      (fun x => a • x) ⁻¹' (↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd})
[PROOFSTEP]
refine' ⟨⟨S, (a • ·) ⁻¹' V⟩, ⟨hS, this hV⟩, fun f hf x hx => _⟩
[GOAL]
case refine'_2.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
a : 𝕜
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun x => a • x) (𝓝 0) (𝓝 0)
f : H
hf : f ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, (fun x => a • x) ⁻¹' V).fst → f x ∈ (S, (fun x => a • x) ⁻¹' V).snd}
x : α
hx : x ∈ (S, V).fst
⊢ ↑φ ((fun x => a • x) f) x ∈ (S, V).snd
[PROOFSTEP]
rw [SMulHomClass.map_smul]
[GOAL]
case refine'_2.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
a : 𝕜
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
this : Tendsto (fun x => a • x) (𝓝 0) (𝓝 0)
f : H
hf : f ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, (fun x => a • x) ⁻¹' V).fst → f x ∈ (S, (fun x => a • x) ⁻¹' V).snd}
x : α
hx : x ∈ (S, V).fst
⊢ (a • ↑φ f) x ∈ (S, V).snd
[PROOFSTEP]
exact hf x hx
[GOAL]
case refine'_3
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
⊢ ∀ (m₀ : H) {i : Set α × Set E},
    i.fst ∈ 𝔖 ∧ i.snd ∈ 𝓝 0 → ∀ᶠ (x : 𝕜) in 𝓝 0, x • m₀ ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
[PROOFSTEP]
rintro u ⟨S, V⟩ ⟨hS, hV⟩
[GOAL]
case refine'_3.mk.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
⊢ ∀ᶠ (x : 𝕜) in 𝓝 0, x • u ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
rcases h u S hS hV with ⟨r, hrpos, hr⟩
[GOAL]
case refine'_3.mk.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
⊢ ∀ᶠ (x : 𝕜) in 𝓝 0, x • u ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
rw [Metric.eventually_nhds_iff_ball]
[GOAL]
case refine'_3.mk.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
⊢ ∃ ε, ε > 0 ∧ ∀ (y : 𝕜), y ∈ Metric.ball 0 ε → y • u ∈ ↑φ ⁻¹' {f | ∀ (x : α), x ∈ (S, V).fst → f x ∈ (S, V).snd}
[PROOFSTEP]
refine' ⟨r⁻¹, inv_pos.mpr hrpos, fun a ha x hx => _⟩
[GOAL]
case refine'_3.mk.intro.intro.intro
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : a ∈ Metric.ball 0 r⁻¹
x : α
hx : x ∈ (S, V).fst
⊢ ↑φ (a • u) x ∈ (S, V).snd
[PROOFSTEP]
by_cases ha0 : a = 0
[GOAL]
case pos
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : a ∈ Metric.ball 0 r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : a = 0
⊢ ↑φ (a • u) x ∈ (S, V).snd
[PROOFSTEP]
rw [ha0]
[GOAL]
case pos
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : a ∈ Metric.ball 0 r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : a = 0
⊢ ↑φ (0 • u) x ∈ (S, V).snd
[PROOFSTEP]
simpa using mem_of_mem_nhds hV
[GOAL]
case neg
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : a ∈ Metric.ball 0 r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : ¬a = 0
⊢ ↑φ (a • u) x ∈ (S, V).snd
[PROOFSTEP]
rw [mem_ball_zero_iff] at ha
[GOAL]
case neg
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : ¬a = 0
⊢ ↑φ (a • u) x ∈ (S, V).snd
[PROOFSTEP]
rw [SMulHomClass.map_smul, Pi.smul_apply]
[GOAL]
case neg
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : ¬a = 0
⊢ a • ↑φ u x ∈ (S, V).snd
[PROOFSTEP]
have : φ u x ∈ a⁻¹ • V := by
  have ha0 : 0 < ‖a‖ := norm_pos_iff.mpr ha0
  refine' (hr a⁻¹ _) (Set.mem_image_of_mem (φ u) hx)
  rw [norm_inv, le_inv hrpos ha0]
  exact ha.le
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : ¬a = 0
⊢ ↑φ u x ∈ a⁻¹ • V
[PROOFSTEP]
have ha0 : 0 < ‖a‖ := norm_pos_iff.mpr ha0
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0✝ : ¬a = 0
ha0 : 0 < ‖a‖
⊢ ↑φ u x ∈ a⁻¹ • V
[PROOFSTEP]
refine' (hr a⁻¹ _) (Set.mem_image_of_mem (φ u) hx)
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0✝ : ¬a = 0
ha0 : 0 < ‖a‖
⊢ r ≤ ‖a⁻¹‖
[PROOFSTEP]
rw [norm_inv, le_inv hrpos ha0]
[GOAL]
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝ : TopologicalAddGroup H
this : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0✝ : ¬a = 0
ha0 : 0 < ‖a‖
⊢ ‖a‖ ≤ r⁻¹
[PROOFSTEP]
exact ha.le
[GOAL]
case neg
𝕜 : Type u_1
α : Type u_2
E : Type u_3
H : Type u_4
hom : Type u_5
inst✝⁹ : NormedField 𝕜
inst✝⁸ : AddCommGroup H
inst✝⁷ : Module 𝕜 H
inst✝⁶ : AddCommGroup E
inst✝⁵ : Module 𝕜 E
inst✝⁴ : TopologicalSpace H
inst✝³ : UniformSpace E
inst✝² : UniformAddGroup E
inst✝¹ : ContinuousSMul 𝕜 E
𝔖 : Set (Set α)
inst✝ : LinearMapClass hom 𝕜 H (α →ᵤ[𝔖] E)
h𝔖₁ : Set.Nonempty 𝔖
h𝔖₂ : DirectedOn (fun x x_1 => x ⊆ x_1) 𝔖
φ : hom
hφ : Inducing ↑φ
h : ∀ (u : H) (s : Set α), s ∈ 𝔖 → Bornology.IsVonNBounded 𝕜 (↑φ u '' s)
this✝¹ : TopologicalAddGroup H
this✝ : HasBasis (𝓝 0) (fun SV => SV.fst ∈ 𝔖 ∧ SV.snd ∈ 𝓝 0) fun i => ↑φ ⁻¹' {f | ∀ (x : α), x ∈ i.fst → f x ∈ i.snd}
u : H
S : Set α
V : Set E
hS : (S, V).fst ∈ 𝔖
hV : (S, V).snd ∈ 𝓝 0
r : ℝ
hrpos : 0 < r
hr : ∀ (a : 𝕜), r ≤ ‖a‖ → ↑φ u '' S ⊆ a • (S, V).snd
a : 𝕜
ha : ‖a‖ < r⁻¹
x : α
hx : x ∈ (S, V).fst
ha0 : ¬a = 0
this : ↑φ u x ∈ a⁻¹ • V
⊢ a • ↑φ u x ∈ (S, V).snd
[PROOFSTEP]
rwa [Set.mem_inv_smul_set_iff₀ ha0] at this