vvalue
checkProgram :: (Ord ann, HasUnique name TermUnique, HasUnique tyname TypeUnique, MonadError (UniqueError ann) m)=> UniqueError ann -> Bool-> Program tyname name uni fun ann-> m ()