| OCR Text |
Show procedure nextSolution( PlanSet ) ; begin scalar RootObjecta, SuspectConstraints ; if PlanSet->PhaseStack or PlanSet->PendinqPlanList or PlanSet->CurrentPlan then ahiftPreviousPlan( PlanSet ) ; if PlanSet->CurrentPlan then ( u.ndoCurrentP lan ( P lanSet ) ; PlanSet->OndoPlan := ezecuteSolution ( PlanSet->CurrentPlan elae if PlanSet->PhaseStack then ( if not( nextNewSolution( PlanSet nil, nil ) ) then topoloqicalEval( nil, RootObjecta ) else undoCUrrentP1an( P1anSet ); topologicalEval( ni1, RootObjects end; procedure ahiftPreviousP1an( P1anSet ); ( ) ; if PlanSet->CurrentPlan then push( PlanSet->CurrentP1an, PlanSet->PreviousPlanList else puah( collectSatisfactionPlan( PlanSet ), PlanSet->PreviousPlanList ); if PlanSet->PendingPlanList then PlanSet->CurrentPlan := pop ( P lanSet ->PendingP lanList procedure collectSatiafactionPlan( PlanSet ); for each PhaseRecord in PlanSet->PhaseStack collect cons ( PhaaeRecord->Groupid, PhaaeRecord->SatisfactionPlan ); n |