-- Automatically generated typing assumptions for Prelude

module HaskellPrelude where
import Testbed
import StaticPrelude

defnsHaskellPrelude
 =  ["flip" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 2) `fn` TGen 1 `fn` TGen 0 `fn` TGen 2)),
     "subtract" :>:
       Forall [Star]
	 ([isIn1 cNum (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TGen 0)),
     "gcd" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TGen 0)),
     "lcm" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TGen 0)),
     "otherwise" :>:
       Forall []
	 ([] :=>
	    tBool),
     "^" :>:
       Forall [Star, Star]
	 ([isIn1 cNum (TGen 0), isIn1 cIntegral (TGen 1)] :=>
	    (TGen 0 `fn` TGen 1 `fn` TGen 0)),
     "^^" :>:
       Forall [Star, Star]
	 ([isIn1 cFractional (TGen 0), isIn1 cIntegral (TGen 1)] :=>
	    (TGen 0 `fn` TGen 1 `fn` TGen 0)),
     "." :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1) `fn` (TGen 2 `fn` TGen 0) `fn` TGen 2 `fn` TGen 1)),
     "fromIntegral" :>:
       Forall [Star, Star]
	 ([isIn1 cIntegral (TGen 0), isIn1 cNum (TGen 1)] :=>
	    (TGen 0 `fn` TGen 1)),
     "realToFrac" :>:
       Forall [Star, Star]
	 ([isIn1 cReal (TGen 0), isIn1 cFractional (TGen 1)] :=>
	    (TGen 0 `fn` TGen 1)),
     "sequence" :>:
       Forall [Kfun Star Star, Star]
	 ([isIn1 cMonad (TGen 0)] :=>
	    (TAp tList (TAp (TGen 0) (TGen 1)) `fn` TAp (TGen 0) (TAp tList (TGen 1)))),
     "foldr" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 1) `fn` TGen 1 `fn` TAp tList (TGen 0) `fn` TGen 1)),
     "sequence_" :>:
       Forall [Kfun Star Star, Star]
	 ([isIn1 cMonad (TGen 0)] :=>
	    (TAp tList (TAp (TGen 0) (TGen 1)) `fn` TAp (TGen 0) tUnit)),
     "map" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 1))),
     "mapM" :>:
       Forall [Kfun Star Star, Star, Star]
	 ([isIn1 cMonad (TGen 0)] :=>
	    ((TGen 1 `fn` TAp (TGen 0) (TGen 2)) `fn` TAp tList (TGen 1) `fn` TAp (TGen 0) (TAp tList (TGen 2)))),
     "mapM_" :>:
       Forall [Kfun Star Star, Star, Star]
	 ([isIn1 cMonad (TGen 0)] :=>
	    ((TGen 1 `fn` TAp (TGen 0) (TGen 2)) `fn` TAp tList (TGen 1) `fn` TAp (TGen 0) tUnit)),
     "=<<" :>:
       Forall [Kfun Star Star, Star, Star]
	 ([isIn1 cMonad (TGen 0)] :=>
	    ((TGen 1 `fn` TAp (TGen 0) (TGen 2)) `fn` TAp (TGen 0) (TGen 1) `fn` TAp (TGen 0) (TGen 2))),
     "&&" :>:
       Forall []
	 ([] :=>
	    (tBool `fn` tBool `fn` tBool)),
     "||" :>:
       Forall []
	 ([] :=>
	    (tBool `fn` tBool `fn` tBool)),
     "not" :>:
       Forall []
	 ([] :=>
	    (tBool `fn` tBool)),
     "isAscii" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isControl" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isPrint" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isSpace" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isUpper" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isLower" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isAlpha" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isDigit" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isAlphaNum" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "digitToInt" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tInt)),
     "intToDigit" :>:
       Forall []
	 ([] :=>
	    (tInt `fn` tChar)),
     "toUpper" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tChar)),
     "toLower" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tChar)),
     "ord" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tInt)),
     "chr" :>:
       Forall []
	 ([] :=>
	    (tInt `fn` tChar)),
     "maybe" :>:
       Forall [Star, Star]
	 ([] :=>
	    (TGen 0 `fn` (TGen 1 `fn` TGen 0) `fn` TAp tMaybe (TGen 1) `fn` TGen 0)),
     "either" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1) `fn` (TGen 2 `fn` TGen 1) `fn` TAp (TAp tEither (TGen 0)) (TGen 2) `fn` TGen 1)),
     "absReal" :>:
       Forall [Star]
	 ([isIn1 cNum (TGen 0), isIn1 cOrd (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0)),
     "signumReal" :>:
       Forall [Star, Star]
	 ([isIn1 cNum (TGen 0), isIn1 cNum (TGen 1),
	   isIn1 cOrd (TGen 0)] :=>
	    (TGen 0 `fn` TGen 1)),
     "numericEnumFrom" :>:
       Forall [Star]
	 ([isIn1 cReal (TGen 0)] :=>
	    (TGen 0 `fn` TAp tList (TGen 0))),
     "iterate" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 0) `fn` TGen 0 `fn` TAp tList (TGen 0))),
     "numericEnumFromThen" :>:
       Forall [Star]
	 ([isIn1 cReal (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TAp tList (TGen 0))),
     "takeWhile" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "numericEnumFromTo" :>:
       Forall [Star]
	 ([isIn1 cReal (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TAp tList (TGen 0))),
     "numericEnumFromThenTo" :>:
       Forall [Star]
	 ([isIn1 cReal (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TGen 0 `fn` TAp tList (TGen 0))),
     "reduce" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TAp tRatio (TGen 0))),
     "%" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TAp tRatio (TGen 0))),
     "realFloatToRational" :>:
       Forall [Star]
	 ([isIn1 cRealFloat (TGen 0)] :=>
	    (TGen 0 `fn` TAp tRatio tInteger)),
     "floatToRational" :>:
       Forall []
	 ([] :=>
	    (tFloat `fn` TAp tRatio tInteger)),
     "doubleToRational" :>:
       Forall []
	 ([] :=>
	    (tDouble `fn` TAp tRatio tInteger)),
     "const" :>:
       Forall [Star, Star]
	 ([] :=>
	    (TGen 0 `fn` TGen 1 `fn` TGen 0)),
     "asTypeOf" :>:
       Forall [Star]
	 ([] :=>
	    (TGen 0 `fn` TGen 0 `fn` TGen 0)),
     "numerator" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TAp tRatio (TGen 0) `fn` TGen 0)),
     "denominator" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TAp tRatio (TGen 0) `fn` TGen 0)),
     "rationalToRealFloat" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tRatio tInteger `fn` TGen 0)),
     "rationalToFloat" :>:
       Forall []
	 ([] :=>
	    (TAp tRatio tInteger `fn` tFloat)),
     "rationalToDouble" :>:
       Forall []
	 ([] :=>
	    (TAp tRatio tInteger `fn` tDouble)),
     "floatProperFraction" :>:
       Forall [Star, Star, Star]
	 ([isIn1 cRealFloat (TGen 0), isIn1 cNum (TGen 1),
	   isIn1 cRealFloat (TGen 2)] :=>
	    (TGen 2 `fn` TAp (TAp tTuple2 (TGen 1)) (TGen 0))),
     "fst" :>:
       Forall [Star, Star]
	 ([] :=>
	    (TAp (TAp tTuple2 (TGen 0)) (TGen 1) `fn` TGen 0)),
     "snd" :>:
       Forall [Star, Star]
	 ([] :=>
	    (TAp (TAp tTuple2 (TGen 0)) (TGen 1) `fn` TGen 1)),
     "curry" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    ((TAp (TAp tTuple2 (TGen 0)) (TGen 1) `fn` TGen 2) `fn` TGen 0 `fn` TGen 1 `fn` TGen 2)),
     "uncurry" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 2) `fn` TAp (TAp tTuple2 (TGen 0)) (TGen 1) `fn` TGen 2)),
     "id" :>:
       Forall [Star]
	 ([] :=>
	    (TGen 0 `fn` TGen 0)),
     "$" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1) `fn` TGen 0 `fn` TGen 1)),
     "until" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` (TGen 0 `fn` TGen 0) `fn` TGen 0 `fn` TGen 0)),
     "undefined" :>:
       Forall [Star]
	 ([] :=>
	    (TGen 0)),
     "intToRatio" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (tInt `fn` TAp tRatio (TGen 0))),
     "doubleToRatio" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (tDouble `fn` TAp tRatio (TGen 0))),
     "approxRational" :>:
       Forall [Star]
	 ([isIn1 cRealFrac (TGen 0)] :=>
	    (TGen 0 `fn` TGen 0 `fn` TAp tRatio tInteger)),
     "head" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TGen 0)),
     "last" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TGen 0)),
     "tail" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "init" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "null" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` tBool)),
     "++" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "filter" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "concat" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TAp tList (TGen 0)) `fn` TAp tList (TGen 0))),
     "foldl'" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 0) `fn` TGen 0 `fn` TAp tList (TGen 1) `fn` TGen 0)),
     "length" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` tInt)),
     "!!" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` tInt `fn` TGen 0)),
     "foldl" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 0) `fn` TGen 0 `fn` TAp tList (TGen 1) `fn` TGen 0)),
     "foldl1" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 0 `fn` TGen 0) `fn` TAp tList (TGen 0) `fn` TGen 0)),
     "scanl" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 0) `fn` TGen 0 `fn` TAp tList (TGen 1) `fn` TAp tList (TGen 0))),
     "scanl1" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 0 `fn` TGen 0) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "foldr1" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 0 `fn` TGen 0) `fn` TAp tList (TGen 0) `fn` TGen 0)),
     "scanr" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 1) `fn` TGen 1 `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 1))),
     "scanr1" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 0 `fn` TGen 0) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "repeat" :>:
       Forall [Star]
	 ([] :=>
	    (TGen 0 `fn` TAp tList (TGen 0))),
     "take" :>:
       Forall [Star]
	 ([] :=>
	    (tInt `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "replicate" :>:
       Forall [Star]
	 ([] :=>
	    (tInt `fn` TGen 0 `fn` TAp tList (TGen 0))),
     "cycle" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "drop" :>:
       Forall [Star]
	 ([] :=>
	    (tInt `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "splitAt" :>:
       Forall [Star]
	 ([] :=>
	    (tInt `fn` TAp tList (TGen 0) `fn` TAp (TAp tTuple2 (TAp tList (TGen 0))) (TAp tList (TGen 0)))),
     "dropWhile" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "span" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` TAp (TAp tTuple2 (TAp tList (TGen 0))) (TAp tList (TGen 0)))),
     "break" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` TAp (TAp tTuple2 (TAp tList (TGen 0))) (TAp tList (TGen 0)))),
     "lines" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList (TAp tList tChar))),
     "words" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList (TAp tList tChar))),
     "concatMap" :>:
       Forall [Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TAp tList (TGen 1)) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 1))),
     "unlines" :>:
       Forall []
	 ([] :=>
	    (TAp tList (TAp tList tChar) `fn` TAp tList tChar)),
     "unwords" :>:
       Forall []
	 ([] :=>
	    (TAp tList (TAp tList tChar) `fn` TAp tList tChar)),
     "reverse" :>:
       Forall [Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 0))),
     "and" :>:
       Forall []
	 ([] :=>
	    (TAp tList tBool `fn` tBool)),
     "or" :>:
       Forall []
	 ([] :=>
	    (TAp tList tBool `fn` tBool)),
     "any" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` tBool)),
     "all" :>:
       Forall [Star]
	 ([] :=>
	    ((TGen 0 `fn` tBool) `fn` TAp tList (TGen 0) `fn` tBool)),
     "elem" :>:
       Forall [Star]
	 ([isIn1 cEq (TGen 0)] :=>
	    (TGen 0 `fn` TAp tList (TGen 0) `fn` tBool)),
     "notElem" :>:
       Forall [Star]
	 ([isIn1 cEq (TGen 0)] :=>
	    (TGen 0 `fn` TAp tList (TGen 0) `fn` tBool)),
     "lookup" :>:
       Forall [Star, Star]
	 ([isIn1 cEq (TGen 0)] :=>
	    (TGen 0 `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TGen 1)) `fn` TAp tMaybe (TGen 1))),
     "sum" :>:
       Forall [Star]
	 ([isIn1 cNum (TGen 0)] :=>
	    (TAp tList (TGen 0) `fn` TGen 0)),
     "product" :>:
       Forall [Star]
	 ([isIn1 cNum (TGen 0)] :=>
	    (TAp tList (TGen 0) `fn` TGen 0)),
     "maximum" :>:
       Forall [Star]
	 ([isIn1 cOrd (TGen 0)] :=>
	    (TAp tList (TGen 0) `fn` TGen 0)),
     "minimum" :>:
       Forall [Star]
	 ([isIn1 cOrd (TGen 0)] :=>
	    (TAp tList (TGen 0) `fn` TGen 0)),
     "zipWith" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 2) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 1) `fn` TAp tList (TGen 2))),
     "zip" :>:
       Forall [Star, Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 1) `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TGen 1)))),
     "zipWith3" :>:
       Forall [Star, Star, Star, Star]
	 ([] :=>
	    ((TGen 0 `fn` TGen 1 `fn` TGen 2 `fn` TGen 3) `fn` TAp tList (TGen 0) `fn` TAp tList (TGen 1) `fn` TAp tList (TGen 2) `fn` TAp tList (TGen 3))),
     "zip3" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 1) `fn` TAp tList (TGen 2) `fn` TAp tList (TAp (TAp (TAp tTuple3 (TGen 0)) (TGen 1)) (TGen 2)))),
     "unzip" :>:
       Forall [Star, Star]
	 ([] :=>
	    (TAp tList (TAp (TAp tTuple2 (TGen 0)) (TGen 1)) `fn` TAp (TAp tTuple2 (TAp tList (TGen 0))) (TAp tList (TGen 1)))),
     "unzip3" :>:
       Forall [Star, Star, Star]
	 ([] :=>
	    (TAp tList (TAp (TAp (TAp tTuple3 (TGen 0)) (TGen 1)) (TGen 2)) `fn` TAp (TAp (TAp tTuple3 (TAp tList (TGen 0))) (TAp tList (TGen 1))) (TAp tList (TGen 2)))),
     "reads" :>:
       Forall [Star]
	 ([isIn1 cRead (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "shows" :>:
       Forall [Star]
	 ([isIn1 cShow (TGen 0)] :=>
	    (TGen 0 `fn` TAp tList tChar `fn` TAp tList tChar)),
     "nonnull" :>:
       Forall []
	 ([] :=>
	    ((tChar `fn` tBool) `fn` TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TAp tList tChar)) (TAp tList tChar)))),
     "lexDigits" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TAp tList tChar)) (TAp tList tChar)))),
     "lexmatch" :>:
       Forall [Star]
	 ([isIn1 cEq (TGen 0)] :=>
	    (TAp tList (TGen 0) `fn` TAp tList (TGen 0) `fn` TAp (TAp tTuple2 (TAp tList (TGen 0))) (TAp tList (TGen 0)))),
     "asciiTab" :>:
       Forall []
	 ([] :=>
	    (TAp tList (TAp (TAp tTuple2 tChar) (TAp tList tChar)))),
     "lexLitChar" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TAp tList tChar)) (TAp tList tChar)))),
     "lex" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TAp tList tChar)) (TAp tList tChar)))),
     "read" :>:
       Forall [Star]
	 ([isIn1 cRead (TGen 0)] :=>
	    (TAp tList tChar `fn` TGen 0)),
     "showChar" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` TAp tList tChar `fn` TAp tList tChar)),
     "showString" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList tChar `fn` TAp tList tChar)),
     "showParen" :>:
       Forall []
	 ([] :=>
	    (tBool `fn` (TAp tList tChar `fn` TAp tList tChar) `fn` TAp tList tChar `fn` TAp tList tChar)),
     "showField" :>:
       Forall [Star]
	 ([isIn1 cShow (TGen 0)] :=>
	    (TAp tList tChar `fn` TGen 0 `fn` TAp tList tChar `fn` TAp tList tChar)),
     "readParen" :>:
       Forall [Star]
	 ([] :=>
	    (tBool `fn` (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar))) `fn` TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "readField" :>:
       Forall [Star]
	 ([isIn1 cRead (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "isOctDigit" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "isHexDigit" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` tBool)),
     "readInt" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TGen 0 `fn` (tChar `fn` tBool) `fn` (tChar `fn` tInt) `fn` TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "readHex" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "readOct" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "readDec" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "readLitChar" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 tChar) (TAp tList tChar)))),
     "protectEsc" :>:
       Forall [Star]
	 ([] :=>
	    ((tChar `fn` tBool) `fn` (TAp tList tChar `fn` TGen 0) `fn` TAp tList tChar `fn` TGen 0)),
     "showLitChar" :>:
       Forall []
	 ([] :=>
	    (tChar `fn` TAp tList tChar `fn` TAp tList tChar)),
     "showInt" :>:
       Forall [Star]
	 ([isIn1 cIntegral (TGen 0)] :=>
	    (TGen 0 `fn` TAp tList tChar `fn` TAp tList tChar)),
     "readSigned" :>:
       Forall [Star]
	 ([isIn1 cReal (TGen 0)] :=>
	    ((TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar))) `fn` TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "showSigned" :>:
       Forall [Star]
	 ([isIn1 cReal (TGen 0)] :=>
	    ((TGen 0 `fn` TAp tList tChar `fn` TAp tList tChar) `fn` tInt `fn` TGen 0 `fn` TAp tList tChar `fn` TAp tList tChar)),
     "readFloat" :>:
       Forall [Star]
	 ([isIn1 cRealFloat (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tList (TAp (TAp tTuple2 (TGen 0)) (TAp tList tChar)))),
     "putStrLn" :>:
       Forall []
	 ([] :=>
	    (TAp tList tChar `fn` TAp tIO tUnit)),
     "print" :>:
       Forall [Star]
	 ([isIn1 cShow (TGen 0)] :=>
	    (TGen 0 `fn` TAp tIO tUnit)),
     "getLine" :>:
       Forall []
	 ([] :=>
	    (TAp tIO (TAp tList tChar))),
     "readIO" :>:
       Forall [Star]
	 ([isIn1 cRead (TGen 0)] :=>
	    (TAp tList tChar `fn` TAp tIO (TGen 0))),
     "readLn" :>:
       Forall [Star]
	 ([isIn1 cRead (TGen 0)] :=>
	    (TAp tIO (TGen 0))),
     "interact" :>:
       Forall []
	 ([] :=>
	    ((TAp tList tChar `fn` TAp tList tChar) `fn` TAp tIO tUnit))]