A Metalanguage for Representation and Control in Assumption-based Problem Solvers