Type Inference and Simplification for Recursively Constrained Types