Todd Waugh Ambridge, January 2024 # Parametric Regression \begin{code} {-# OPTIONS --without-K --safe #-} open import UF.FunExt open import Quotient.Type using (is-prop-valued;is-equiv-relation;EqRel) open import MLTT.Spartan open import Notation.Order open import Naturals.Order open import NotionsOfDecidability.Complemented open import CoNaturals.Type renaming (ℕ-to-ℕ∞ to _↑ ; Zero-smallest to zero-minimal ; ∞-largest to ∞-maximal) open import UF.DiscreteAndSeparated open import MLTT.Two-Properties open import UF.SubtypeClassifier open import TWA.Thesis.Chapter2.Sequences module TWA.Thesis.Chapter4.ParametricRegression (fe : FunExt) where open import TWA.Thesis.Chapter3.ClosenessSpaces fe open import TWA.Thesis.Chapter3.ClosenessSpaces-Examples fe open import TWA.Thesis.Chapter3.SearchableTypes fe open import TWA.Thesis.Chapter4.ApproxOrder fe open import TWA.Thesis.Chapter4.ApproxOrder-Examples fe open import TWA.Thesis.Chapter4.GlobalOptimisation fe \end{code} ## Regression as maximisation \begin{code} invert-rel : {X : 𝓤 ̇ } → (X → X → 𝓥 ̇ ) → (X → X → 𝓥 ̇ ) invert-rel R x y = R y x invert-rel' : {X : 𝓤 ̇ } → (X → X → ℕ → 𝓥 ̇ ) → (X → X → ℕ → 𝓥 ̇ ) invert-rel' R x y = R y x invert-preorder-is-preorder : {X : 𝓤 ̇ } → (_≤_ : X → X → 𝓥 ̇ ) → is-preorder _≤_ → let _≥_ = invert-rel _≤_ in is-preorder _≥_ invert-preorder-is-preorder _≤_ (r' , t' , p') = r , t , p where r : reflexive (invert-rel _≤_) r x = r' x t : transitive (invert-rel _≤_) t x y z q r = t' z y x r q p : is-prop-valued (invert-rel _≤_) p x y = p' y x invert-approx-order-is-approx-order : (X : ClosenessSpace 𝓤) → (_≤ⁿ_ : ⟨ X ⟩ → ⟨ X ⟩ → ℕ → 𝓥' ̇ ) → is-approx-order X _≤ⁿ_ → let _≥ⁿ_ = invert-rel' _≤ⁿ_ in is-approx-order X _≥ⁿ_ invert-approx-order-is-approx-order X _≤ⁿ_ a'@(_ , d' , c') = l , d , c where l : (ϵ : ℕ) → is-linear-preorder (λ x y → invert-rel' _≤ⁿ_ x y ϵ) l ϵ = (≤ⁿ-refl X a' ϵ , (λ x y z x≤y y≤z → ≤ⁿ-trans X a' ϵ z y x y≤z x≤y) , (λ x y → ≤ⁿ-prop X a' ϵ y x)) , (λ x y → ≤ⁿ-linear X a' ϵ y x) d : (ϵ : ℕ) (x y : ⟨ X ⟩) → is-decidable (invert-rel' _≤ⁿ_ x y ϵ) d ϵ x y = d' ϵ y x c : (ϵ : ℕ) (x y : ⟨ X ⟩) → C X ϵ x y → invert-rel' _≤ⁿ_ x y ϵ c ϵ x y Cxy = c' ϵ y x (C-sym X ϵ x y Cxy) is_global-maximal : ℕ → {𝓤 𝓥 : Universe} → {X : 𝓤 ̇ } {Y : 𝓥 ̇ } → (_≤ⁿ_ : Y → Y → ℕ → 𝓦 ̇ ) → (f : X → Y) → X → 𝓦 ⊔ 𝓤 ̇ (is ϵ global-maximal) {𝓤} {𝓥} {X} _≤ⁿ_ f x₀ = is ϵ global-minimal (invert-rel' _≤ⁿ_) f x₀ has_global-maximal : ℕ → {𝓤 𝓥 : Universe} {X : 𝓤 ̇ } → {Y : 𝓥 ̇ } → (_≤ⁿ_ : Y → Y → ℕ → 𝓦 ̇ ) → (f : X → Y) → (𝓦 ⊔ 𝓤) ̇ (has ϵ global-maximal) {𝓤} {𝓥} {𝓦} {X} _≤ⁿ_ f = Σ ((is ϵ global-maximal) {𝓤} {𝓥} {𝓦} {X} _≤ⁿ_ f) global-max-ℕ∞ : (X : ClosenessSpace 𝓤) → ⟨ X ⟩ → totally-bounded X 𝓤' → (f : ⟨ X ⟩ → ℕ∞) → f-ucontinuous X ℕ∞-ClosenessSpace f → (ϵ : ℕ) → (has ϵ global-maximal) ℕ∞-approx-lexicorder f global-max-ℕ∞ X x₀ t f ϕ ϵ = global-opt X ℕ∞-ClosenessSpace x₀ (invert-rel' ℕ∞-approx-lexicorder) (invert-approx-order-is-approx-order ℕ∞-ClosenessSpace ℕ∞-approx-lexicorder ℕ∞-approx-lexicorder-is-approx-order) ϵ f ϕ t oracle-closeness' : (Y : PseudoClosenessSpace 𝓥) → (𝓞 : ⟪ Y ⟫) → (ϵ : ℕ) → let c = pr₁ (pr₂ Y) in (y₁ y₂ : ⟪ Y ⟫) → C' Y ϵ y₁ y₂ → C' (ι ℕ∞-ClosenessSpace) ϵ (c 𝓞 y₁) (c 𝓞 y₂) oracle-closeness' (_ , c , _ , c-sym , c-ult) 𝓞 ϵ y₁ y₂ Cϵy₁y₂ n n⊏ϵ = decidable-𝟚₁ (∼ⁿ-decidable (λ _ → 𝟚-is-discrete) _ _ (succ n)) (λ k k<sn → C𝓞-eq k (<-≤-trans k (succ n) ϵ k<sn (⊏-gives-< n ϵ n⊏ϵ)) (𝟚-possibilities (pr₁ (c 𝓞 y₁) k)) (𝟚-possibilities (pr₁ (c 𝓞 y₂) k))) where C𝓞-eq : (n : ℕ) → n < ϵ → let c𝓞y₁n = pr₁ (c 𝓞 y₁) n in let c𝓞y₂n = pr₁ (c 𝓞 y₂) n in (c𝓞y₁n = ₀) + (c𝓞y₁n = ₁) → (c𝓞y₂n = ₀) + (c𝓞y₂n = ₁) → c𝓞y₁n = c𝓞y₂n C𝓞-eq n n<ϵ (inl c𝓞y₁=₀) (inl c𝓞y₂=₀) = c𝓞y₁=₀ ∙ c𝓞y₂=₀ ⁻¹ C𝓞-eq n n<ϵ (inl c𝓞y₁=₀) (inr c𝓞y₂=₁) = 𝟘-elim (zero-is-not-one (c𝓞y₁=₀ ⁻¹ ∙ c-ult 𝓞 y₂ y₁ n (Lemma[a=₁→b=₁→min𝟚ab=₁] c𝓞y₂=₁ (ap (λ - → pr₁ - n) (c-sym y₂ y₁) ∙ Cϵy₁y₂ n (<-gives-⊏ n ϵ n<ϵ))))) C𝓞-eq n n<ϵ (inr c𝓞y₁=₁) (inl c𝓞y₂=₀) = 𝟘-elim (zero-is-not-one (c𝓞y₂=₀ ⁻¹ ∙ c-ult 𝓞 y₁ y₂ n (Lemma[a=₁→b=₁→min𝟚ab=₁] c𝓞y₁=₁ (Cϵy₁y₂ n (<-gives-⊏ n ϵ n<ϵ))))) C𝓞-eq n n<ϵ (inr c𝓞y₁=₁) (inr c𝓞y₂=₁) = c𝓞y₁=₁ ∙ c𝓞y₂=₁ ⁻¹ oracle-closeness : (Y : PseudoClosenessSpace 𝓥) → (𝓞 : ⟪ Y ⟫) → let c = pr₁ (pr₂ Y) in f-ucontinuous' Y (ι ℕ∞-ClosenessSpace) (c 𝓞) oracle-closeness Y 𝓞 ϵ = ϵ , oracle-closeness' Y 𝓞 ϵ optimisation-convergence : (X : ClosenessSpace 𝓤) (Y : PseudoClosenessSpace 𝓥) → ⟨ X ⟩ → totally-bounded X 𝓤' → (M : ⟨ X ⟩ → ⟪ Y ⟫) (𝓞 : ⟪ Y ⟫) → f-ucontinuous' (ι X) Y M → let c = pr₁ (pr₂ Y) in (ϵ : ℕ) → (has ϵ global-maximal) ℕ∞-approx-lexicorder (λ x → c 𝓞 (M x)) optimisation-convergence X Y x₀ t M 𝓞 ϕᴹ = global-max-ℕ∞ X x₀ t (c 𝓞 ∘ M) (λ ϵ → pr₁ (ϕᴹ ϵ) , λ x₁ x₂ Cδᶜx₁x₂ → oracle-closeness' Y 𝓞 ϵ (M x₁) (M x₂) (pr₂ (ϕᴹ ϵ) x₁ x₂ Cδᶜx₁x₂)) where c : ⟪ Y ⟫ → ⟪ Y ⟫ → ℕ∞ c = pr₁ (pr₂ Y) regressor : (X : ClosenessSpace 𝓤) (Y : PseudoClosenessSpace 𝓥) → 𝓤 ⊔ 𝓥 ̇ regressor {𝓤} {𝓥} X Y = (M : ⟨ X ⟩ → ⟪ Y ⟫) → f-ucontinuous' (ι X) Y M → ⟪ Y ⟫ → ⟨ X ⟩ p-regressor : (X : ClosenessSpace 𝓤) (Y : PseudoClosenessSpace 𝓥) → (𝓔S : csearchable 𝓤₀ X) → (ε : ℕ) → regressor X Y p-regressor {𝓤} {𝓥} X Y S ε M ϕᴹ 𝓞 = pr₁ (S ((p , d) , ϕ)) where p : ⟨ X ⟩ → Ω 𝓤₀ p x = C'Ω Y ε 𝓞 (M x) d : is-complemented (λ x → p x holds) d x = C'-decidable Y ε 𝓞 (M x) ϕ : p-ucontinuous X p ϕ = δ , γ where δ : ℕ δ = pr₁ (ϕᴹ ε) γ : (x₁ x₂ : ⟨ X ⟩) → C X δ x₁ x₂ → p x₁ holds → p x₂ holds γ x₁ x₂ Cδx₁x₂ px₁ = C'-trans Y ε 𝓞 (M x₁) (M x₂) px₁ (pr₂ (ϕᴹ ε) x₁ x₂ Cδx₁x₂) s-imperfect-convergence : (X : ClosenessSpace 𝓤) (Y : PseudoClosenessSpace 𝓥) → (S : csearchable 𝓤₀ X) → (ε : ℕ) → (M : ⟨ X ⟩ → ⟪ Y ⟫) (ϕᴹ : f-ucontinuous' (ι X) Y M) → (Ψ : ⟪ Y ⟫ → ⟪ Y ⟫) (k : ⟨ X ⟩) → let 𝓞 = M k Ψ𝓞 = Ψ 𝓞 reg = p-regressor X Y S ε ω = M (reg M ϕᴹ Ψ𝓞) in (C' Y ε 𝓞 Ψ𝓞) → (C' Y ε 𝓞 ω) s-imperfect-convergence X Y S ε M ϕᴹ Ψ k Cε𝓞Ψ𝓞 = C'-trans Y ε 𝓞 Ψ𝓞 ω Cε𝓞Ψ𝓞 (pr₂ (S ((p , d) , ϕ)) (k , C'-sym Y ε 𝓞 Ψ𝓞 Cε𝓞Ψ𝓞)) where 𝓞 = M k Ψ𝓞 = Ψ 𝓞 reg = p-regressor X Y S ε ω = M (reg M ϕᴹ Ψ𝓞) p : ⟨ X ⟩ → Ω 𝓤₀ p x = C'Ω Y ε Ψ𝓞 (M x) d : is-complemented (λ x → p x holds) d x = C'-decidable Y ε Ψ𝓞 (M x) ϕ : p-ucontinuous X p ϕ = δ , γ where δ : ℕ δ = pr₁ (ϕᴹ ε) γ : (x₁ x₂ : ⟨ X ⟩) → C X δ x₁ x₂ → p x₁ holds → p x₂ holds γ x₁ x₂ Cδx₁x₂ CεΨ𝓞Mx₂ = C'-trans Y ε Ψ𝓞 (M x₁) (M x₂) CεΨ𝓞Mx₂ (pr₂ (ϕᴹ ε) x₁ x₂ Cδx₁x₂) perfect-convergence : (X : ClosenessSpace 𝓤) (Y : PseudoClosenessSpace 𝓥) → (S : csearchable 𝓤₀ X) → (ε : ℕ) → (M : ⟨ X ⟩ → ⟪ Y ⟫) (ϕᴹ : f-ucontinuous' (ι X) Y M) → (k : ⟨ X ⟩) → let 𝓞 = M k reg = p-regressor X Y S ε ω = M (reg M ϕᴹ 𝓞) in C' Y ε 𝓞 ω perfect-convergence X Y S ε M ϕᴹ k = s-imperfect-convergence X Y S ε M ϕᴹ id k (C'-refl Y ε 𝓞) where 𝓞 = M k \end{code}