/* ==================================================== */
/* Postdiction from C&McD's Intro to AI		        */
/* Coded by Karl Schwamb                                */
/* January 1988                                         */
/* ==================================================== */

/*  Assumable predicates ...				*/

/* assumable(true_in_situation(_,_)). */
assumable(true_in_situation(Situation,positive(ambtemp)),
          true_in_situation(GeneralSituation,GeneralStatement)).

/*  Domain Theory					*/

occur(Situation,melt(Object1)) :-
   inst(Object1,icecube),
   true_in_situation(Situation,outside(Object1)),
   true_in_situation(Situation,positive(ambtemp)).

true_in_situation(result(Situation,melt(Object1)),wet(Object2)) :-
   inst(Object1,icecube),
   true_in_situation(Situation,on(Object1,Object2)),
   occur(Situation,melt(Object1)).

/*  Example						*/

inst(situation1,situation).
inst(situation2,situation).
inst(icecube1,  icecube).
inst(bowl1,     bowl).
true_in_situation(situation1,on(icecube1,bowl1)).
true_in_situation(situation1,outside(icecube1)).


/* Starting Query. */
query :-
  explain_and_learn(true_in_situation(Z,wet(bowl1)),
		    true_in_situation(X,wet(Y))).


