Propose-and-revise is a problem-solving strategy for configuration design tasks. A configuration problem is described as a set of parameters or variables (input parameters have values, output parameters do not), a set of constraints, and a set of fixes to resolve constraint violations. A solution consists of a value assignment to the output parameters that does not violate any constraint.
Propose-and-revise constructs a solution by iteratively extending and revising partial solutions. The extension phase consists of assigning values to parameters. In the revision phase, constraints are checked to verify whether they are violated by the current solution and, if so, the solution is revised to resolve the violation. Violated constraints are resolved by applying fixes to the solution. A fix produces a revision of the solution by changing the value of one of the parameters that are causing the constraint violation.
Propose-and-revise was first defined as a problem-solving method for configuration in VT [Marcus et al., 1988] for designing elevator systems. Input parameters for VT included features of the building where the elevator was to be installed. Output parameters included the equipment selected and its layout in the hoistway. An example of a constraint is that a model 18 machine can only be used with a 15, 20, or 25 horsepower motor. An example of a fix for a violation of this constraint is to upgrade the motor if the current configuration was using one without enough horsepower.