{-# OPTIONS --without-K --exact-split --two-level #-}
module Extension.WeakGlueUAFibrant where
open import Extension.Prelude
open import Extension.GlueRules using (WeakGlue)
open import Extension.CoercionLaws using (PathStructure)
open import Extension.WeakGlueUA using (weak-glue-implies-ua)
private
variable
โ ๐ค : Level
idtoeqv-ap-tr : {A : UU โ} {a b : A} (F : A โ UU ๐ค) (p : Id a b) (x : F a)
โ Id (pr1 (idtoeqv (ap F p)) x) (tr F p x)
idtoeqv-ap-tr F refl x = refl
tr-nat : {A : UU โ} {a b : A} (F H : A โ UU ๐ค) (ฮธ : (z : A) โ F z โ H z)
(p : Id a b) (x : F a) โ Id (ฮธ b (tr F p x)) (tr H p (ฮธ a x))
tr-nat F H ฮธ refl x = refl
tr-const : {A : UU โ} {a b : A} (Y : UU ๐ค) (p : Id a b) (x : Y)
โ Id (tr (ฮป _ โ Y) p x) x
tr-const Y refl x = refl
fibrant-path-structure : {โI : Level} (๐ : UU โI) (aโ aโ : ๐)
(๐ค : Level) (seg : Id aโ aโ) โ PathStructure โI ๐ค
fibrant-path-structure ๐ aโ aโ ๐ค seg = record
{ I = C ๐
; 0I = c aโ
; 1I = c aโ
; path = ฮป g โ ap (ฮป z โ ic (g (c z))) seg
; path-nat = ฮป h g โ ap-comp h (ฮป z โ ic (g (c z))) seg
}
module _ {โI : Level} (๐ : UU โI) (aโ aโ : ๐) (๐ค : Level) (seg : Id aโ aโ) where
private
I : UUแต โI
I = C ๐
0I 1I : I
0I = c aโ
1I = c aโ
coeF : (G : I โ UU ๐ค) โ G 0I โ G 1I
coeF G = tr (ฮป z โ G (c z)) seg
pathF : (G : I โ UU ๐ค) โ Id (G 0I) (G 1I)
pathF G = ap (ฮป z โ G (c z)) seg
c1F : (G : I โ UU ๐ค) (x : G 0I) โ Id (coeF G x) (pr1 (idtoeqv (pathF G)) x)
c1F G x = (idtoeqv-ap-tr (ฮป z โ G (c z)) seg x) โปยน
c2F : (G H : I โ UU ๐ค) (ฮธ : (t : I) โ G t โ H t) (x : G 0I)
โ Id (ฮธ 1I (coeF G x)) (coeF H (ฮธ 0I x))
c2F G H ฮธ x = tr-nat (ฮป z โ G (c z)) (ฮป z โ H (c z)) (ฮป z โ ฮธ (c z)) seg x
c3F : (Y : UU ๐ค) (x : Y) โ Id (coeF (ฮป _ โ Y) x) x
c3F Y x = tr-const Y seg x
fibrant-weak-glue-implies-ua : WeakGlue I 0I 1I ๐ค
โ (A B : UU ๐ค) โ isEquiv (idtoeqv {A = A} {B = B})
fibrant-weak-glue-implies-ua =
weak-glue-implies-ua I 0I 1I ๐ค coeF pathF c1F c2F c3F