% a way to find the minimum cost of car insurance % minimum(+Company, +Cost): Cost is minimum over all insurance(Company, Cost) :-dynamic(mini/2). % mini(C,V) asserts the minimum so far is C,S. minimum(C,V):-insurance(C0,V0),asserta(mini(C0,V0)), !, minimumrest(C,V). minimumrest(_,_):-insurance(C1,V1), retract(mini(C0,V0)), ( V1 < V0 , asserta(mini(C1,V1)) ; V1 >=V0 , asserta(mini(C0,V0)) ), fail. minimumrest(C,V):-retract(mini(C,V)). insurance('AAA', 900). insurance('GEICO', 800). insurance('MobCo', 1000). :-write('example: minimum(Company,Cost).').