solver now recurses on compound constraints