/****************************/ /* plug-in architecture */ /* of HCLP interpreter */ /* -----plug-in module----- */ /* UCB comparator component */ /* (c) R. Bart‡k */ /* 1996 */ /****************************/ % this module implements a unsatisfied-count-better comparator for % general hierarchy solver (GHSmod.pr) % it is a plug-in module of plug-in architecture for HCLP % to get a complete comparator module, you need to define procedures % solve_constr, solve_constr_list (in FCSmod.pr) solve_level(Cs,PartAnsws,NewAnsws):- pre_solve_level(Cs,PartAnsws,[],NewAnsws,0,0,_). pre_solve_level([C|Cs],PartAnsws,OldAnsws,NewAnsws,CurrSat,CurrMax,NewMax):- differ_answs(C,PartAnsws,PartSatAnsws,_), NewSat is CurrSat +1, pre_solve_level(Cs,PartSatAnsws,OldAnsws,PreAnsws,NewSat,CurrMax,PreMax), pre_solve_level(Cs,PartAnsws,PreAnsws,NewAnsws,CurrSat,PreMax,NewMax). pre_solve_level([],[],OldAnsws,OldAnsws,_,OldMax,OldMax):-!. pre_solve_level([],CurrAnsws,OldAnsws,NewAnsws,CurrMax,OldMax,CurrMax):- CurrMax=OldMax, append(CurrAnsws,OldAnsws,NewAnsws),!. pre_solve_level([],CurrAnsws,_,CurrAnsws,CurrMax,OldMax,CurrMax):- CurrAnsws\=[], CurrMax>OldMax,!. pre_solve_level([],_,OldAnsws,OldAnsws,CurrMax,OldMax,OldMax):- CurrMax