module primitives where primitive Id : (A : U) (a b : A) -> U primitive refl : (A : U) (a : A) -> Id A a a primitive inh : U -> U primitive inc : (A : U) -> A -> inh A prop : U -> U prop A = (a b : A) -> Id A a b primitive squash : (A : U) -> prop (inh A) primitive inhrec : (A : U) (B : U) (p : prop B) (f : A -> B) (a : inh A) -> B Sigma : (A : U) (B : A -> U) -> U Sigma A B = (x : A) * 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) sId : (A : U) (a : A) -> pathTo A a sId A a = (a, refl A a) singl : (A : U) -> A -> U singl A a = Sigma A (Id A a) primitive contrSingl : (A : U) (a b : A) (p : Id A a b) -> Id (singl A a) (a, refl A a) (b, p) primitive 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 primitive transport : (A B : U) -> Id U A B -> A -> B primitive transpInv : (A B : U) -> Id U A B -> B -> A primitive transportRef : (A : U) (a : A) -> Id A a (transport A A (refl U A) a) primitive 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) primitive 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) primitive mapOnPath : (A B : U) (f : A -> B) (a b : A) (p : Id A a b) -> Id B (f a) (f b) primitive appOnPath : (A B : U) (f g : A -> B) (a b : A) (q : Id (A -> B) f g) (p : Id A a b) -> Id B (f a) (g b) primitive IdP : (A B : U) -> Id U A B -> A -> B -> U IdS : (A : U) (F : A -> U) (a0 a1 : A) (p : Id A a0 a1) -> F a0 -> F a1 -> U IdS A F a0 a1 p = IdP (F a0) (F a1) (mapOnPath A U F a0 a1 p) primitive mapOnPathD : (A : U) (F : A -> U) (f : (x : A) -> F x) (a0 a1 : A) (p : Id A a0 a1) -> IdS A F a0 a1 p (f a0) (f a1) primitive mapOnPathS : (A : U) (F : A -> U) (C : U) (f : (x : A) -> F x -> C) (a0 a1 : A) (p : Id A a0 a1) (b0 : F a0) (b1 : F a1) (q : IdS A F a0 a1 p b0 b1) -> Id C (f a0 b0) (f a1 b1) primitive funHExt : (A : U) (B : A -> U) (f g : (a : A) -> B a) -> ((x y : A) -> (p : Id A x y) -> IdS A B x y p (f x) (g y)) -> Id ((y : A) -> B y) f g -- The circle. primitive S1 : U primitive base : S1 primitive loop : Id S1 base base primitive S1rec : (F : S1 -> U) (b : F base) (l : IdS S1 F base base loop b b) (x : S1) -> F x -- The interval. primitive I : U primitive I0 : I primitive I1 : I primitive line : Id I I0 I1 primitive intrec : (F : I -> U) (s : F I0) (e : F I1) (l : IdS I F I0 I1 line s e) (x : I) -> F x