Glue. Exp3 ::= "glue" ;
GlueElem. Exp3 ::= "glueElem" ;
System. Exp3 ::= "[" [Side] "]" ;
-Pair. Exp3 ::= "(" Exp "," Exp ")" ;
+Pair. Exp3 ::= "(" Exp "," [Exp] ")" ;
coercions Exp 3 ;
+separator nonempty Exp "," ;
Dir0. Dir ::= "0" ;
Dir1. Dir ::= "1" ;
lams tele (resolveExp t)
Fst t -> CTT.Fst <$> resolveExp t
Snd t -> CTT.Snd <$> resolveExp t
- Pair t0 t1 -> CTT.Pair <$> resolveExp t0 <*> resolveExp t1
+ Pair t0 ts -> do
+ e <- resolveExp t0
+ es <- mapM resolveExp ts
+ return $ foldr1 CTT.Pair (e:es)
Let decls e -> do
(rdecls,names) <- resolveDecls decls
CTT.mkWheres rdecls <$> local (insertIdents names) (resolveExp e)
false -> refl bool false
negEq : Id U bool bool =
- <i> glue bool [ (i = 0) -> (bool,(neg,(neg,(negK,negK)))) ]
+ <i> glue bool [ (i = 0) -> (bool,neg,neg,negK,negK) ]
test : bool = transport negEq true
boolEqF2 : Id U bool F2 =
-- <i> glue F2 [ (i = 0) -> (bool,(boolToF2,(f2ToBool,(f2ToBoolK,boolToF2K))))]
- isoId bool F2 boolToF2 f2ToBool f2ToBoolK boolToF2K
+ isoId bool F2 boolToF2 f2ToBool f2ToBoolK boolToF2K
negF2 : F2 -> F2 = subst U (\(X : U) -> (X -> X)) bool F2 boolEqF2 neg
isoId (A B : U) (f : A -> B) (g : B -> A)
(s : (y:B) -> Id B (f (g y)) y)
(t : (x:A) -> Id A (g (f x)) x) : Id U A B =
- <i> glue B [ (i = 0) -> (A,(f,(g,(s,t)))) ]
+ <i> glue B [ (i = 0) -> (A,f,g,s,t) ]