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

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 true assert(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 unknown retract( ~(P)) % ~ \+(P) = same as P same as P % \+(P) = test naf(P) retract(P) % % Dec 13, 2035 % Douglas Miles */

   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}.
 t(?CALL) is semidet
True Structure.

:- 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(?VALUE1, ?VALUE2) is semidet
True Structure.

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)).
 t(?P, ?A1, ?A2) is semidet
True Structure.
  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)).
 t(?P, ?A1, ?A2, ?A3) is semidet
True Structure.
  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).
 t(?P, ?A1, ?A2, ?A3, ?A4) is semidet
True Structure.
  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)).
 t(:PRED5P, ?A1, ?A2, ?A3, ?A4, ?A5) is semidet
True Structure.
  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)).
 t(:PRED6P, ?A1, ?A2, ?A3, ?A4, ?A5, ?A6) is semidet
True Structure.
  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)).
 t(:PRED7P, ?A1, ?A2, ?A3, ?A4, ?A5, ?A6, ?A7) is semidet
True Structure.
  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(0)).  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
  577baseKB:mpred_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).
 ~(?VALUE1) is semidet
  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)