/* ======================================================== */
/* Authors: From Mitchell, Keller, & Kedar-Cabelli (1986)   */
/* ======================================================== */

/* Goal Concept */
cup(Cup) :- liftable(Cup), stable(Cup), open_vessel(Cup).

/* Training Example */
owner(object1,edgar).
part_of(concavity1,object1).
concavity(concavity1).
upward_pointing(concavity1).
light(object1).
part_of(handle1,object1).
handle(handle1).
part_of(flatbottom1,object1).
bottom(flatbottom1).
flat(flatbottom1).

/* Domain Theory */
liftable(Object) :- 
   light(Object), 
   part_of(Handle,Object),
   handle(Handle).

stable(Object) :-
   part_of(FlatBottom,Object),
   bottom(FlatBottom),
   flat(FlatBottom).

open_vessel(Object) :-
   part_of(Concavity,Object),
   concavity(Concavity),
   upward_pointing(Concavity).   
   
/* Query */
query :- explain_and_store(cup(object1),cup(X)).