If we view a type of an expression or variable as the set of possible values it can resolve to, narrowing is the process of applying constraints on those values.

If we view a type of an expression or variable as the set of possible values it can resolve to, narrowing is the process of applying constraints on those values.