{-# OPTIONS --safe --without-K #-} module ag-000G where open import MLTT.Spartan open import UF.SubtypeClassifier open import ag-000F
To build frame, we must be able to talk about arbitrary subsets of underlying set X
Fam : ๐ค ฬ โ ๐ค โบ ฬ Fam {๐ค} A = ฮฃ I ๊ ๐ค ฬ , (I โ A) module JoinStntax {A : ๐ค ฬ } (join : Fam A โ A) where join-of : {I : ๐ค ฬ } โ (I โ A) โ A join-of {I} f = join (I , f) syntax join-of (ฮป i โ e) = โจโจ i โฉ e index : {X : ๐ค ฬ } โ Fam X โ ๐ค ฬ index (I , _) = I _$_ : {X : ๐ค ฬ } โ (F : Fam X) โ index F โ X _$_ (_ , f) = f infixl 40 _$_ _โ_ : {X : ๐ค ฬ } โ X โ Fam X โ ๐ค ฬ x โ (_ , f) = fiber f x
Beside poset axioms, frame axioms are
- There is a top element โค, every element xโโคโโค
- Binary meet xโ โงโ y is smaller than x and y, and it is a limit
- Each arbitrary subset U has a join โจU, such that each element of it smaller than the join
- Binary meets must distribute over arbitrary joins
frame-axioms : (X : ๐ค ฬ ) โ order-structure X โ X โ (X โ X โ X) โ (Fam X โ X) โ ๐ค โบ ฬ frame-axioms X _โค_ โค _โง_ โจ = ((x : X) โ (x โค โค) holds) ร ((x y : X) โ ((x โง y) โค x) holds ร ((x โง y) โค y) holds) ร ((x y z : X) โ (z โค x) holds โ (z โค y) holds โ (z โค (x โง y)) holds) ร ((U : Fam X) โ (x : X) โ x โ U โ (x โค โจ U) holds) ร ((U : Fam X) โ (x : X) โ ((y : X) โ y โ U โ (y โค x) holds) โ (โจ U โค x) holds) ร distrib where open JoinStntax โจ distrib = ((U : Fam X) โ (x : X) โ x โง (โจ U) ๏ผ โจโจ i โฉ (x โง U $ i)) Frame-structure : ๐ค ฬ โ ๐ค โบ ฬ Frame-structure X = ฮฃ _โค_ ๊ order-structure X , ฮฃ โค ๊ X , ฮฃ _โง_ ๊ (X โ X โ X) , ฮฃ โจ ๊ (Fam X โ X) , (poset-axioms X _โค_) ร (frame-axioms X _โค_ โค _โง_ โจ) Frame : (๐ค : Universe) โ ๐ค โบ ฬ Frame ๐ค = ฮฃ X ๊ ๐ค ฬ , Frame-structure X