Rules For Type Checking In Compiler Design