|
{-# 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)
|