Todd Waugh Ambridge, January 2024
# Uniform continuity of sequence functions
\begin{code}
{-# OPTIONS --without-K --safe #-}
open import MLTT.Spartan
open import Notation.Order
open import Naturals.Order
open import UF.DiscreteAndSeparated
open import UF.FunExt
module TWA.Thesis.Chapter6.SequenceContinuity (fe : FunExt) where
open import TWA.Thesis.Chapter2.Sequences
open import TWA.Thesis.Chapter3.ClosenessSpaces fe
open import TWA.Thesis.Chapter3.ClosenessSpaces-Examples fe
open import MLTT.Two-Properties
seq-f-ucontinuous¹ : {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (f : (ℕ → X) → (ℕ → Y))
→ 𝓤 ⊔ 𝓥 ̇
seq-f-ucontinuous¹ {𝓤} {𝓥} {X} f
= (ϵ : ℕ) → Σ δ ꞉ ℕ , ((x₁ x₂ : (ℕ → X))
→ (x₁ ∼ⁿ x₂) δ → (f x₁ ∼ⁿ f x₂) ϵ)
seq-f-ucontinuous² : {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ }
→ (f : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ 𝓤 ⊔ 𝓥 ⊔ 𝓦 ̇
seq-f-ucontinuous² {𝓤} {𝓥} {𝓦} {X} {Y} f
= (ϵ : ℕ) → Σ (δˣ , δʸ) ꞉ ℕ × ℕ ,
((x₁ x₂ : (ℕ → X)) (y₁ y₂ : (ℕ → Y))
→ (x₁ ∼ⁿ x₂) δˣ → (y₁ ∼ⁿ y₂) δʸ → (f x₁ y₁ ∼ⁿ f x₂ y₂) ϵ)
map-ucontinuous' : {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (f : X → Y) → seq-f-ucontinuous¹ (map f)
map-ucontinuous' f ε = ε , λ α β α∼ⁿβ k k<ε → ap f (α∼ⁿβ k k<ε)
zipWith-ucontinuous' : {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (f : X → X → Y)
→ seq-f-ucontinuous² (zipWith f)
zipWith-ucontinuous' f ε
= (ε , ε)
, (λ α₁ α₂ β₁ β₂ α∼ β∼ k k<ϵ
→ ap (λ - → f - (β₁ k)) (α∼ k k<ϵ)
∙ ap (f (α₂ k)) (β∼ k k<ϵ))
seq-f-ucontinuous²-left : {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ }
→ (f : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ seq-f-ucontinuous² f
→ (β : ℕ → Y)
→ seq-f-ucontinuous¹ (λ α → f α β)
seq-f-ucontinuous²-left f ϕ β ε
= pr₁ (pr₁ (ϕ ε))
, λ α₁ α₂ α∼ → pr₂ (ϕ ε) α₁ α₂ β β α∼ (λ _ _ → refl)
seq-f-ucontinuous²-right : {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ }
→ (f : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ seq-f-ucontinuous² f
→ (α : ℕ → X)
→ seq-f-ucontinuous¹ (f α)
seq-f-ucontinuous²-right f ϕ α ε
= pr₂ (pr₁ (ϕ ε))
, λ β₁ β₂ → pr₂ (ϕ ε) α α β₁ β₂ (λ _ _ → refl)
seq-f-ucontinuous²-both : {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (f : (ℕ → X) → (ℕ → X) → (ℕ → Y))
→ seq-f-ucontinuous² f
→ seq-f-ucontinuous¹ (λ α → f α α)
seq-f-ucontinuous²-both f ϕ ε
= δ
, λ α β α∼ᵐβ → pr₂ (ϕ ε) α β α β
(λ i i<m → α∼ᵐβ i
(<-≤-trans i δ₁ δ i<m (max-≤-upper-bound δ₁ δ₂)))
(λ i i<m → α∼ᵐβ i
(<-≤-trans i δ₂ δ i<m (max-≤-upper-bound' δ₂ δ₁)))
where
δ₁ δ₂ δ : ℕ
δ₁ = pr₁ (pr₁ (ϕ ε))
δ₂ = pr₂ (pr₁ (ϕ ε))
δ = max δ₁ δ₂
seq-f-ucontinuous²-comp
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ } {W : 𝓣 ̇ } {T : 𝓤' ̇ }
→ (f : (ℕ → X) → (ℕ → W) → (ℕ → T))
→ (g : (ℕ → Y) → (ℕ → Z) → (ℕ → W))
→ seq-f-ucontinuous² f
→ seq-f-ucontinuous² g
→ (z : ℕ → Z) → seq-f-ucontinuous² λ x y → f x (g y z)
seq-f-ucontinuous²-comp
{_} {_} {_} {_} {_} {X} {Y} {Z} {W} {T} f g ϕᶠ ϕᵍ z ϵ = δ , γ
where
δ : ℕ × ℕ
δ = (pr₁ (pr₁ (ϕᶠ ϵ))) , pr₁ (pr₁ (ϕᵍ (pr₂ (pr₁ (ϕᶠ ϵ)))))
γ : (x₁ x₂ : ℕ → X) (y₁ y₂ : ℕ → Y)
→ (x₁ ∼ⁿ x₂) (pr₁ δ)
→ (y₁ ∼ⁿ y₂) (pr₂ δ)
→ (f x₁ (g y₁ z) ∼ⁿ f x₂ (g y₂ z)) ϵ
γ x₁ x₂ y₁ y₂ x₁∼x₂ y₁∼y₂
= pr₂ (ϕᶠ ϵ) x₁ x₂ (g y₁ z) (g y₂ z)
x₁∼x₂
(pr₂ (ϕᵍ (pr₂ (pr₁ (ϕᶠ ϵ)))) y₁ y₂ z z
y₁∼y₂
(λ _ _ → refl))
seq-f-ucontinuous¹²-comp
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ } {W : 𝓣 ̇ }
→ (f : (ℕ → Z) → (ℕ → W))
→ (g : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ seq-f-ucontinuous¹ f
→ seq-f-ucontinuous² g
→ seq-f-ucontinuous² λ x y → f (g x y)
seq-f-ucontinuous¹²-comp {_} {_} {_} {_} {X} {Y} {Z} {W}
f g ϕᶠ ϕᵍ ϵ = δ , γ
where
δ : ℕ × ℕ
δ = pr₁ (ϕᵍ (pr₁ (ϕᶠ ϵ)))
γ : (x₁ x₂ : ℕ → X) (y₁ y₂ : ℕ → Y)
→ (x₁ ∼ⁿ x₂) (pr₁ δ) → (y₁ ∼ⁿ y₂) (pr₂ δ)
→ (f (g x₁ y₁) ∼ⁿ f (g x₂ y₂)) ϵ
γ x₁ x₂ y₁ y₂ x∼ y∼
= pr₂ (ϕᶠ ϵ) (g x₁ y₁) (g x₂ y₂)
(pr₂ (ϕᵍ (pr₁ (ϕᶠ ϵ))) x₁ x₂ y₁ y₂ x∼ y∼)
seq-f-ucontinuous²¹-comp-left
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ } {W : 𝓣 ̇ }
→ (f : (ℕ → W) → (ℕ → Y) → (ℕ → Z))
→ (g : (ℕ → X) → (ℕ → W))
→ seq-f-ucontinuous² f
→ seq-f-ucontinuous¹ g
→ seq-f-ucontinuous² (λ x y → f (g x) y)
seq-f-ucontinuous²¹-comp-left {_} {_} {_} {_} {X} {Y} {Z} {W}
f g ϕᶠ ϕᵍ ϵ = δ , γ
where
δ : ℕ × ℕ
δ = pr₁ (ϕᵍ (pr₁ (pr₁ (ϕᶠ ϵ)))) , (pr₂ (pr₁ (ϕᶠ ϵ)))
γ : (x₁ x₂ : ℕ → X) (y₁ y₂ : ℕ → Y)
→ (x₁ ∼ⁿ x₂) (pr₁ δ) → (y₁ ∼ⁿ y₂) (pr₂ δ)
→ (f (g x₁) y₁ ∼ⁿ f (g x₂) y₂) ϵ
γ x₁ x₂ y₁ y₂ x∼ y∼
= pr₂ (ϕᶠ ϵ) (g x₁) (g x₂) y₁ y₂
(pr₂ (ϕᵍ (pr₁ (pr₁ (ϕᶠ ϵ)))) x₁ x₂ x∼) y∼
seq-f-ucontinuousᴺ : {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (f : (ℕ → (ℕ → X)) → (ℕ → Y))
→ 𝓤 ⊔ 𝓥 ̇
seq-f-ucontinuousᴺ {𝓤} {𝓥} {X} f
= (ϵ : ℕ) → Σ (d , δ) ꞉ ℕ × ℕ , (d ≤ δ
× ((x₁ x₂ : (ℕ → (ℕ → X)))
→ ((n : ℕ) → n < d → (x₁ n ∼ⁿ x₂ n) δ) → (f x₁ ∼ⁿ f x₂) ϵ))
seq-f-ucontinuous¹-to-closeness
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y)
→ (f : (ℕ → X) → (ℕ → Y))
→ seq-f-ucontinuous¹ f
→ f-ucontinuous (ℕ→D-ClosenessSpace dˣ) (ℕ→D-ClosenessSpace dʸ) f
seq-f-ucontinuous¹-to-closeness dˣ dʸ f ϕ ε
= pr₁ (ϕ ε)
, λ α β Cαβ → ∼ⁿ-to-C dʸ (f α) (f β) ε
(pr₂ (ϕ ε) α β (C-to-∼ⁿ dˣ α β (pr₁ (ϕ ε)) Cαβ))
closeness-to-seq-f-ucontinuous¹
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y)
→ (f : (ℕ → X) → (ℕ → Y))
→ f-ucontinuous (ℕ→D-ClosenessSpace dˣ) (ℕ→D-ClosenessSpace dʸ) f
→ seq-f-ucontinuous¹ f
closeness-to-seq-f-ucontinuous¹ dˣ dʸ f ϕ ε
= pr₁ (ϕ ε)
, λ α β α∼β → C-to-∼ⁿ dʸ (f α) (f β) ε
(pr₂ (ϕ ε) α β (∼ⁿ-to-C dˣ α β (pr₁ (ϕ ε)) α∼β))
seq-f-ucontinuous¹-↔-closeness
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y)
→ (f : (ℕ → X) → (ℕ → Y))
→ seq-f-ucontinuous¹ f
↔ f-ucontinuous (ℕ→D-ClosenessSpace dˣ) (ℕ→D-ClosenessSpace dʸ) f
seq-f-ucontinuous¹-↔-closeness dˣ dʸ f
= seq-f-ucontinuous¹-to-closeness dˣ dʸ f
, closeness-to-seq-f-ucontinuous¹ dˣ dʸ f
seq-f-ucontinuous²-to-closeness
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y) (dᶻ : is-discrete Z)
→ (f : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ seq-f-ucontinuous² f
→ f-ucontinuous (×-ClosenessSpace (ℕ→D-ClosenessSpace dˣ)
(ℕ→D-ClosenessSpace dʸ))
(ℕ→D-ClosenessSpace dᶻ) (uncurry f)
seq-f-ucontinuous²-to-closeness dˣ dʸ dᶻ f ϕ ε
= δ
, λ (α₁ , α₂) (β₁ , β₂) Cαβ
→ ∼ⁿ-to-C dᶻ (f α₁ α₂) (f β₁ β₂) ε
(pr₂ (ϕ ε) α₁ β₁ α₂ β₂
(λ i i<δα → C-to-∼ⁿ dˣ α₁ β₁ δ
(×-C-left (ℕ→D-ClosenessSpace dˣ) (ℕ→D-ClosenessSpace dʸ)
α₁ β₁ α₂ β₂ δ Cαβ)
i (<-≤-trans i δα δ i<δα
(max-≤-upper-bound δα δβ)))
(λ i i<δβ → C-to-∼ⁿ dʸ α₂ β₂ δ
(×-C-right (ℕ→D-ClosenessSpace dˣ) (ℕ→D-ClosenessSpace dʸ)
α₁ β₁ α₂ β₂ δ Cαβ)
i (<-≤-trans i δβ δ i<δβ
(max-≤-upper-bound' δβ δα))))
where
δα δβ δ : ℕ
δα = pr₁ (pr₁ (ϕ ε))
δβ = pr₂ (pr₁ (ϕ ε))
δ = max δα δβ
closeness-to-seq-f-ucontinuous²
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y) (dᶻ : is-discrete Z)
→ (f : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ f-ucontinuous (×-ClosenessSpace (ℕ→D-ClosenessSpace dˣ)
(ℕ→D-ClosenessSpace dʸ))
(ℕ→D-ClosenessSpace dᶻ) (uncurry f)
→ seq-f-ucontinuous² f
closeness-to-seq-f-ucontinuous² dˣ dʸ dᶻ f ϕ ε
= (δ , δ)
, λ x₁ x₂ y₁ y₂ x₁∼x₂ y₁∼y₂
→ C-to-∼ⁿ dᶻ (f x₁ y₁) (f x₂ y₂) ε
(pr₂ (ϕ ε) (x₁ , y₁) (x₂ , y₂)
(×-C-combine
(ℕ→D-ClosenessSpace dˣ) (ℕ→D-ClosenessSpace dʸ)
x₁ x₂ y₁ y₂ δ
(∼ⁿ-to-C dˣ x₁ x₂ δ x₁∼x₂) (∼ⁿ-to-C dʸ y₁ y₂ δ y₁∼y₂)))
where
δ : ℕ
δ = pr₁ (ϕ ε)
seq-f-ucontinuous²-↔-closeness
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ } {Z : 𝓦 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y) (dᶻ : is-discrete Z)
→ (f : (ℕ → X) → (ℕ → Y) → (ℕ → Z))
→ seq-f-ucontinuous² f
↔ f-ucontinuous (×-ClosenessSpace (ℕ→D-ClosenessSpace dˣ)
(ℕ→D-ClosenessSpace dʸ))
(ℕ→D-ClosenessSpace dᶻ) (uncurry f)
seq-f-ucontinuous²-↔-closeness dˣ dʸ dᶻ f
= seq-f-ucontinuous²-to-closeness dˣ dʸ dᶻ f
, closeness-to-seq-f-ucontinuous² dˣ dʸ dᶻ f
pred : ℕ → ℕ
pred 0 = 0
pred (succ n) = n
double : ℕ → ℕ
double 0 = 0
double (succ n) = succ (succ (double n))
double-≤ : (n : ℕ) → n ≤ double n
double-≤ zero = ⋆
double-≤ (succ zero) = ⋆
double-≤ (succ (succ n))
= ≤-trans n (double n) (succ (succ (double n)))
(double-≤ n)
(≤-trans (double n) (succ (double n)) (succ (succ (double n)))
(≤-succ (double n)) (≤-succ (succ (double n))))
pred^i-0-is-0 : (i : ℕ) → (pred ^ i) 0 = 0
pred^i-0-is-0 zero = refl
pred^i-0-is-0 (succ i) = ap pred (pred^i-0-is-0 i)
pred^si-sn-is-pred^i-n
: (i n : ℕ) → (pred ^ succ i) (succ n) = (pred ^ i) n
pred^si-sn-is-pred^i-n zero n = refl
pred^si-sn-is-pred^i-n (succ i) n
= ap pred (pred^si-sn-is-pred^i-n i n)
pred^i≥n-is-0 : (i n : ℕ) → n ≤ i → (pred ^ i) n = 0
pred^i≥n-is-0 i zero n≤i = pred^i-0-is-0 i
pred^i≥n-is-0 (succ i) (succ n) n≤i
= pred^si-sn-is-pred^i-n i n
∙ pred^i≥n-is-0 i n n≤i
pred^i-sn-is-s-pred^i-n
: (i n : ℕ) → i ≤ n → (pred ^ i) (succ n) = succ ((pred ^ i) n)
pred^i-sn-is-s-pred^i-n zero n i<n = refl
pred^i-sn-is-s-pred^i-n (succ i) (succ n) i<n
= pred^si-sn-is-pred^i-n i (succ n)
∙ pred^i-sn-is-s-pred^i-n i n i<n
∙ ap succ (pred^si-sn-is-pred^i-n i n ⁻¹)
pred^n-double-n-is-n : (n : ℕ) → (pred ^ n) (double n) = n
pred^n-double-n-is-n zero = refl
pred^n-double-n-is-n (succ n)
= pred^si-sn-is-pred^i-n n (succ (double n))
∙ pred^i-sn-is-s-pred^i-n n (double n) (double-≤ n)
∙ ap succ (pred^n-double-n-is-n n)
pred-≤ : (n : ℕ) → pred n ≤ n
pred-≤ zero = ⋆
pred-≤ (succ n) = ≤-succ n
predⁱ-≤ : (i n : ℕ) → (pred ^ i) n ≤ n
predⁱ-≤ zero n = ≤-refl n
predⁱ-≤ (succ i) n
= ≤-trans (pred ((pred ^ i) n)) ((pred ^ i) n) n
(pred-≤ ((pred ^ i) n)) (predⁱ-≤ i n)
pred-mono : (n m : ℕ) → n ≤ m → pred n ≤ pred m
pred-mono zero zero n≤m = ⋆
pred-mono zero (succ m) n≤m = ⋆
pred-mono (succ n) (succ m) n≤m = n≤m
nid : (n i d : ℕ) → n < i → (pred ^ i) d ≤ (pred ^ n) d
nid zero (succ i) d n<i = predⁱ-≤ (succ i) d
nid (succ n) (succ i) d n<i
= pred-mono ((pred ^ i) d) ((pred ^ n) d) (nid n i d n<i)
ΠC-to-∼ⁿ' : {X : ℕ → 𝓤 ̇ }
→ (d : (n : ℕ) → is-discrete (X n))
→ (α β : (ℕ → Π X)) (n : ℕ)
→ C (Π-ClosenessSpace (λ _ → ΠD-ClosenessSpace d)) n α β
→ (i : ℕ)
→ (α i ∼ⁿ β i) ((pred ^ i) n)
ΠC-to-∼ⁿ' d α β zero Cαβ i
= transport (α i ∼ⁿ β i) (pred^i-0-is-0 i ⁻¹) (λ _ ())
ΠC-to-∼ⁿ' d α β (succ n) Cαβ zero = C-to-∼ⁿ' d (α 0) (β 0) (succ n) γ
where
γ : C (ΠD-ClosenessSpace d) (succ n) (α 0) (β 0)
γ 0 j⊏sn = Cαβ 0 refl
γ (succ j) j⊏sn = Lemma[min𝟚ab=₁→a=₁] (Cαβ (succ j) j⊏sn)
ΠC-to-∼ⁿ' d α β (succ n) Cαβ (succ i)
= transport (α (succ i) ∼ⁿ β (succ i)) (pred^si-sn-is-pred^i-n i n ⁻¹) γ
where
γ : (α (succ i) ∼ⁿ β (succ i)) ((pred ^ i) n)
γ = ΠC-to-∼ⁿ' d (tail α) (tail β) n
(λ j j⊏n → Lemma[min𝟚ab=₁→b=₁] (Cαβ (succ j) j⊏n)) i
∼ⁿ-to-ΠC' : {X : ℕ → 𝓤 ̇ }
→ (d : (n : ℕ) → is-discrete (X n))
→ (α β : (ℕ → Π X)) (n : ℕ)
→ ((i : ℕ) → (α i ∼ⁿ β i) ((pred ^ i) n))
→ C (Π-ClosenessSpace (λ _ → ΠD-ClosenessSpace d)) n α β
∼ⁿ-to-ΠC' d α β n f 0 i⊏sn
= ∼ⁿ-to-C' d (α 0) (β 0) n (f 0) 0 i⊏sn
∼ⁿ-to-ΠC' d α β (succ n) f (succ i) i⊏sn
= Lemma[a=₁→b=₁→min𝟚ab=₁]
(∼ⁿ-to-C' d (α 0) (β 0) (succ n) (f 0) (succ i) i⊏sn)
(∼ⁿ-to-ΠC' d (tail α) (tail β) n γ i i⊏sn)
where
γ : (j : ℕ) → (α (succ j) ∼ⁿ β (succ j)) ((pred ^ j) n)
γ j = transport (α (succ j) ∼ⁿ β (succ j))
(pred^si-sn-is-pred^i-n j n)
(f (succ j))
ΠC-to-∼ⁿ : {X : ℕ → 𝓤 ̇ }
→ (d : (n : ℕ) → is-discrete (X n))
→ (α β : (ℕ → Π X)) (n : ℕ)
→ C (Π-ClosenessSpace (λ _ → ΠD-ClosenessSpace d)) (double n) α β
→ (i : ℕ) → i < n → (α i ∼ⁿ β i) n
ΠC-to-∼ⁿ d α β n@(succ _) Cαβ i i<n j j<n
= ΠC-to-∼ⁿ' d α β (double n) Cαβ i j
(<-≤-trans j n ((pred ^ i) (double n)) j<n
(≤-trans n ((pred ^ n) (double n)) ((pred ^ i) (double n))
(transport (n ≤_) (pred^n-double-n-is-n n ⁻¹) (≤-refl n ))
(nid i n (double n) i<n)))
∼ⁿ-to-ΠC : {X : ℕ → 𝓤 ̇ }
→ (d : (n : ℕ) → is-discrete (X n))
→ (α β : (ℕ → Π X)) (n : ℕ)
→ ((i : ℕ) → i < n → (α i ∼ⁿ β i) n)
→ C (Π-ClosenessSpace (λ _ → ΠD-ClosenessSpace d)) n α β
∼ⁿ-to-ΠC d α β n@(succ _) α∼β
= ∼ⁿ-to-ΠC' d α β n (λ i → Cases (order-split i n) (γ< i) (γ≥ i))
where
γ< : (i : ℕ) → i < n → (α i ∼ⁿ β i) ((pred ^ i) n)
γ< i i<n j j<2n-i
= α∼β i i<n j (<-≤-trans j ((pred ^ i) n) n j<2n-i (predⁱ-≤ i n))
γ≥ : (i : ℕ) → n ≤ i → (α i ∼ⁿ β i) ((pred ^ i) n)
γ≥ i n≤i = transport (α i ∼ⁿ β i) (pred^i≥n-is-0 i n n≤i ⁻¹) (λ _ ())
seq-f-ucontinuousᴺ-to-closeness
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y)
→ (f : (ℕ → (ℕ → X)) → (ℕ → Y))
→ seq-f-ucontinuousᴺ f
→ f-ucontinuous (Π-ClosenessSpace (λ _ → ℕ→D-ClosenessSpace dˣ))
(ℕ→D-ClosenessSpace dʸ) f
seq-f-ucontinuousᴺ-to-closeness {𝓤} {𝓥} {X} {Y} dˣ dʸ f ϕ ε
= double δ
, λ x₁ x₂ C2δx₁x₂ → ∼ⁿ-to-C' (λ _ → dʸ) (f x₁) (f x₂) ε
(ϕ' x₁ x₂ (λ n n<d
→ ΠC-to-∼ⁿ (λ _ → dˣ) x₁ x₂ δ C2δx₁x₂ n
(<-≤-trans n d δ n<d d≤δ)))
where
d δ : ℕ
d = pr₁ (pr₁ (ϕ ε))
δ = pr₂ (pr₁ (ϕ ε))
d≤δ : d ≤ δ
d≤δ = pr₁ (pr₂ (ϕ ε))
ϕ' : (x₁ x₂ : (ℕ → (ℕ → X)))
→ ((n : ℕ) → n < d → (x₁ n ∼ⁿ x₂ n) δ)
→ (f x₁ ∼ⁿ f x₂) ε
ϕ' = pr₂ (pr₂ (ϕ ε))
closeness-to-seq-f-ucontinuousᴺ
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y)
→ (f : (ℕ → (ℕ → X)) → (ℕ → Y))
→ f-ucontinuous (Π-ClosenessSpace (λ _ → ℕ→D-ClosenessSpace dˣ))
(ℕ→D-ClosenessSpace dʸ) f
→ seq-f-ucontinuousᴺ f
closeness-to-seq-f-ucontinuousᴺ {𝓤} {𝓥} {X} {Y} dˣ dʸ f ϕ ε
= (δ , δ) , ≤-refl δ
, λ x₁ x₂ x₁∼x₂ → C-to-∼ⁿ' (λ _ → dʸ) (f x₁) (f x₂) ε
(pr₂ (ϕ ε) x₁ x₂ (∼ⁿ-to-ΠC (λ _ → dˣ) x₁ x₂ δ x₁∼x₂))
where
δ : ℕ
δ = pr₁ (ϕ ε)
seq-f-ucontinuousᴺ-↔-closeness
: {X : 𝓤 ̇ } {Y : 𝓥 ̇ }
→ (dˣ : is-discrete X) (dʸ : is-discrete Y)
→ (f : (ℕ → (ℕ → X)) → (ℕ → Y))
→ seq-f-ucontinuousᴺ f
↔ f-ucontinuous (Π-ClosenessSpace (λ _ → ℕ→D-ClosenessSpace dˣ))
(ℕ→D-ClosenessSpace dʸ) f
seq-f-ucontinuousᴺ-↔-closeness {𝓤} {𝓥} {X} {Y} dˣ dʸ f
= seq-f-ucontinuousᴺ-to-closeness dˣ dʸ f
, closeness-to-seq-f-ucontinuousᴺ dˣ dʸ f
\end{code}