1/* 2% ============================================= 3% File 'mpred_builtin.pfc' 4% Purpose: Agent Reactivity for SWI-Prolog 5% Maintainer: Douglas Miles 6% Contact: $Author: dmiles $@users.sourceforge.net ; 7% Version: 'interface' 1.0.0 8% Revision: $Revision: 1.9 $ 9% Revised At: $Date: 2002/06/27 14:13:20 $ 10% ============================================= 11% 12% PFC is a language extension for prolog.. there is so much that can be done in this language extension to Prolog 13% 14% 15% props(Obj,[height(ObjHt)]) == t(height,Obj,ObjHt) == rdf(Obj,height,ObjHt) == t(height(Obj,ObjHt)). 16% padd(Obj,[height(ObjHt)]) == prop_set(height,Obj,ObjHt,...) == ain(height(Obj,ObjHt)) 17% [pdel/pclr](Obj,[height(ObjHt)]) == [del/clr](height,Obj,ObjHt) == [del/clr]svo(Obj,height,ObjHt) == [del/clr](height(Obj,ObjHt)) 18% keraseall(AnyTerm). 19% 20% ANTECEEDANT CONSEQUENT 21% 22% P = test nesc true assert(P),retract(~P) , enable(P). 23% ~ P = test nesc false assert(~P),retract(P), disable(P) 24% 25% ~ ~(P) = test possible (via not impossible) retract( ~(P)), enable(P). 26% \+ ~(P) = test impossiblity is unknown retract( ~(P)) 27% ~ \+(P) = same as P same as P 28% \+(P) = test naf(P) retract(P) 29% 30% Dec 13, 2035 31% Douglas Miles 32*/ 33 34 35:- sanity(is_pfc_file). 36 37 38:- mpred_unload_file. 39 40:- file_begin(pfc). 41 42:- sanity(is_pfc_file). 43 44:- set_fileAssertMt(baseKB). 45% ensure this file does not get unloaded with mpred_reset 46:- prolog_load_context(file,F), ain(mpred_unload_option(F,never)). 47 48meta_argtypes(mdefault(ftAssertable)). 49 50% BWD chaining 51mdefault((Q <- P))/mpred_literal(Q) ==> (Q <-(P, \+ ~(Q))). 52 53% FWD chaining 54mdefault(P==>Q)/nonvar(Q) ==> (((P ==> mdefault(Q)))). 55 56% NEG chaining 57mdefault(~Q)/mpred_positive_fact(Q) ==> (( \+ Q ) ==> ~ Q ). 58 59 60% POS chaining 1 (Neg Trigger) 61mdefault(Q)/(mpred_positive_fact(Q),if_missing_mask(Q,R,Test)) ==> ( ( ( \+R /(ground(R),Test), (\+ ~Q )) ==> Q )). 62 63% POS chaining 2 (Pos Trigger) 64mdefault(Q)/(mpred_positive_fact(Q),if_missing_mask(Q,R,Test)) ==> ( ((R/(ground(R), Test, \+(R=Q))) ==> (\+ Q))). 65 66 67% mdefault(Q) ==> if_missing(Q,Q). 68%(mdefault(P=>Q)/(mpred_literal_nv(Q),if_missing_mask(Q,R,Test))) ==> ((P, \+ R/Test) => Q). 69%(mdefault(P=>Q)/nonvar(Q)) ==> (P => mdefault(Q)). 70 71%:- listing(baseKB:mdefault/1). 72%:- listing(( (==>) /2)). 73 74:- if(baseKB:startup_option(datalog,sanity);baseKB:startup_option(clif,sanity)). 75 76% :- reconsult(pack(logicmoo_base/t/examples/pfc/'sanity_birdt.pfc')). 77 78:- endif.