1%:- module(system_base_lite,[]). 2:- set_module(class(development)). 3%:- mpred_unload_file. 4%:- '$set_source_module'(baseKB). 5%:- ensure_abox(baseKB). 6:- baseKB:export(baseKB:never_assert_u/1). 7:- baseKB:export(baseKB:never_assert_u/2). 8:- rdf_rewrite:import(baseKB:never_assert_u/1). 9:- rdf_rewrite:import(baseKB:never_assert_u/2). 10%:- use_module(library(rtrace)). 11:- dynamic(prologHybrid/1). 12:- pfc_lib:use_module(library(pfc_lib)). 13:- use_module(library(ctypes)). 14 15:- set_fileAssertMt(baseKB). 16%:- add_import_module(baseKB,pfc_lib,end). 17:- fix_baseKB_imports. 18%:- use_module(library(no_repeats)). 19%:- use_module(library(dictoo)). 20% ensure this file does not get unloaded with mpred_reset
57:- use_module(library(pfc_test)). 58 59:- set_prolog_flag(runtime_debug, 1). % 2 = important but dont sacrifice other features for it 60 61:- if((current_prolog_flag(runtime_debug,D),D>1)). 62:- endif. 63%:- '$def_modules'([clause_expansion/2],O),dmsg_pretty('$def_modules'([clause_expansion/2],O)),nl. 64 65:- sanity(is_pfc_file). 66 67:- dynamic(pfcSanityA/0). 68:- dynamic(pfcSanityB/0). 69 70%:- trace. 71pfcSanityA ==> pfcSanityB. 72%:- \+ clause(pfcSanityB,true). 73pfcSanityA. 74%:- listing(pfcSanityA). 75%:- listing(pfcSanityB). 76:- clause(pfcSanityB,true). 77% :- kb_shared( ('~') /1). 78:- kb_shared(mtExact/1). 79% :- kb_shared(arity/2). 80:- kb_shared(col_as_unary/1). % never used for arg2 of isa/2 81:- kb_shared(comment/2). 82:- kb_shared(feature_setting/2). 83:- kb_shared(hybrid_support/2). 84:- kb_shared(never_assert_u/1). 85:- kb_shared(never_assert_u/2). 86:- kb_shared(never_retract_u/1). 87:- kb_shared(never_retract_u/2). 88:- kb_shared(predicateConventionMt/2). 89:- kb_shared(startup_option/2). 90:- kb_shared(tooSlow/0). 91:- kb_shared(ttRelationType/1). 92:- kb_shared(singleValuedInArg/2). 93%:- kb_shared(singleValuedInArgAX/3). 94:- kb_shared(functorIsMacro/1). 95:- kb_shared(support_hilog/2). 96:- kb_shared(mpred_undo_sys/3). 97:- kb_shared(genlPreds/2). 98 99 100 101:- kb_shared(alwaysGaf/1). 102 103:- kb_shared(rtReformulatorDirectivePredicate/1). 104:- kb_global(rtArgsVerbatum/1). 105:- kb_shared(rtAvoidForwardChain/1). 106 107:- kb_shared(pfcControlled/1). 108:- kb_shared(prologHybrid/1). 109:- kb_shared(prologOnly/1). 110:- kb_shared(quasiQuote/1). 111 112 113% :- forall(between(1,11,A),kb_shared(t/A)). 114 115/* 116:- meta_predicate t(*,?). 117:- meta_predicate t(*,?,?). 118:- meta_predicate t(*,?,?,?). 119:- meta_predicate t(*,?,?,?,?). 120:- meta_predicate t(*,?,?,?,?,?). 121:- meta_predicate t(*,?,?,?,?,?,?). 122:- meta_predicate t(*,?,?,?,?,?,?,?). 123*/ 124 125% =================================================================== 126% Microtheory System 127% =================================================================== 128 129:- kb_global(baseKB:mtHybrid/1). 130:- kb_global(baseKB:mtProlog/1). 131:- kb_global(baseKB:genlMt/2). 132 133:- kb_global(baseKB:mtNotInherits/1). 134:- kb_global(baseKB:mtInherits/1). 135 136 137%((ttTypeType(TT),abox:isa(T,TT))==>tSet(T)). 138%tSet(T)==>functorDeclares(T). 139:- kb_shared(functorDeclares/1). 140:- kb_shared(mtNonAssertable/1). 141:- kb_shared(prologBuiltin/1). 142:- kb_shared(predicateConventionMt/2). 143% :- kb_shared(genlMt/2). 144:- kb_shared(do_import_modules/0). 145 146:- baseKB:export(baseKB:ttRelationType/1). 147:- rtrace:import(baseKB:ttRelationType/1). 148:- baseKB:export(baseKB:prologOrdered/1). 149:- rtrace:import(baseKB:prologOrdered/1). 150((mtHybrid(C)/(C\=baseKB)) ==> genlMt(C,baseKB),{ensure_abox(C),(C==user->dmsg_pretty(warn(mtHybrid(C)));true)}). 151 152:- wdmsg(loading_system_base()). 153 154predicateTriggerType(kb_local). 155predicateTriggerType(kb_shared). 156predicateTriggerType(kb_global). 157predicateTriggerType(kbi_define). 158 159% TODO make these undoable 160:- if((current_predicate(predicate_m_f_a_decl/4))). 161(genlMt(C,M)/(C\=baseKB)) ==> {doall(((predicate_m_f_a_decl(M,F,A,Type)), 162 ain(baseKB:mpred_prop(M,F,A,Type))))}. 163 164predicateTriggerType(Type) ==> 165(( mpred_prop(M,F,A,Type),genlMt(C,M)/(C\=baseKB)) ==> { 166 ( nop(dmsg_pretty(C:call(Type,C:F/A))), 167 show_failure(on_x_fail(C:call(Type,C:F/A))))}). 168 169 170:- else. 171 172:- break. 173(genlMt(C,P)/(C\=baseKB)) ==> {doall(((pred_decl_kb_mfa_type(P,F,A,Type)),C:call(Type,C:F/A)))}. 174:- endif. 175 176(genlMt(C,P)/(is_ftNonvar(C),is_ftNonvar(P),P\==baseKB,(mtProlog(C);mtProlog(P))) ==> {P\==user,catch(nop(add_import_module(C,P,end)),error(_,_),dmsg_pretty(error(add_import_module(C,P,end))))}). 177 178%(do_import_modules,genlMt(C,P),mtHybrid(C),mtProlog(P)) ==> {catch(add_import_module(C,P,end),error(_,_),dmsg_pretty(error(add_import_module(C,P,end))))}. 179%(do_import_modules,genlMt(C,P),mtProlog(C),mtHybrid(P)) ==> {catch(add_import_module(C,P,end),error(_,_),dmsg_pretty(error(add_import_module(C,P,end))))}. 180%((mtHybrid(C),{is_ftNonvar(C)},{ensure_abox(C)}, \+ mtProlog(C)) <==> (genlMt(C,baseKB),{is_ftNonvar(C)}, \+ mtProlog(C))). 181 182% 183%mtProlog(C) ==> {decl_assertable_module(C)}. % , \+ mtHybrid(C). 184%(predicateConventionMt(F,MT),arity(F,A))==>{(MT==baseKB;mtProlog(MT))->kb_shared(MT:F/A);kb_shared(MT:F/A)}. 185% :- break. 186% predicateConventionMt(predicateConventionMt,baseKB). 187predicateConventionMt(genlMt,baseKB). 188predicateConventionMt(mtHybrid,baseKB). 189predicateConventionMt(mtProlog,baseKB). 190 191% predicateConventionMt(mtNonAssertable,baseKB). 192(predicateConventionMt(F,MT),arity(F,A))==>{kb_global(MT:F/A)}. 193 194 195 196ttTypeType(ttTypeType). 197ttTypeType(ttRelationType). 198ttTypeType(TT)==>functorDeclares(TT). 199 200==>ttTypeType(ttModuleType,mudToCyc('MicrotheoryType')). 201typeGenls(ttModuleType,tMicrotheory). 202==>ttModuleType(tSourceCode,mudToCyc('tComputerCode'),comment("Source code files containing callable features")). 203==>ttModuleType(tSourceData,mudToCyc('iboPropositionalInformationThing'),comment("Source data files containing world state information")). 204 205ttRelationType(RT)==> { decl_rt(RT) },functorDeclares(RT). 206% ttRelationType(RT)==>predicateConventionMt(RT,baseKB). 207 208functorDeclares(RT)==> % {kb_shared(RT/1)}, 209 arityMax(RT,1), % prologHybrid(RT), 210 functorIsMacro(RT). 211 212% ttRelationType(RT) ==> ( ~genlPreds(RT,tFunction) <==> genlPreds(RT,tPred)). 213 214:- kb_shared(baseKB:compilerDirective/1). 215functorDeclares(compilerDirective). 216%compilerDirective(F)==>{kb_global(F/0)}. 217compilerDirective(F)==>{kb_shared(F/0)}. 218 219==> compilerDirective(hardCodedExpansion,comment("Is Already Implemented From Code")). 220==> compilerDirective(codeTooSlow,comment("A faster more incomplete version is filling in for it")). 221==> compilerDirective(pfc_checking,comment("Checks for common Pfc Errors")). 222==> compilerDirective(pass2,comment("Probably not needed at first")). 223==> compilerDirective(tooSlow,comment("Slow and Probably not needed at first")). 224==> compilerDirective(redundantMaybe,comment("Probably redundant")). 225==> compilerDirective(isRedundant,comment("Redundant")). 226==> compilerDirective(isRuntime,comment("Only use rule/fact at runtime")). 227 228 229:- forall(member(PredType,[ 230 prologBuiltin, 231 prologDynamic, 232 prologHybrid, 233 singleValuedHybrid, 234 235 prologKIF, 236 prologPTTP, 237 pfcMustFC, 238 239 prologListValued, 240 prologMultiValued, 241 prologSingleValued, 242 prologOrdered, 243 244 prologEquality, 245 246 rtArgsVerbatum, 247 prologSideEffects, 248 rtNotForUnboundPredicates, 249 rtAvoidForwardChain, 250 rtSymmetricBinaryPredicate, 251 predCanHaveSingletons, 252 pfcControlled, % pfc decides when to forward and backchain this pred 253/* 254 255 pfcWatches, % pfc needs to know about new assertions 256 pfcCreates, % pfc asserts 257 258 pfcCallCode, % called as prolog 259 260 pfcNegTrigger, 261 pfcPosTrigger, 262 pfcBcTrigger, 263 pfcRHS, 264 pfcLHS, 265*/ 266 prologNegByFailure, 267 prologIsFlag, 268 tFunction 269 ]),ain(ttRelationType(PredType))). 270 271 272 273%:- listing(ttRelationType/1). 274 275:- kb_shared(do_and_undo/2). 276:- kb_shared(tFunction/1). 277 278do_and_undo(A,U):-cwc,atom(A),atom_concat('assert',Suffix,A),!,atom_concat('delete',Suffix,U),current_predicate(U/_). 279do_and_undo(A,U):-cwc,atom(A),atom_concat('def',_,A),atom_concat('un',A,U),current_predicate(U/_). 280do_and_undo(A,U):-cwc,strip_module(A,M,P),compound(P),P=..[F|ARGS],lookup_u(do_and_undo(F,UF)),UA=..[UF|ARGS], U = (M:UA). 281ll:- cwc,call(listing,[isa/2,mtHybrid/1,col_as_unary/1, tRRP2/1,tRR/1,tRRP/1]). % ttTypeType, 282 283:- is_pfc_file. 284 285:- ain(arity(arity,2)). 286:- ain(arity(do_and_undo,2)). 287%:- rtrace. 288%:- trace. 289arity(functorIsMacro,1). 290%:- break. 291functorIsMacro(functorIsMacro). 292 293((prologHybrid(F),arity(F,A))==>{kb_shared(F/A)}). 294 295:- sanity(ttRelationType(prologMultiValued)). 296 297:- scan_missed_source. 298 299 300 301% :- ((ain((hybrid_support(F,A)/(F\==arity,F\==genlMt))==> {must(kb_shared(F/A))}))). 302 303 304 305pfcControlled(P),arity(P,A)==>hybrid_support(P,A). 306 307 308rtArgsVerbatum(mpred_prop). 309rtArgsVerbatum(listing). 310 311rtNotForUnboundPredicates(~). 312rtNotForUnboundPredicates(t). 313rtNotForUnboundPredicates(call). 314 315 316 317% ==> pfc_checking. 318 319 320 321/* 322% catching of misinterpreations 323*/ 324pfc_checking ==> (mpred_prop(M,F,A,pfcPosTrigger)==>{M:warn_if_static(F,A)}). 325pfc_checking ==> (mpred_prop(M,F,A,pfcNegTrigger)==>{M:warn_if_static(F,A)}). 326pfc_checking ==> (mpred_prop(M,F,A,pfcBcTrigger)==>{M:warn_if_static(F,A)}). 327mpred_prop(M,F,A,What)/(\+ ground(F/A))==>{trace_or_throw_ex(mpred_prop(M,F,A,What))}. 328 329 330mpred_prop(M,F,A,pfcCreates)==> 331 % {functor(P,F,A),quietly(make_dynamic(P)),kb_shared(F/A),create_predicate_inheritance(abox,F,A)}, 332 {kb_shared(M:F/A)}, 333 {M:warn_if_static(F,A)}. 334mpred_prop(M,F,A,pfcControlled)==> {kb_shared(M:F/A)}. 335mpred_prop(M,F,A,pfcWatches)==> {kb_shared(M:F/A)}. 336 337 338mpred_prop(M,F,A,pfcPosTrigger)==>mpred_prop(M,F,A,pfcWatches). 339mpred_prop(M,F,A,pfcNegTrigger)==>mpred_prop(M,F,A,pfcWatches). 340mpred_prop(M,F,A,pfcBcTrigger)==>mpred_prop(M,F,A,pfcCreates). 341mpred_prop(M,F,A,pfcLHS)==> arity(F,A),functorIsMacro(F),mpred_prop(M,F,A,pfcWatches). 342mpred_prop(M,F,A,pfcRHS)==> mpred_prop(M,F,A,pfcCreates). 343 344 345 346mpred_prop(M,F,A,pfcCallCode)/predicate_is_undefined_fa(F,A) 347 ==> mpred_prop(M,F,A,needsDefined). 348/* 349mpred_prop(M,F,A,pfcCallCode)/predicate_is_undefined_fa(F,A) 350 ==> mpred_prop(M,F,A,pfcWatches). 351*/ 352 353:- if(\+ current_prolog_flag(retry_undefined,_)). 354:- endif. 355 356genlPreds(pfcRHS,pfcControlled). 357 358genlPreds(prologSideEffects,rtNotForUnboundPredicates). 359 360:- kb_shared(nondet/0). 361:- kb_shared(typeCheckDecl/2). 362 363==> nondet. 364 365 366:- kb_shared(warningsAbout/2). 367 368==>prologHybrid(warningsAbout/2,rtArgsVerbatum). 369warningsAbout(Msg,Why)==>{wdmsg_pretty(error(warningsAbout(Msg,Why))),break}.
:- kb_shared(t/1)
.
t([P|LIST])
:- cwc, !,mpred_plist_t(P,LIST)
.
t(naf(CALL))
:- cwc, !,not(t(CALL))
.
t(not(CALL))
:- cwc, !,mpred_f(CALL)
.
379t(CALL):- cwc, call(into_plist_arities(3,10,CALL,[P|LIST])),mpred_plist_t(P,LIST).
t(C,I)
:- cwc, trace_or_throw_ex(t(C,I))
,t(C,I)
. % ,fail,loop_check_term(isa_backchaing(I,C),t(C,I),fail)
.
t(P,A1)
:- vwc, isa(A1,P)
.
388t(A,B):- cwc, atom(A),!,ABC=..[A,B],call_u(ABC). 389%t(A,B):- (atom(A)->true;(no_repeats(arity(A,1)),atom(A))),ABC=..[A,B],loop_check(call_u(ABC)). 390%t(A,B):- call_u(call(A,B)). 391t(P,A1):- cwc, mpred_fa_call(P,1,call(P,A1)).
398t(P,A1,A2):- cwc, mpred_fa_call(P,2,call(P,A1,A2)). 399%t(P,A1,A2):- cwc, call_u(t(P,A1,A2)).
407t(P,A1,A2,A3):- cwc, mpred_fa_call(P,3,call(P,A1,A2,A3)). 408%t(P,A1,A2,A3):- vwc, t(P,A1,A2,A3).
415t(P,A1,A2,A3,A4):- cwc, mpred_fa_call(P,4,call(P,A1,A2,A3,A4)). 416%t(P,A1,A2,A3,A4):- cwc, call_u(t(P,A1,A2,A3,A4)).
424t(P,A1,A2,A3,A4,A5):- cwc, mpred_fa_call(P,5,call(P,A1,A2,A3,A4,A5)). 425%t(P,A1,A2,A3,A4,A5):- cwc, call_u(t(P,A1,A2,A3,A4,A5)).
433t(P,A1,A2,A3,A4,A5,A6):- cwc, mpred_fa_call(P,6,call(P,A1,A2,A3,A4,A5,A6)). 434%t(P,A1,A2,A3,A4,A5,A6):- cwc, call_u(t(P,A1,A2,A3,A4,A5,A6)).
442t(P,A1,A2,A3,A4,A5,A6,A7):- cwc, mpred_fa_call(P,7,call(P,A1,A2,A3,A4,A5,A6,A7)). 443%t(P,A1,A2,A3,A4,A5,A6,A7):- cwc, call_u(t(P,A1,A2,A3,A4,A5,A6,A7)). 444 445%prologHybrid(C)==>{must(callable(C))}. 446%pfcControlled(C)==>{must(callable(C))}. 447:- multifile(typeCheckDecl/2). 448typeCheckDecl(prologHybrid(C),callable(C)). 449typeCheckDecl(pfcControlled(C),callable(C)). 450 451 452arity(comment,2). 453 454 455 456arity(alwaysGaf,1). 457alwaysGaf(alwaysGaf). 458alwaysGaf(pfcRHS). 459alwaysGaf(pfcLHS). 460 461%arity('$VAR',_). 462%arity(is_never_type,1). 463%arity(prologSingleValued,1). 464%arity(Prop,1):- cwc, clause_b(ttRelationType(Prop)). 465arity(F,A):- cwc, is_ftNameArity(F,A), current_predicate(F/A),A>1. 466arity(F,1):- cwc, call_u(ttRelationType(F)). % current_predicate(F/1)). % is_ftNameArity(F,1), , (col_as_unary(F);ttTypeType(F)), \+((call((dif:dif(Z,1))), arity(F,Z))). 467 468 469arity(rtArgsVerbatum,1). 470arity(quasiQuote,1). 471rtArgsVerbatum(spft). 472 473 474% this mean to leave terms at EL: foo('xQuoteFn'([cant,touch,me])). 475 476quasiQuote('xQuoteFn'). 477 478rtArgsVerbatum('with_current_why'). 479rtArgsVerbatum('loop_check_term'). 480rtArgsVerbatum('loop_check_term_key'). 481rtArgsVerbatum('xQuoteFn'). 482rtArgsVerbatum('$VAR'). 483rtArgsVerbatum('NART'). 484rtArgsVerbatum(X):- cwc, atom(X),atom_concat(_,'Fn',X). 485rtArgsVerbatum(ain). 486rtArgsVerbatum(ruleRewrite). 487rtArgsVerbatum(mpred_action). 488rtArgsVerbatum(mpred_prop). 489rtArgsVerbatum(ain). 490rtArgsVerbatum(mpred_rem). 491rtArgsVerbatum(added). 492rtArgsVerbatum(call). 493rtArgsVerbatum(call_u). 494rtArgsVerbatum(clause_asserted_i). 495rtArgsVerbatum(member). 496rtArgsVerbatum( <- ). 497rtArgsVerbatum(=..). 498% rtArgsVerbatum({}). % Needs mpred_expansion to visit 499rtArgsVerbatum(second_order). 500 501% rtArgsVerbatum((':-')). 502 503 504 505 506:- kb_shared(support_hilog/2). 507 508 509 510% genlPreds(support_hilog,arity). 511 512 513%prologBuiltin(resolveConflict/1). 514 515% :- kb_shared(bt/2). 516(bt(P,_)/(nonvar(P),must(get_bc_clause(P,Post)))) ==> ({ignore(kb_shared(P))},Post). 517 518%redundantMaybe ==> ((prologHybrid(F),arity(F,A))==>mpred_prop(M,F,A,pfcVisible)). 519%redundantMaybe ==> (mpred_prop(M,F,A,pfcVisible)==>prologHybrid(F),arity(F,A)). 520 521% ((mpred_prop(M,F,A,pfcRHS)/(A\=0)) ==> {kb_shared(F/A)}). 522% ((mpred_prop(M,F,A,_)/(A\=0)) ==> {kb_shared(F/A)}). 523 524% pfcMustFC(F) ==> pfcControlled(F). 525genlPreds(pfcMustFC, pfcControlled). 526 527% pfcControlled(C)==>prologHybrid(C). 528genlPreds(pfcControlled, prologHybrid). 529 530((mpred_prop(M,F,A,R1),genlPreds(R1,R2))==>mpred_prop(M,F,A,R2)). 531 532do_and_undo(mpred_post_exactly,mpred_remove_exactly). 533 534 535 536 537 538 539 540:- meta_predicate(without_depth_limit( )). 541without_depth_limit(G):- cwc, call_with_depth_limit(G,72057594037927935,Result),sanity(Result\==depth_limit_exceeded). 542:- scan_missed_source. 543 544 545 546:- dynamic(mpred_undo_sys/3). 547:- (mpred_ain(==>pfcControlled(mpred_undo_sys(ftAssertion, ftCallable, ftCallable)))). 548:- (ain(==>pfcControlled(mpred_undo_sys(ftAssertion, ftCallable, ftCallable)))). 549mpred_undo_sys(P, WhenAdded, WhenRemoved) ==> (P ==> {WhenAdded}), mpred_do_and_undo_method(WhenAdded,WhenRemoved). 550 551% DONT mpred_undo_sys(added(P),ain(P),mpred_retract(P)). 552% mpred_undo_sys(asserted(P),assert_eq_quitely(PE),retract_eq_quitely(PE)):-expand_goal(P,PE). 553 554/* 555without_depth_limit(G):- 556 ('$depth_limit'(72057594037927935,Was,_), 557 (Was == -1 -> call(G); % Not inside cwdl 558 (Was > 72000000000000000 -> call(G); % We left Depth limit slightly messed 559 call_cleanup(G,'$depth_limit'(Was,_,_))))). 560*/ 561 562~(singleValuedInArg(arity,_)). 563~(singleValuedInArg(support_hilog,_)). 564 565 566%:- rtrace,dtrace. 567% ==>(prologBuiltin(mpred_select_hook/1)). 568% :- nortrace,quietly. 569 570:- kb_shared(conflict/1). 571% a conflict triggers a Prolog action to resolve it. 572conflict(C) ==> {must(with_mpred_trace_exec((resolveConflict(C),\+conflict(C))))}. 573 574 575% meta rules to schedule inferencing. 576% resolve conflicts asap 577baseKBmpred_select_hook(conflict(X)) :- cwc, que(conflict(X),_Why). 578 579 580%tPred(t,prologDynamic). 581% tPred(member/2,prologBuiltin). 582rtNotForUnboundPredicates(member/2). 583 584 585% =================================================================== 586% Never Assert / Retraction checks 587% =================================================================== 588 589:- kb_shared(never_assert_u/2). 590never_assert_u(~(X),is_ftVar(~X)):- cwc, is_ftVar(X). 591 592never_assert_u(mpred_unload_option(never,X),is_ftVar(mpred_unload_option(never,X))):- cwc, is_ftVar(X). 593never_assert_u(X,is_ftVar(X)):- cwc, is_ftVar(X). 594never_assert_u(prologSingleValued(BAD),var_prologSingleValued(BAD)):-cwc, is_ftVar(BAD). 595never_assert_u(baseKB:mtProlog(baseKB),must(mtHybrid(baseKB))). 596never_assert_u(A,never_assert_u(A)):- cwc, loop_check(never_assert_u(A)). 597% P/never_assert_u(P,Why) ==> conflict(never_assert_u(P,Why)) 598:- kb_shared(never_assert_u/1). 599% never_assert_u(X):- cwc, loop_check(never_assert_u(X,_)). 600 601 602:- kb_shared(never_retract_u/2). 603never_retract_u(~(X),is_ftVar(~X)):- cwc, is_ftVar(X). 604never_retract_u(X,is_ftVar(X)):- cwc, is_ftVar(X). 605never_retract_u(X,never_retract_u(X)):- cwc, never_retract_u(X). 606 607:- kb_shared(never_retract_u/1). 608never_retract_u(X):- cwc, loop_check(never_retract_u(X,_)). 609 610%:- dynamic(mpred_unload_option/2). 611%:- listing(mpred_unload_option/2). 612%:- mpred_trace_exec. 613%:- rtrace,trace. 614:- prolog_load_context(file,F), ain(mpred_unload_option(F,never)). 615%:- nortrace. 616%:- mpred_notrace_exec. 617%:- listing(mpred_unload_option/2). 618 619%:- mpred_trace_exec. 620%(P/mpred_positive_fact(P),~P) ==> \+ ~P. 621 622 623 624% ~P ==> ({retractall(P)}). 625% P ==> ({retractall(~P)}). 626 627% ~P ==> \+ P. 628 %(P ,{mpred_positive_fact(P)})==> \+ ~ P. 629%:- break. 630 631 632P/mpred_positive_fact(P) ==> \+ ~P. 633(~P)/mpred_positive_fact(P) ==> (\+ P, nesc(~P)). 634(nesc(~P)/mpred_positive_fact(P)) ==> (~P, (P ==> \+ P)). 635(nesc(P) /mpred_positive_fact(P) ==> ( P, (~P ==> \+ ~P))). 636 637 nesc(P)==>P. 638 639% % preventedWhen(P,{Cond})==> (((P:- awc,Cond,!,fail))). 640preventedWhen(P,Cond)==> (((P/mpred_positive_fact(P),Cond)==> nesc(~P))). 641% preventedWhen(P,Cond)==> ((((~P) <- Cond))). 642preventedWhen(P,{Cond})/mpred_positive_fact(P)==> ((~P) :- cwc, Cond). 643 644%:- mpred_trace_exec. 645% can this ever happen? 646% (( \+ P, P) ==> {dumpST,dmsg_pretty(warn(weak_conflict(P)))}). 647% TAKEN CARE OF ( (~ P/mpred_positive_fact(P)), P) ==> ({dmsg_pretty(warn(conflict(P)))}). 648% (\+ P, P) => conflict(P).
654%:- rtrace. 655:- call(assertz_if_new,(((~(G):- (cwc, neg_in_code(G)))))). 656 657% :- pfcNoWatch. 658 659 660%:- rtrace. 661% prologHybrid(arity/2). 662prologDynamic(term_expansion/2). 663prologBuiltin(var/1)
system_base
% ============================================= % File 'system_base_lite.pfc' % Purpose: Agent Reactivity for SWI-Prolog % Maintainer: Douglas Miles % Contact: $Author: dmiles $@users.sourceforge.net ; % Version: 'interface' 1.0.0 % Revision: $Revision: 1.9 $ % Revised At: $Date: 2002/06/27 14:13:20 $ % ============================================= % % PFC is a language extension for prolog.. there is so much that can be done in this language extension to Prolog % % %
props(Obj,[height(ObjHt)])
==t(height,Obj,ObjHt)
==rdf(Obj,height,ObjHt)
==t(height(Obj,ObjHt))
. %pain(Obj,[height(ObjHt)])
==prop_set(height,Obj,ObjHt,...)
==ain(height(Obj,ObjHt))
% [pdel/pclr](Obj,[height(ObjHt)
]) == [del/clr](height,Obj,ObjHt) == [del/clr]svo(Obj,height,ObjHt)
== [del/clr](height(Obj,ObjHt)
) %keraseall(AnyTerm)
. % % ANTECEEDANT CONSEQUENT % % P = test nesc trueassert(P)
,retract(~P) ,enable(P)
. % ~ P = test nesc false assert(~P),retract(P)
,disable(P)
% % ~ ~(P) = test possible (via not impossible)retract( ~(P))
,enable(P)
. % \+ ~(P) = test impossiblity is unknownretract( ~(P))
% ~ \+(P) = same as P same as P % \+(P) = testnaf(P)
retract(P)
% % Dec 13, 2035 % Douglas Miles */