Practical refinement-type checking