1/*
    2% NomicMUD: A MUD server written in Prolog
    3% Maintainer: Douglas Miles
    4% Dec 13, 2035
    5%
    6% Bits and pieces:
    7%
    8% LogicMOO, Inform7, FROLOG, Guncho, PrologMUD and Marty's Prolog Adventure Prototype
    9% 
   10% Copyright (C) 2004 Marty White under the GNU GPL 
   11% Sept 20,1999 - Douglas Miles
   12% July 10,1996 - John Eikenberry 
   13%
   14% Logicmoo Project changes:
   15%
   16% Main file.
   17%
   18*/
   19
   20
   21:- reexport(library(logicmoo_utils_all)).   22ludef:- list_undefined([module_class([user,system,library,test,development])]).
   23
   24:- export(simplify_dbug/2).   25simplify_dbug(G,GG):- \+ compound(G),!,GG=G.
   26simplify_dbug({O},{O}):- !.
   27simplify_dbug(List,O):-
   28 ( is_list(List) -> clip_cons(List,'...'(_),O) ;
   29 ( List = [_|_], append(LeftSide,Open,List),
   30  ((var(Open);Open \= [_|_])), !, assertion(is_list(LeftSide)),
   31 clip_cons(LeftSide,'...'(Open),O))).
   32simplify_dbug(G,GG):- compound_name_arguments(G,F,GL), F\==percept_props, !,
   33 maplist(simplify_dbug,GL,GGL),!,compound_name_arguments(GG,F,GGL).
   34simplify_dbug(G,G).              
   35
   36%:- system:import(simplify_dbug/2).
   37%:- listing(simplify_dbug/2).
   38
   39
   40is_state_list(G,_):- \+ compound(G),!,fail.
   41is_state_list([G1|_],{GG,'...'}):- compound(G1),G1=structure_label(GG),!.
   42is_state_list([_|G],GG):- is_state_list(G,GG).
   43clip_cons(G,GG):- is_state_list(G,GG),!.
   44clip_cons(List,ClipTail,{Len,LeftS,ClipTail}):- 
   45 length(List,Len),
   46 MaxLen = 5, Len>MaxLen,
   47 length(Left,MaxLen),
   48 append(Left,_,List),!,
   49 maplist(simplify_dbug,Left,LeftS).
   50clip_cons(Left,_,List):-maplist(simplify_dbug,Left,List).
   51
   52
   53found_bug(S0,open_list(Open)) :- \+is_list(S0),
   54  get_open_segement(S0,Open).
   55found_bug(S0,duplicated_object(X,R,L)) :-
   56 append(Left,[prop(X,R)|_],S0),
   57 member(prop(X,L),Left).
   58
   59get_open_segement(S0,Open):- append(Left,_,S0),is_list(Left),length(Left,N),N>2,!,append([_,_],S1,S0),get_open_segement(S1,Open).
   60get_open_segement(S0,S0).
   61
   62
   63check4bugs(Why, S0):- found_bug(S0,Bug), pprint(S0, always), pprint(check4bugs_found_bug(Why,Bug),always),throw(check4bugs_failed(Bug)).
   64 % TODO: emergency save of S0, either here or better yet, in a catch().
   65check4bugs(_, _).
   66
   67
   68
   69:- meta_predicate reset_prolog_flag(0,*,*,*).   70:- meta_predicate reset_prolog_flag(0,*,*).   71:- meta_predicate system_default_debug(0).   72
   73reset_prolog_flag(YN, Name, SystemValue):- 
   74  YN -> set_prolog_flag(Name, SystemValue) ; true.
   75
   76reset_prolog_flag(YN, Name, SystemValue, OverrideValue):-
   77  YN -> set_prolog_flag(Name, SystemValue)
   78   ;  set_prolog_flag(Name, OverrideValue).
   79
   80system_default_debug(YN):-
   81  reset_prolog_flag(YN, answer_format, '~p', '~q'), 
   82  reset_prolog_flag(YN, answer_write_options, [quoted(true), portray(true), max_depth(10), spacing(next_argument)], 
   83   [quoted(true), portray(true), max_depth(4), spacing(next_argument)]), 
   84  reset_prolog_flag(YN, debugger_write_options, [quoted(true), portray(true), max_depth(10), attributes(portray), spacing(next_argument)], 
   85   [quoted(true), portray(true), max_depth(4), attributes(portray), spacing(next_argument)]), 
   86  reset_prolog_flag(YN, print_write_options, [portray(true), quoted(true), numbervars(true)], 
   87   [portray(true), quoted(true), numbervars(true)]), 
   88
   89  reset_prolog_flag(YN, backtrace, true), 
   90  reset_prolog_flag(YN, backtrace_depth, 20, 2000), 
   91  reset_prolog_flag(YN, backtrace_goal_depth, 3, 4), 
   92  reset_prolog_flag(YN, backtrace_show_lines, true), 
   93  reset_prolog_flag(YN, debug, false, true), 
   94  reset_prolog_flag(YN, debug_on_error, true), 
   95  reset_prolog_flag(YN, debugger_show_context, false, true), 
   96
   97  reset_prolog_flag(YN, gc, true), 
   98
   99  reset_prolog_flag(YN, last_call_optimisation, true, false), 
  100  reset_prolog_flag(YN, optimise, false), 
  101  reset_prolog_flag(YN, optimise_debug, default), 
  102
  103  reset_prolog_flag(YN, prompt_alternatives_on, determinism), 
  104  reset_prolog_flag(YN, toplevel_goal, default), 
  105  reset_prolog_flag(YN, toplevel_mode, backtracking), 
  106  reset_prolog_flag(YN, toplevel_residue_vars, false, true), 
  107  reset_prolog_flag(YN, toplevel_print_anon, true), 
  108  reset_prolog_flag(YN, toplevel_print_factorized, false, true), 
  109  reset_prolog_flag(YN, write_attributes, ignore),
  110
  111  reset_prolog_flag(YN, warn_override_implicit_import, true), 
  112  reset_prolog_flag(YN, access_level, user),
  113  reset_prolog_flag(YN, sandboxed_load, false), 
  114  reset_prolog_flag(YN, save_history, true), 
  115  !.
  116
  117:- system_default_debug(false).  118
  119% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  120% CODE FILE SECTION
  121% :- nop(ensure_loaded('adv_debug')).
  122% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  123
  124:- module_transparent(dshow_call/1).  125:- module_transparent(dshow_true/1).  126:- module_transparent(dshow_fail/1).  127:- module_transparent(dmust_tracing/1).  128:- module_transparent(if_tracing/1).  129
  130:- meta_predicate(dmust_tracing(*)).  131dmust_tracing(G):- notrace((tracing,cls)),!,must_det(G).
  132dmust_tracing(G):- call(G).
  133:- meta_predicate(if_tracing(*)).  134if_tracing(G):- tracing -> notrace(G) ; true.
  135
  136
  137% '$hide'(Pred) :- '$set_predicate_attribute'(Pred, trace, false).
  138never_trace(_Spec):- prolog_load_context(reloading,true),!.
  139never_trace(Spec):- '$hide'(Spec),'$iso'(Spec),ignore(trace(Spec, -all)).
  140:- call(ensure_loaded,library(lists)).  141:- never_trace(lists:append(_,_,_)).  142:- never_trace(lists:list_to_set/2).  143:- never_trace(lists:member_(_,_,_)).  144/*
  145:- never_trace(prolog_debug:assertion(_)).
  146*/
  147
  148
  149%:- never_trace(lists:member(_,_)).
  150%:- never_trace(lists:append(_,_,_)).
  151:- meta_predicate(dshow_call(*)).  152dshow_call((G1,G2)):- !,dshow_fail(G1),dshow_fail(G2).
  153dshow_call(G):- simplify_dbug(G,GG), (G*->dmsg(success_dshow_call(GG));(dmsg(failed_dshow_call(GG)),!,fail)).
  154
  155:- meta_predicate(dshow_fail(*)).  156dshow_fail('\\+'(G1)):- !, \+ dshow_true(G1).
  157dshow_fail(G):- simplify_dbug(G,GG), (G*->true;(dmsg(failed_dshow_call(GG)),!,fail)).
  158
  159:- meta_predicate(dshow_true(*)).  160dshow_true('\\+'(G1)):- !, \+ dshow_fail(G1).
  161dshow_true(G):- simplify_dbug(G,GG),  (G*->dmsg(success_dshow_call(GG));fail).
  162
  163
  164
  165:- multifile(user:portray/1).  166:- dynamic(user:portray/1).  167:- discontiguous(user:portray/1).  168% user:portray
  169
  170
  171
  172
  173
  174%:- set_prolog_flag(verbose_load,full).
  175:- set_prolog_flag(verbose,normal).  176%:- set_prolog_flag(verbose_autoload,true).