
% Facts which are not disputable are declared as heads of 'top'

rule(top).

rule(r11). 
rule(r12). 
rule(r13). 

rule(r21).
rule(r22).
rule(r23).
rule(r24).
rule(r25).
rule(r26).
rule(r27).
rule(r28).
rule(r29).

rule(r31).
rule(r32).
rule(r33).
rule(r34).
rule(r35).
rule(r36).
rule(r37).
rule(r38).
rule(r39).

rule(r41).
rule(r42).
rule(r43).
rule(r44).
rule(r45).
rule(r46).
rule(r47).
rule(r48).
rule(r49).

rule(r51).
rule(r52).
rule(r53).
rule(r54).
rule(r55).
rule(r56).
rule(r57).
rule(r58).
rule(r59).

head(expensive_C,top). 
head(safe_C,top).
head(safe_V,top).
head(nice_P,top).
head(fast_P,top). 


head(neg_buy_C,r11). nbl(buy_C,r11). pbl(expensive_C,r11).  
head(neg_buy_V,r12). nbl(buy_V,r12). pbl(expensive_V,r12).  
head(neg_buy_P,r13). nbl(buy_P,r13). pbl(expensive_P,r13).  

head(buy_C,r21). nbl(neg_buy_C,r21). pbl(safe_C,r21).  
head(buy_V,r22). nbl(neg_buy_V,r22). pbl(safe_V,r22).  
head(buy_P,r23). nbl(neg_buy_P,r23). pbl(safe_P,r23).  

head(neg_buy_C,r24). pbl(buy_V,r24). pbl(safe_V,r24).  
head(neg_buy_C,r27). pbl(buy_P,r27). pbl(safe_P,r27).  
head(neg_buy_V,r25). pbl(buy_P,r25). pbl(safe_P,r25).  
head(neg_buy_V,r28). pbl(buy_C,r28). pbl(safe_C,r28).  
head(neg_buy_P,r26). pbl(buy_C,r26). pbl(safe_C,r26).  
head(neg_buy_P,r29). pbl(buy_V,r29). pbl(safe_V,r29).  


head(buy_C,r31). nbl(neg_buy_C,r31). pbl(nice_C,r31).  
head(buy_V,r32). nbl(neg_buy_V,r32). pbl(nice_V,r32).  
head(buy_P,r33). nbl(neg_buy_P,r33). pbl(nice_P,r33).  

head(neg_buy_C,r34). pbl(buy_V,r34). pbl(nice_V,r34).  
head(neg_buy_C,r37). pbl(buy_P,r37). pbl(nice_P,r37).  
head(neg_buy_V,r35). pbl(buy_P,r35). pbl(nice_P,r35).  
head(neg_buy_V,r38). pbl(buy_C,r38). pbl(nice_C,r38).  
head(neg_buy_P,r36). pbl(buy_C,r36). pbl(nice_C,r36).  
head(neg_buy_P,r39). pbl(buy_V,r39). pbl(nice_V,r39).  

head(buy_C,r41). nbl(neg_buy_C,r41). pbl(fast_C,r41).  
head(buy_V,r42). nbl(neg_buy_V,r42). pbl(fast_V,r42).  
head(buy_P,r43). nbl(neg_buy_P,r43). pbl(fast_P,r43).  

head(neg_buy_C,r44). pbl(buy_V,r44). pbl(fast_V,r44).  
head(neg_buy_C,r47). pbl(buy_P,r47). pbl(fast_P,r47).  
head(neg_buy_P,r46). pbl(buy_C,r46). pbl(fast_C,r46).  
head(neg_buy_P,r49). pbl(buy_V,r49). pbl(fast_V,r49).  
head(neg_buy_V,r45). pbl(buy_P,r45). pbl(fast_P,r45).  
head(neg_buy_V,r48). pbl(buy_C,r48). pbl(fast_C,r48).  

head(buy_C,r51). nbl(neg_buy_C,r51). nbl(neg_safe_C,r51). pbl(nice_C,r51).   pbl(fast_C,r51).  
head(buy_P,r52). nbl(neg_buy_P,r52). nbl(neg_safe_P,r52). pbl(nice_P,r52).   pbl(fast_P,r52).  
head(buy_V,r53). nbl(neg_buy_V,r53). nbl(neg_safe_V,r53). pbl(nice_V,r53).   pbl(fast_V,r53).  

head(neg_buy_C,r54). pbl(buy_P,r54). nbl(neg_safe_P,r54). pbl(nice_P,r54).   pbl(fast_P,r54).  
head(neg_buy_P,r55). nbl(buy_V,r55). nbl(neg_safe_V,r55). pbl(nice_V,r55).   pbl(fast_V,r55).  
head(neg_buy_V,r56). nbl(buy_C,r56). nbl(neg_safe_C,r56). pbl(nice_C,r56).   pbl(fast_C,r56).  


head(neg_buy_V,r57). pbl(buy_P,r57). nbl(neg_safe_P,r57). pbl(nice_P,r57).   pbl(fast_P,r57).  
head(neg_buy_C,r58). nbl(buy_V,r58). nbl(neg_safe_V,r58). pbl(nice_V,r58).   pbl(fast_V,r58).  
head(neg_buy_P,r59). nbl(buy_C,r59). nbl(neg_safe_C,r59). pbl(nice_C,r59).   pbl(fast_C,r59).  


compl(buy_C,neg_buy_C). 
compl(buy_V,neg_buy_V). 
compl(buy_P,neg_buy_P). 


% define preferences 

level(0,top).

level(1,r11). 
level(1,r12). 
level(1,r13). 

level(2,r21).
level(2,r22).
level(2,r23).
level(2,r24).
level(2,r25).
level(2,r26).
level(2,r27).
level(2,r28).
level(2,r29).

level(3,r31).
level(3,r32).
level(3,r33).
level(3,r34).
level(3,r35).
level(3,r36).
level(3,r37).
level(3,r38).
level(3,r39).

level(4,r41).
level(4,r42).
level(4,r43).
level(4,r44).
level(4,r45).
level(4,r46).
level(4,r47).
level(4,r48).
level(4,r49).

level(1,r51).
level(1,r52).
level(1,r53).
level(1,r54).
level(1,r55).
level(1,r56).
level(1,r57).
level(1,r58).
level(1,r59).

kl(0,1). kl(1,2). kl(2,3). kl(3,4). 

pr(X,Y) :- kl(L1,L2), level(L1,X),level(L2,Y).

