Text this: Residuation and guarded rules for constraint logic programming /