{-# OPTIONS --safe --without-K #-}
open import Data.Product using (∃; _,_; -,_) renaming (_×_ to _∧_; proj₁ to fst; proj₂ to snd)
open import Relation.Binary.PropositionalEquality using (_≡_; refl; subst)
module Semantics.Presheaf.Evaluation.IS4
(C : Set)
(_⩽_ : (X Y : C) → Set)
(⩽-trans : ∀ {X X' X'' : C} (f : X ⩽ X') (g : X' ⩽ X'') → X ⩽ X'')
(⩽-trans-assoc : ∀ {X X' X'' X''' : C} (f : X ⩽ X') (g : X' ⩽ X'') (h : X'' ⩽ X''') → ⩽-trans f (⩽-trans g h) ≡ ⩽-trans (⩽-trans f g) h)
(⩽-refl : ∀ {X : C} → X ⩽ X)
(⩽-refl-unit-left : ∀ {X X' : C} (f : X ⩽ X') → ⩽-trans f ⩽-refl ≡ f)
(⩽-refl-unit-right : ∀ {X X' : C} (f : X ⩽ X') → ⩽-trans ⩽-refl f ≡ f)
(_R_ : (X Y : C) → Set)
(R-trans : ∀ {X Y Z : C} (r : X R Y) (r' : Y R Z) → X R Z)
(R-trans-assoc : ∀ {X Y Z Z' : C} (r : X R Y) (r' : Y R Z) (r'' : Z R Z') → R-trans r (R-trans r' r'') ≡ R-trans (R-trans r r') r'')
(R-refl : ∀ {X : C} → X R X)
(R-refl-unit-left : ∀ {X Y : C} (r : X R Y) → R-trans r R-refl ≡ r)
(R-refl-unit-right : ∀ {X Y : C} (r : X R Y) → R-trans R-refl r ≡ r)
(factor : ∀ {X Y Y' : C} (r : X R Y) (w : Y ⩽ Y') → ∃ λ X' → X ⩽ X' ∧ X' R Y')
(let lCtx : ∀ {X Y Y' : C} (r : X R Y) (w : Y ⩽ Y') → C ; lCtx = λ r w → factor r w .fst)
(let factorWk : ∀ {X Y Y' : C} (r : X R Y) (w : Y ⩽ Y') → X ⩽ _ ; factorWk = λ r w → factor r w .snd .fst)
(let factorR : ∀ {X Y Y' : C} (r : X R Y) (w : Y ⩽ Y') → _ R Y' ; factorR = λ r w → factor r w .snd .snd)
(factor-pres-id : ∀ {X Y : C} (r : X R Y) → factor r ⩽-refl ≡ (-, ⩽-refl , r))
(factor-pres-∘ : ∀ {X Y Y' Y'' : C} (r : X R Y) (w : Y ⩽ Y') (w' : Y' ⩽ Y'') → factor r (⩽-trans w w') ≡ (-, ⩽-trans (factorWk r w) (factorWk (factorR r w) w') , factorR (factorR r w) w'))
(factor-pres-refl : ∀ {X X' : C} (w : X ⩽ X') → factor R-refl w ≡ (X' , w , R-refl))
(factor-pres-trans : ∀ {X Y Z Z' : C} (r : X R Y) (r' : Y R Z) (w : Z ⩽ Z') → factor (R-trans r r') w ≡ (lCtx r (factorWk r' w) , factorWk r _ , R-trans (factorR r _) (factorR r' _)))
where
import Semantics.Presheaf.Base C _⩽_ ⩽-refl ⩽-trans as PresheafBase
import Semantics.Presheaf.CartesianClosure C _⩽_ ⩽-trans ⩽-trans-assoc ⩽-refl ⩽-refl-unit-left ⩽-refl-unit-right as PresheafCartesianClosure
import Semantics.Presheaf.Necessity C _⩽_ ⩽-trans ⩽-trans-assoc ⩽-refl ⩽-refl-unit-left ⩽-refl-unit-right _R_ factor factor-pres-id factor-pres-∘ as PresheafNecessity
module PresheafNecessityIS4 = PresheafNecessity.IS4 R-trans R-trans-assoc R-refl R-refl-unit-left R-refl-unit-right factor-pres-refl factor-pres-trans
open PresheafBase public
open PresheafCartesianClosure public
open PresheafNecessity public
open PresheafNecessityIS4 public
import Semantics.Clouston.Evaluation.IS4.Base
Psh _→̇_ _≈̇_ ≈̇-refl ≈̇-sym ≈̇-trans _∘_ id'[_]
[]' unit' _×'_ ⟨_,_⟩' π₁'[_] π₂'[_]
_⇒'_ lam' app'
✦'_ ✦'-map_ μ'[_] η'[_]
□'_ box' λ'
as CloustonEvaluationIS4Base
open CloustonEvaluationIS4Base public using (module Eval)
module EvalProperties (N : Psh) where
import Semantics.Clouston.Evaluation.IS4.Properties
Psh _→̇_ _≈̇_ ≈̇-refl ≈̇-sym ≈̇-trans _∘_ ∘-pres-≈̇ ∘-assoc id'[_] id'-unit-left id'-unit-right
[]' unit' []'-eta _×'_ ⟨_,_⟩' ⟨,⟩'-pres-≈̇ π₁'[_] π₂'[_] ×'-beta-left ×'-beta-right ×'-eta ⟨,⟩'-nat
_⇒'_ lam' lam'-pres-≈̇ app' app'-pres-≈̇ ⇒'-beta ⇒'-eta lam'-nat app'-nat
✦'_ ✦'-map_ ✦'-map-pres-≈̇ ✦'-map-pres-id' ✦'-map-pres-∘ μ'[_] μ'-nat μ'-assoc[_] η'[_] η'-nat η'-unit-left[_] η'-unit-right[_]
□'_ □'-map_ box' box'-pres-≈̇ λ' λ'-pres-≈̇ □'-beta □'-eta box'-nat-dom λ'-nat-dom
N
as CloustonEvaluationIS4Properties
open CloustonEvaluationIS4Properties public
Generated from commit 2fd14c996b195ef101dff8919e837907ca0a08aa.