less prototype, less bad code implementation of CCHM type theory
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
1.4 KiB

  1. {-# LANGUAGE ConstraintKinds #-}
  2. {-# LANGUAGE KindSignatures #-}
  3. module Elab.WiredIn (wiType, wiValue, iand, ior, inot, ielim, incS, outS, comp, fill, hComp, glueType, glueElem, unglue, fun, system, strictK, strictJ, projIntoCase) where
  4. import Syntax
  5. import Debug (DebugCallStack)
  6. wiType :: WiredIn -> NFType
  7. wiValue :: WiredIn -> NFType
  8. iand, ior :: NFEndp -> NFEndp -> NFEndp
  9. inot :: NFEndp -> NFEndp
  10. ielim :: NFSort -> Value -> Value -> Value -> NFEndp -> Value
  11. incS :: DebugCallStack => NFSort -> NFEndp -> Value -> Value
  12. outS :: DebugCallStack => NFSort -> NFEndp -> Value -> Value -> Value
  13. comp :: DebugCallStack => NFLine -> NFEndp -> Value -> Value -> Value
  14. fill :: DebugCallStack => NFLine -> NFEndp -> Value -> Value -> Value -> Value
  15. hComp :: DebugCallStack => NFSort -> NFEndp -> Value -> Value -> Value
  16. glueType :: DebugCallStack => NFSort -> NFEndp -> NFPartial -> NFPartial -> Value
  17. glueElem :: DebugCallStack => NFSort -> NFEndp -> NFPartial -> NFPartial -> NFPartial -> Value -> Value
  18. unglue :: DebugCallStack => NFSort -> NFEndp -> NFPartial -> NFPartial -> Value -> Value
  19. fun :: (Value -> Value) -> Value
  20. system :: (Value -> Value -> Value) -> Value
  21. strictK :: DebugCallStack => NFSort -> Value -> NFSort -> Value -> Value -> Value
  22. strictJ :: DebugCallStack => NFSort -> Value -> NFSort -> Value -> Value -> Value -> Value
  23. projIntoCase :: (Term -> Term) -> (Term, Int, Term) -> (Term, Int, Term)