Remove work-in-progress for functors

This commit is contained in:
Frederik Hanghøj Iversen 2018-04-13 15:30:20 +02:00
parent 6b7d66b7fc
commit b7c0fe64cf

View file

@ -33,152 +33,13 @@ module Fun {c c' d d' : Level} ( : Category c c') (𝔻 : C
open IsPreCategory isPreCategory hiding (identity)
module _ (F : Functor 𝔻) where
center : Σ[ G Object ] (F G)
center = F , idToIso F F refl
open Σ center renaming (snd to isoF)
module _ (cG : Σ[ G Object ] (F G)) where
open Σ cG renaming (fst to G ; snd to isoG)
module G = Functor G
open Σ isoG renaming (fst to θNT ; snd to invθNT)
open Σ invθNT renaming (fst to ηNT ; snd to areInv)
open Σ θNT renaming (fst to θ ; snd to θN)
open Σ ηNT renaming (fst to η ; snd to ηN)
open Σ areInv renaming (fst to ve-re ; snd to re-ve)
-- f ~ Transformation G G
-- f : (X : .Object) → 𝔻 [ G.omap X , G.omap X ]
-- f X = T[ θ ∘ η ] X
-- g = T[ η ∘ θ ] {!!}
ntF : NaturalTransformation F F
ntF = identity F
ntG : NaturalTransformation G G
ntG = identity G
idFunctor = Functors.identity
-- Dunno if this is the way to go, but if I can construct a an inverse of
-- G that is also inverse of F (possibly by being propositionally equal to
-- another functor F~)
postulate
G~ : Functor 𝔻
F~ : Functor 𝔻
F~ = G~
postulate
prop0 : F[ G~ G ] idFunctor
prop1 : F[ F G~ ] idFunctor
lem : F[ F F~ ] idFunctor
lem = begin
F[ F F~ ] ≡⟨⟩
F[ F G~ ] ≡⟨ prop1
idFunctor
p0 : F G
p0 = begin
F ≡⟨ sym Functors.rightIdentity
F[ F idFunctor ] ≡⟨ cong (λ φ F[ F φ ]) (sym prop0)
F[ F F[ G~ G ] ] ≡⟨ Functors.isAssociative {F = G} {G = G~} {H = F}
F[ F[ F G~ ] G ] ≡⟨⟩
F[ F[ F F~ ] G ] ≡⟨ cong (λ φ F[ φ G ]) lem
F[ idFunctor G ] ≡⟨ Functors.leftIdentity
G
p1 : (λ i Σ (Arrow F (p0 i)) (Isomorphism {A = F} {B = p0 i})) [ isoF isoG ]
p1 = {!!}
isContractible : (F , isoF) (G , isoG)
isContractible i = p0 i , p1 i
univalent[Contr] : isContr (Σ[ G Object ] (F G))
univalent[Contr] = center , isContractible
module _ {A B : Functor 𝔻} where
module A = Functor A
module B = Functor B
module _ (p : A B) where
omapP : A.omap B.omap
omapP i = Functor.omap (p i)
coerceAB : {X} 𝔻 [ A.omap X , A.omap X ] 𝔻 [ A.omap X , B.omap X ]
coerceAB {X} = cong (λ φ 𝔻 [ A.omap X , φ X ]) omapP
-- The transformation will be the identity on 𝔻. Such an arrow has the
-- type `A.omap A → A.omap A`. Which we can coerce to have the type
-- `A.omap → B.omap` since `A` and `B` are equal.
coeidentity : Transformation A B
coeidentity X = coe coerceAB 𝔻.identity
module _ {a b : .Object} (f : [ a , b ]) where
nat' : 𝔻 [ coeidentity b A.fmap f ] 𝔻 [ B.fmap f coeidentity a ]
nat' = begin
(𝔻 [ coeidentity b A.fmap f ]) ≡⟨ {!!}
(𝔻 [ B.fmap f coeidentity a ])
transs : (i : I) Transformation A (p i)
transs = {!!}
natt : (i : I) Natural A (p i) {!!}
natt = {!!}
t : Natural A B coeidentity
t = coe c (identityNatural A)
where
c : Natural A A (identityTrans A) Natural A B coeidentity
c = begin
Natural A A (identityTrans A) ≡⟨ (λ x {!natt ?!})
Natural A B coeidentity
-- cong (λ φ → {!Natural A A (identityTrans A)!}) {!!}
k : Natural A A (identityTrans A) Natural A B coeidentity
k n {a} {b} f = res
where
res : (𝔻 [ coeidentity b A.fmap f ]) (𝔻 [ B.fmap f coeidentity a ])
res = {!!}
nat : Natural A B coeidentity
nat = nat'
fromEq : NaturalTransformation A B
fromEq = coeidentity , nat
module _ {A B : Functor 𝔻} where
obverse : A B A B
obverse p = res
where
ob : Arrow A B
ob = fromEq p
re : Arrow B A
re = fromEq (sym p)
vr : _<<<_ {A = A} {B} {A} re ob identity A
vr = {!!}
rv : _<<<_ {A = B} {A} {B} ob re identity B
rv = {!!}
isInverse : IsInverseOf {A} {B} ob re
isInverse = vr , rv
iso : Isomorphism {A} {B} ob
iso = re , isInverse
res : A B
res = ob , iso
reverse : A B A B
reverse iso = {!!}
ve-re : (y : A B) obverse (reverse y) y
ve-re = {!!}
re-ve : (x : A B) reverse (obverse x) x
re-ve = {!!}
done : isEquiv (A B) (A B) (idToIso A B)
done = {!gradLemma obverse reverse ve-re re-ve!}
univalent : Univalent
univalent = {!done!}
-- There used to be some work-in-progress on this theorem, please go back to
-- this point in time to see it:
--
-- commit 6b7d66b7fc936fe3674b2fd9fa790bd0e3fec12f
-- Author: Frederik Hanghøj Iversen <fhi.1990@gmail.com>
-- Date: Fri Apr 13 15:26:46 2018 +0200
postulate univalent : Univalent
isCategory : IsCategory raw
IsCategory.isPreCategory isCategory = isPreCategory