Definite assignment and type checking