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
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 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
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
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_(_,_,_)). 147
148
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). 169
170
171
172
173
175:- set_prolog_flag(verbose,normal).