Type Inference is the process of searching for a mapping from expressions to types, such that the Typing Rules are satisfied.
The two steps of type inference are: 1. Gathering constraints (or Fact Extraction) while traversing the AST. This process generates equality constraints between types. 2. Solving these constraints using Unification.
Polymorphic Type Inference requires additional steps.