{-# LANGUAGE ConstraintKinds #-} {-# LANGUAGE KindSignatures #-} module Elab.WiredIn (wiType, wiValue, iand, ior, inot, ielim, incS, outS, comp, fill, hComp, glueType, glueElem, unglue, fun, system, strictK, strictJ, projIntoCase) where import Syntax import Debug (DebugCallStack) wiType :: WiredIn -> NFType wiValue :: WiredIn -> NFType iand, ior :: NFEndp -> NFEndp -> NFEndp inot :: NFEndp -> NFEndp ielim :: NFSort -> Value -> Value -> Value -> NFEndp -> Value incS :: DebugCallStack => NFSort -> NFEndp -> Value -> Value outS :: DebugCallStack => NFSort -> NFEndp -> Value -> Value -> Value comp :: DebugCallStack => NFLine -> NFEndp -> Value -> Value -> Value fill :: DebugCallStack => NFLine -> NFEndp -> Value -> Value -> Value -> Value hComp :: DebugCallStack => NFSort -> NFEndp -> Value -> Value -> Value glueType :: DebugCallStack => NFSort -> NFEndp -> NFPartial -> NFPartial -> Value glueElem :: DebugCallStack => NFSort -> NFEndp -> NFPartial -> NFPartial -> NFPartial -> Value -> Value unglue :: DebugCallStack => NFSort -> NFEndp -> NFPartial -> NFPartial -> Value -> Value fun :: (Value -> Value) -> Value system :: (Value -> Value -> Value) -> Value strictK :: DebugCallStack => NFSort -> Value -> NFSort -> Value -> Value -> Value strictJ :: DebugCallStack => NFSort -> Value -> NFSort -> Value -> Value -> Value -> Value projIntoCase :: (Term -> Term) -> (Term, Int, Term) -> (Term, Int, Term)