Martin Escardo, January 2018, May 2020, July 2024 Based on joint work with Cory Knapp. http://www.cs.bham.ac.uk/~mhe/papers/partial-elements-and-recursion.pdf Convention: * 𝓣 is the universe where the dominant truth values live. * 𝓚 is the universe where the knowledge they are dominant lives. * A dominance is given by a function d : 𝓣 ̇ → 𝓚 ̇ subject to suitable properties. \begin{code} {-# OPTIONS --safe --without-K #-} open import MLTT.Spartan open import UF.Equiv open import UF.Subsingletons open import UF.Subsingletons-FunExt open import UF.FunExt module Dominance.Definition where module _ {𝓣 𝓚 : Universe} where D2 : (𝓣 ̇ → 𝓚 ̇ ) → 𝓣 ⁺ ⊔ 𝓚 ̇ D2 d = (X : 𝓣 ̇ ) → is-prop (d X) D3 : (𝓣 ̇ → 𝓚 ̇ ) → 𝓣 ⁺ ⊔ 𝓚 ̇ D3 d = (X : 𝓣 ̇ ) → d X → is-prop X D4 : (𝓣 ̇ → 𝓚 ̇ ) → 𝓚 ̇ D4 d = d 𝟙 D5 : (𝓣 ̇ → 𝓚 ̇ ) → 𝓣 ⁺ ⊔ 𝓚 ̇ D5 d = (P : 𝓣 ̇ ) (Q : P → 𝓣 ̇ ) → d P → ((p : P) → d (Q p)) → d (Σ Q) \end{code} condition D5 is more conceptual and often what we need in practice, and condition D5' below is easier to check: \begin{code} D5' : (𝓣 ̇ → 𝓚 ̇ ) → 𝓣 ⁺ ⊔ 𝓚 ̇ D5' d = (P Q' : 𝓣 ̇ ) → d P → (P → d Q') → d (P × Q') D5-gives-D5' : (d : 𝓣 ̇ → 𝓚 ̇ ) → D5 d → D5' d D5-gives-D5' d d5 P Q' i j = d5 P (λ p → Q') i j D3-and-D5'-give-D5 : propext 𝓣 → (d : 𝓣 ̇ → 𝓚 ̇ ) → D3 d → D5' d → D5 d D3-and-D5'-give-D5 pe d d3 d5' P Q i j = w where Q' : 𝓣 ̇ Q' = Σ Q k : is-prop P k = d3 P i l : (p : P) → is-prop (Q p) l p = d3 (Q p) (j p) m : is-prop Q' m = Σ-is-prop k l n : (p : P) → Q p = Q' n p = pe (l p) m (λ q → (p , q)) (λ (p' , q) → transport Q (k p' p) q) j' : P → d Q' j' p = transport d (n p) (j p) u : d (P × Q') u = d5' P Q' i j' v : P × Q' = Σ Q v = pe (×-is-prop k m) m (λ (p , p' , q) → (p' , q)) (λ (p' , q) → (p' , p' , q)) w : d (Σ Q) w = transport d v u is-dominance : (𝓣 ̇ → 𝓚 ̇ ) → 𝓣 ⁺ ⊔ 𝓚 ̇ is-dominance d = D2 d × D3 d × D4 d × D5 d Dominance : (𝓣 ⊔ 𝓚)⁺ ̇ Dominance = Σ d ꞉ (𝓣 ̇ → 𝓚 ̇ ) , is-dominance d is-dominant : (D : Dominance) → 𝓣 ̇ → 𝓚 ̇ is-dominant (d , _) = d being-dominant-is-prop : (D : Dominance) (X : 𝓣 ̇ ) → is-prop (is-dominant D X) being-dominant-is-prop (_ , (isp , _)) = isp dominant-types-are-props : (D : Dominance) (X : 𝓣 ̇ ) → is-dominant D X → is-prop X dominant-types-are-props (_ , (_ , (disp , _))) = disp dominant-prop : Dominance → 𝓣 ⁺ ⊔ 𝓚 ̇ dominant-prop D = Σ P ꞉ 𝓣 ̇ , is-dominant D P 𝟙-is-dominant : (D : Dominance) → is-dominant D 𝟙 𝟙-is-dominant (_ , (_ , (_ , (oisd , _)))) = oisd dominant-closed-under-Σ : (D : Dominance) → (P : 𝓣 ̇ ) (Q : P → 𝓣 ̇ ) → is-dominant D P → ((p : P) → is-dominant D (Q p)) → is-dominant D (Σ Q) dominant-closed-under-Σ (_ , (_ , (_ , (_ , cus)))) = cus being-dominance-is-prop : Fun-Ext → (d : 𝓣 ̇ → 𝓚 ̇ ) → is-prop (is-dominance d) being-dominance-is-prop fe d = prop-criterion lemma where lemma : is-dominance d → is-prop (is-dominance d) lemma i = Σ-is-prop (Π-is-prop fe (λ _ → being-prop-is-prop fe)) (λ _ → ×₃-is-prop (Π₂-is-prop fe (λ _ _ → being-prop-is-prop fe)) (being-dominant-is-prop (d , i) 𝟙) (Π₄-is-prop fe λ _ Q _ _ → being-dominant-is-prop (d , i) (Σ Q))) \end{code} Added 1st July 2024. We now define, alternatively, a dominance to be a function Ω → Ω and prove the equivalence with the above definition, assuming function extensionality and propositional extensionality. The equivalence requires the universe 𝓚 to be above the universe 𝓣, which in practice means that we replace 𝓚 by 𝓚 ⊔ 𝓣. \begin{code} module _ (fe : Fun-Ext) where open import UF.SubtypeClassifier open import UF.Logic open Universal fe open Implication fe module _ {𝓣 𝓚 : Universe} where d4 : (Ω 𝓣 → Ω 𝓚) → Ω 𝓚 d4 d = d ⊤ d5 : (Ω 𝓣 → Ω 𝓚) → Ω (𝓣 ⁺ ⊔ 𝓚) d5 d = Ɐ p ꞉ Ω 𝓣 , Ɐ q ꞉ (p holds → Ω 𝓣) , d p ⇒ (Ɐ h ꞉ p holds , d (q h)) ⇒ d (ΣΩ h ꞉ p , q h) is-dominance' : (Ω 𝓣 → Ω 𝓚) → 𝓣 ⁺ ⊔ 𝓚 ̇ is-dominance' d = d4 d holds × d5 d holds Dominance' : (𝓣 ⊔ 𝓚)⁺ ̇ Dominance' = Σ d ꞉ (Ω 𝓣 → Ω 𝓚) , is-dominance' d being-dominance'-is-prop : (d : Ω 𝓣 → Ω 𝓚) → is-prop (is-dominance' d) being-dominance'-is-prop d = ×-is-prop (holds-is-prop (d4 d)) (holds-is-prop (d5 d)) Dominance'-gives-Dominance : {𝓣 𝓚 : Universe} → Dominance' {𝓣} {𝓚} → Dominance {𝓣} {𝓣 ⊔ 𝓚} Dominance'-gives-Dominance {𝓣} {𝓚} (d , IV , V) = (d' , II , III , IV' , V') where d' : 𝓣 ̇ → 𝓣 ⊔ 𝓚 ̇ d' X = Σ i ꞉ is-prop X , d (X , i) holds II : D2 d' II X = Σ-is-prop (being-prop-is-prop fe) (λ i → holds-is-prop (d (X , i))) III : D3 d' III X (i , h) = i IV' : d' 𝟙 IV' = 𝟙-is-prop , IV V' : D5 d' V' P Q (i , h) a = Σ-is-prop i (λ p → pr₁ (a p)) , V (P , i) (λ p → Q p , pr₁ (a p)) h (λ p → pr₂ (a p)) Dominance-gives-Dominance' : {𝓣 𝓚 : Universe} → Dominance {𝓣} {𝓚} → Dominance' {𝓣} {𝓚} Dominance-gives-Dominance' {𝓣} {𝓚} (d' , II , III , IV' , V') = (d , IV' , V) where d : Ω 𝓣 → Ω 𝓚 d p = d' (p holds) , II (p holds) V : d5 d holds V p q = V' (p holds) (λ h → q h holds ) definitions-equivalence : {𝓣 𝓚 : Universe} → Prop-Ext → Dominance' {𝓣} {𝓣 ⊔ 𝓚} ≃ Dominance {𝓣} {𝓣 ⊔ 𝓚} definitions-equivalence {𝓣} {𝓚} pe = qinveq f (g , η , ε) where f = Dominance'-gives-Dominance g = Dominance-gives-Dominance' η : g ∘ f ∼ id {_} {Dominance' {𝓣} {𝓣 ⊔ 𝓚}} η (d , IV , V) = to-subtype-= being-dominance'-is-prop (dfunext fe (λ p → to-Ω-= fe (lemma p))) where lemma : (p : Ω 𝓣) → (Σ j ꞉ is-prop (p holds) , d (p holds , j) holds) = d p holds lemma p@(P , i) = pe (Σ-is-prop (being-prop-is-prop fe) (λ j → holds-is-prop (d (P , j)))) (holds-is-prop (d p)) (λ (j , h) → transport (λ - → d (P , -) holds) (being-prop-is-prop fe j i) h) (λ h → i , h) ε : f ∘ g ∼ id {_} {Dominance {𝓣} {𝓣 ⊔ 𝓚}} ε (d' , II , III , IV' , V') = to-subtype-= (being-dominance-is-prop fe) (dfunext fe lemma) where lemma : (P : 𝓣 ̇ ) → is-prop P × d' P = d' P lemma P = pe (×-is-prop (being-prop-is-prop fe) (II P)) (II P) (λ (i , h) → h) (λ δ → III P δ , δ) \end{code}