on(o1,o2). isa(o1,box). isa(o2,table). isa(o3,box). colour(o1,red). colour(o2,blue). volume(o1,1). volume(o3,6). density(o1,2). density(o3,2). safe_to_stack(X,Y) :- lighter(X,Y). weight(O,W) :- volume(O,V), density(O,D), W is V * D. lighter(O1,O2) :- weight(O1,W1), weight(O2,W2), W1 < W2. weight(O,5) :- isa(O,table).