definition module sem
+import qualified Data.Map as Map
from Data.Either import :: Either
-from AST import :: AST
-from lex import :: Error
+from AST import :: AST, :: Pos, :: Type, :: FieldSelector, :: Op2
+from StdOverloaded import class toString
-semanticAnalysis :: AST -> Either String AST
+:: SemError
+:: Gamma
+:: SemOutput :== Either [SemError] (AST, Gamma)
+:: Constraints :== [(Type, Type)]
+
+instance toString SemError
+instance toString Gamma
+
+sem :: AST -> Either [SemError] AST