% % Bill of Material problem % % psb(P1, P2, QT) denotes that P1 contains P2 in quantiy QT. % basic(P, Price) denotes elmentary parts purchasable for a % price. %% database( { psb(P1:string, P2:string, QT:integer), basic(P:string, C:integer), prolfc(P:string, C:integer) } ). %% export part_cost(P,S,C). export prolfc($P,C). %% part_cost(Part, 0, Cost)<-basic(Part,Cost). part_cost(Part, mcount, msum)<- part_cost(Sb, ChC, Cst), prolfc(Sb, ChC), psb(Part, Sb, Mult), MCost = Cst * Mult. %prolfc(P1,0)<-basic(P1,_). %prolfc(P1,count)<-psb(P1,P2,_). single(mcount, X, 1). multi(mcount, X, Old, New) <- New=Old+1. return(mcount, X, Old, New) <- if (Old =nil then New=1 else New=Old+1). single(msum, X, X). multi(msum, X, Old, S) <- S=X+Old. return(msum, X, Old, S) <- if (Old=nil then S=X else S=X+Old).