packages feed

cubical-0.1.0: examples/primitive.cub

module primitive where

Id   : (A : U) (a b : A) -> U
Id = PN

refl : (A : U) (a : A) -> Id A a a
refl = PN
funExt : (A : U) (B : (a : A) -> U) (f g : (a : A) -> B a)
         (p : ((x : A) -> (Id (B x) (f x) (g x)))) -> Id ((y : A) -> B y) f g
funExt = PN

J : (A : U) (a : A) -> (C : (x : A) -> Id A a x -> U) -> C a (refl A a) ->
      (x : A) -> (p : Id A a x) -> C x p
J = PN

Jeq : (A : U) (a : A) -> (C : (x : A) -> Id A a x -> U) -> (d : C a (refl A a)) ->
        Id (C a (refl A a)) d (J A a C d a (refl A a))
Jeq = PN

inh : U -> U
inh = PN

inc : (A : U) -> A -> inh A
inc = PN

prop : U -> U
prop A = (a b : A) -> Id A a b

squash : (A : U) -> prop (inh A)
squash = PN

inhrec : (A : U) (B : U) (p : prop B) (f : A -> B) (a : inh A) -> B
inhrec = PN

Sigma : (A : U) (B : A -> U) -> U
data Sigma A B = pair (x : A) (y : B x)

fiber : (A B : U) (f : A -> B) (y : B) -> U
fiber A B f y = Sigma A (\x -> Id B (f x) y)

id : (A : U) -> A -> A
id A a = a

pathTo : (A:U) -> A -> U
pathTo A = fiber A A (id A)

equivEq : (A B : U) (f : A -> B) (s : (y : B) -> fiber A B f y)
            (t : (y : B) -> (v : fiber A B f y) -> Id (fiber A B f y) (s y) v) ->
            Id U A B
equivEq = PN

transport : (A B : U) -> Id U A B -> A -> B
transport = PN

transportRef : (A : U) -> (a : A) -> Id A a (transport A A (refl U A) a)
transportRef = PN

equivEqRef : (A : U) -> (s : (y : A) -> pathTo A y) -> 
             (t : (y : A) -> (v : pathTo A y) -> Id (pathTo A y) (s y) v) ->
             Id (Id U A A) (refl U A) (equivEq A A (id A) s t)
equivEqRef = PN	       

transpEquivEq : (A B : U) -> (f : A -> B) (s : (y : B) -> fiber A B f y) -> 
                (t : (y : B) -> (v : fiber A B f y) -> Id (fiber A B f y) (s y) v) ->
                (a : A) -> Id B (f a) (transport A B (equivEq A B f s t) a)
transpEquivEq = PN