/*infer*/ /*LOGO type inference package Alan Bundy 16.11.79*/ /*infer fact by backwards inference*/ infer(Goal) :- infer(Goal,now). infer(Goal,Sit) :- fact(Goal,Sit). infer(Goal,Sit) :- backward_rule(Ant,Goal), infer(Ant,Sit). infer(Goal1&Goal2,Sit) :- infer(Goal1,Sit), infer(Goal2,Sit). /*assert fact and trigger forwards inference*/ assert_fact(Fact) :- assert_fact(Fact,now). assert_fact(Fact,Sit) :- assert(fact(Fact,Sit)), writef('asserting %t in situation %t\n',[Fact,Sit]), forall(forward_rule(Fact,New),assert_fact(New,Sit)).