-- Kan composition and filling
| Comp Ter Ter (System Ter)
| Fill Ter Ter (System Ter)
- -- Glue
+ | HComp Ter Ter (System Ter)
+ -- Glue
| Glue Ter (System Ter)
| GlueElem Ter (System Ter)
| UnGlueElem Ter (System Ter)
PLam i e -> char '<' <> text (show i) <> char '>' <+> showTer e
AppFormula e phi -> showTer1 e <+> char '@' <+> showFormula phi
Comp e t ts -> text "comp" <+> showTers [e,t] <+> text (showSystem ts)
+ HComp e t ts -> text "hComp" <+> showTers [e,t] <+> text (showSystem ts)
Fill e t ts -> text "fill" <+> showTers [e,t] <+> text (showSystem ts)
Glue a ts -> text "Glue" <+> showTer1 a <+> text (showSystem ts)
GlueElem a ts -> text "glue" <+> showTer1 a <+> text (showSystem ts)
AppFormula e phi -> eval rho e @@ evalFormula rho phi
Comp a t0 ts ->
compLine (eval rho a) (eval rho t0) (evalSystem rho ts)
+ HComp a t0 ts ->
+ hComp (eval rho a) (eval rho t0) (evalSystem rho ts)
Fill a t0 ts ->
fillLine (eval rho a) (eval rho t0) (evalSystem rho ts)
Glue a ts -> glue (eval rho a) (evalSystem rho ts)
App. Exp2 ::= Exp2 Exp3 ;
PathP. Exp3 ::= "PathP" Exp4 Exp4 Exp4 ;
Comp. Exp3 ::= "comp" Exp4 Exp4 System ;
+HComp. Exp3 ::= "hComp" Exp4 Exp4 System ;
Trans. Exp3 ::= "transport" Exp4 Exp4 ;
Fill. Exp3 ::= "fill" Exp4 Exp4 System ;
Glue. Exp3 ::= "Glue" Exp4 System ;
_ -> CTT.AppFormula <$> resolveExp t <*> resolveFormula phi
PathP a u v -> CTT.PathP <$> resolveExp a <*> resolveExp u <*> resolveExp v
Comp u v ts -> CTT.Comp <$> resolveExp u <*> resolveExp v <*> resolveSystem ts
+ HComp u v ts -> CTT.HComp <$> resolveExp u <*> resolveExp v <*> resolveSystem ts
Fill u v ts -> CTT.Fill <$> resolveExp u <*> resolveExp v <*> resolveSystem ts
Trans u v -> CTT.Comp <$> resolveExp u <*> resolveExp v <*> pure Map.empty
Glue u ts -> CTT.Glue <$> resolveExp u <*> resolveSystem ts