trust_limit(toys,20).
trust_limit(cars,38).
trust_limit(gasoline,40).

company(violet,toys,8).
company(hyacinth,toys,7).
company(opel,cars,33).
company(orchid,toys,13).
company(gardenia,toys,0).
company(tulip,toys,12).
company(ford,cars,30).
company(daisy,toys,8).
company(iris,toys,12).
company(lily,toys,2).
company(rose,toys,4).
company(azalea,toys,19).
company(begonia,toys,15).
company(fiat,cars,35).

has_shares(violet,hyacinth,51).
has_shares(violet,orchid,20).
has_shares(violet,gardenia,30).
has_shares(violet,lily,51).
has_shares(hyacinth,daisy,30).
has_shares(hyacinth,iris,70).
has_shares(gardenia,orchid,51).
has_shares(gardenia,tulip,60).
has_shares(fiat,opel,2).
has_shares(lily,rose,59).
has_shares(tulip,azalea,20).
has_shares(tulip,begonia,25).
has_shares(begonia,azalea,60).

controlled(Comp2,Comp1) :- has_shares(Comp1,Comp2,N), N > 50.

market(Comp1,Mrkt,Total) :- company(Comp1,Mrkt,Quota),
                            findall(Comp2,controlled(Comp2,Comp1),L),
                            inquire(L,Mrkt,Quota,Total).

inquire([],_,Quota,Quota).
inquire([H|T],Mrkt,Quota,Total) :- market(H,Mrkt,Quota2),
                                   Quota3 is Quota + Quota2, 
                                   inquire(T,Mrkt,Quota3,Total).

find_trust(Mrkt,Comp,Total) :- trust_limit(Mrkt,Threshold),
                               market(Comp,Mrkt,Total),
                               Total > Threshold.