Use implication constraints to improve type inference