Uncovering the Unknown: Principles of Type Inference