HaRe-0.6: tools/TFF/Tests.hs
module Main where
import TypesTerms
import Preds
import Syntax
import PrettyPrint
import TFFMonad
import System(getArgs)
--------------------------------------------------------------------------------
-- Tests
--
free f@(Exp (HsId (HsVar n)) , t) = do
{ putStrLn $ "Theorem for: " ++ pp f
; putStrLn . pp . run $ getRel t f f
}
a = mkTyVar (UnQual "a")
b = mkTyVar (UnQual "b")
c = mkTyVar (UnQual "c")
tint = mkTyCon (UnQual "Int")
tchar = mkTyCon (UnQual "Char")
(+->) = mkTyFun
fall n t = mkTyAll (UnQual n) t
mkVar = hsEVar . UnQual
t0 = free (mkVar "one", tint)
t1_0 = free (mkVar "succ", (tint +-> tint))
t1 = free (mkVar "succN", (tint +-> tchar +-> tchar))
t2 = free (mkVar "bottom", (fall "a" a))
t3 = free (mkVar "const1", (fall "a" (a +-> tint)))
t4 = free (mkVar "cast", (fall "a" (fall "b" (a +-> b))))
t5 = free (mkVar "const", (fall "a" (fall "b" (a +-> (b +-> a)))))
tsts = [t0, t1_0, t1, t2, t3, t4, t5]
main = do
a:args <- getArgs
let x = (read a) :: Int
tsts !! x
return ()
--
--------------------------------------------------------------------------------