Static Type Check

Gently performs a couple of static semantics checks and static type checks. Gently exits with appropriate error messages if one or more of the following errors occure.