ensures that the translation of compiled code makes sense in a meaningful way
the stage in compilation where the compiler checks for logical errors.
where a parse tree is transformed into a set of (usually logical) statements about the world