1 % (c) 2009-2019 Lehrstuhl fuer Softwaretechnik und Programmiersprachen,
2 % Heinrich Heine Universitaet Duesseldorf
3 % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html)
4
5 :- module(preferences,
6 [init_preferences/0,
7 tcltk_get_preference/2, get_computed_preference/2,
8 get_preference/2, get_preferences_list/1, get_preferences_list/2,
9 set_preference/2,
10 call_with_preference/3,
11 temporary_set_preference/2, temporary_set_preference/3,
12 reset_temporary_preference/1, reset_temporary_preference/2,
13 reset_all_temporary_preferences/0,
14 preference_category/2, preference_description/2, preference_val_type/2, preference_default_value/2,
15 preference/2,
16 is_of_type/2,
17 get_ith_preference_type/2, get_ith_preference_value/2, set_ith_preference_value/2,
18 get_ith_preference_type/3, get_ith_preference_value/3, set_ith_preference_value/3,
19 virtual_preference_category/2,
20 load_preferences/1,save_preferences/1,
21 backup_preferences/0, revert_preferences/0, reset_to_defaults/1, reset_for_benchmarking/0,
22 set_preference_group/2,
23 activate_recent_documents/0,deactivate_recent_documents/0,
24 print_preferences/0,
25
26 add_recent_document/1, /* use to add a file to recent documents list */
27 get_recent_documents/1, clear_recent_documents/0,
28 add_element_to_history/3, get_history_elements_list/3,
29
30 eclipse_preference/2, print_eclipse_prefs/0,
31 advanced_eclipse_preference/2,
32 obsolete_eclipse_preference/1, obsolete_preference/1,
33 get_non_default_preferences/1,
34
35 get_time_out_preference_with_factor/2,
36 add_time_outs/3,
37 time_out_preference_disabled/0,
38
39 get_prob_application_type/1, set_prob_application_type/1
40 ]).
41
42 :- use_module(tools, [ print_message/1, host_platform/1]).
43 :- use_module(tools_meta, [safe_on_exception/3, safe_on_exception_silent/3, translate_term_into_atom/2]).
44 :- use_module(tools_strings, [string_concatenate/3, ajoin/2]).
45 :- use_module(tools_printing, [print_dynamic_pred/3,print_error/1]).
46
47 :- use_module(module_information,[module_info/2]).
48 :- module_info(group,infrastructure).
49 :- module_info(description,'This module manages the various preferences of ProB. Preferences can be grouped, saved and restored and validated from file.').
50
51 %:- use_module(debug). % no longer required
52 % :- use_module(self_check). % tests now in basic_tests
53 :- use_module(error_manager).
54 :- use_module(library(lists)).
55
56 :- volatile change_flag/0.
57 :- dynamic change_flag/0.
58 assert_change_flag :- assert(change_flag).
59
60 init_preferences :- retractall(change_flag),
61 reset_to_defaults, check_preferences.
62
63 check_preferences :-
64 %print('% '), preference_description(P,_), print(P), print(' '),
65 ? preferences:preference_default_value(P,_),
66 ? ( preferences:preference(P,Val),
67 preferences:preference_val_type(P,T),
68 preferences:preference_category(P,_)
69 ? -> preferences:is_of_type(Val,T)
70 ; add_internal_error('Internal error for preference: ',P)
71 ),fail.
72 check_preferences. % :- print_message('Preferences Checked').
73
74
75
76 load_preferences(File) :- print_message(load_preferences(File)),
77 safe_on_exception_silent(Exception1,see(File),
78 (print_see_exception(Exception1,File),fail)),
79 !,
80 load_preferences2(File).
81 load_preferences(_).
82
83 load_preferences2(File) :-
84 safe_on_exception(_Exc2,read_preferences,
85 (print_message('### corrupted preference file'),print_message(File))),
86 !.
87 %print(loaded_preferences(File)),nl.
88 load_preferences2(File) :- print_message('### error occured reading preference file'),
89 print_message(File).
90
91 print_see_exception(error(existence_error(_,_),_),File) :- !,
92 print_message('preference file does not exist, ProB will create a fresh one'),print_message(File).
93 print_see_exception(Exception,File) :-
94 print_message('### cannot open preference file'),print_message(File),
95 print_message(Exception).
96
97 read_preferences :- clear_dynamic_preference_predicates,
98 call_cleanup(read_preferences2,seen).
99 read_preferences2 :-
100 read(Term), Term \= end_of_file, !, %print(pref(Term)),nl,
101 (Term = preference(Pref,NVal)
102 -> (volatile_preference(Pref) -> true
103 ; retract(preference(Pref,_)) -> assert(preference(Pref,NVal))
104 ; obsolete_preference(Pref) -> print_message(obsolete(Pref))
105 ; add_message(load_preferences,'Unknown preference in preference file: ',Pref)
106 )
107 ; Term = ':-'(dynamic(_)) -> true
108 ; dynamic_preference_predicate(Term) -> assert(Term)
109 ; (Term = (Head:-fail),dynamic_preference_predicate(Head)) -> true
110 ; add_error(load_preferences,'Unrecognised:',Term)
111 ),
112 read_preferences2.
113 read_preferences2 :- retractall(change_flag), recompute_nr_of_recent_documents.
114 %recompute_nr_of_searched_and_replaced_patterns.
115 %recompute_nr_of_eval_history_elements.
116
117 clear_dynamic_preference_predicates :- dynamic_preference_predicate(X), retractall(X),fail.
118 clear_dynamic_preference_predicates.
119
120 % declare which dynamic predicates are stored in Preference file
121 dynamic_preference_predicate(recent_documents(_)).
122 dynamic_preference_predicate(searched_patterns(_)).
123 dynamic_preference_predicate(replaced_patterns(_)).
124 dynamic_preference_predicate(eval_history_elements(_)).
125 dynamic_preference_predicate(eval_csp_history_elements(_)).
126 dynamic_preference_predicate(checked_ltl_formulas(_)).
127
128 save_preferences(File) :- change_flag,!,
129 % catch exception in case we cannot write preferences file
130 on_exception(Exception,save_preferences2(File),
131 (string_concatenate('Cannot write preferences file ',File,Msg),
132 add_error(save_preferences,Msg,Exception))).
133 save_preferences(File) :- print_message(preferences_unchanged(File)).
134
135 save_preferences2(File) :-
136 print_message(save_preferences(File)),
137 tell(File),
138 (print_preferences_for_saving -> true ; true),
139 told,
140 retractall(change_flag).
141
142 % if we have temporarily set a preference, then print the old value
143 print_preferences_for_saving :-
144 preference_default_value(Pref,_),
145 preference(Pref,CurVal),
146 (temp_pref(Pref,OldVal,CurVal) -> V=OldVal ; V=CurVal), % temp_pref can be nested !, will not print initial value in this case
147 write_term(preference(Pref,V),[quoted(true)]),print('.'),nl,
148 fail.
149 print_preferences_for_saving :- print_dynamic_preferences.
150
151 % now in basic_tests.pl
152 %:- assert_must_succeed(print_preferences).
153 print_preferences :- print_dynamic_pred(preferences,preference,2),
154 print_dynamic_preferences.
155
156 print_dynamic_preferences :-
157 dynamic_preference_predicate(P), functor(P,F,N),
158 print_dynamic_pred(preferences,F,N),fail.
159 print_dynamic_preferences.
160
161 % now in basic_tests.pl
162 %:- assert_must_succeed(get_non_default_preferences(_)).
163
164 get_non_default_preferences(list(L)) :-
165 findall(PS,non_default_pref(PS),L).
166
167 non_default_pref(PrefStr) :- preference(Pref,Val), preference_default_value(Pref,DVal),
168 DVal \= Val,
169 (eclipse_preference(ECLPREF,Pref) ->
170 ajoin([Pref,' (',ECLPREF,') == ',Val,' (default = ',DVal, ')'],PrefStr)
171 ;
172 ajoin([Pref,' == ',Val,' (default = ',DVal, ')'],PrefStr)
173 ).
174
175 :- volatile change_flag_backup/0, pref_backup/2.
176 :- dynamic change_flag_backup/0.
177 :- dynamic pref_backup/2.
178
179 backup_preferences :- retractall(pref_backup(_,_)),retractall(change_flag_backup),
180 preference(P,Val), assert(pref_backup(P,Val)),fail.
181 backup_preferences :- (change_flag -> assert(change_flag_backup) ; true).
182
183 revert_preferences :- \+(pref_backup(_,_)),!, print_error('No previously backed-up preferences in revert_preferences!').
184 revert_preferences :- retractall(preference(_,_)),pref_backup(P,Val), assert(preference(P,Val)),fail.
185 revert_preferences :- retractall(change_flag), (change_flag_backup -> assert_change_flag ; true).
186
187 reset_to_defaults :- reset_to_defaults(_).
188
189 ?reset_to_defaults(Category) :- preference_category(Pref,Category),
190 preference_default_value(Pref,Val),
191 retractall(preference(Pref,_)),
192 assert(preference(Pref,Val)),
193 fail.
194 reset_to_defaults(_) :- assert_change_flag.
195
196
197 reset_for_benchmarking :-
198 set_preference(maxNrOfInitialisations,3),
199 set_preference(randomisedRestartInitalisations,false),
200 set_preference(maxNrOfEnablingsPerOperation,10),
201 set_preference(maxint,4),
202 set_preference(minint,-1),
203 set_preference(time_out,3500),
204 set_preference(globalsets_fdrange,3),
205 set_preference(show_initialisation_arguments,true),
206 set_preference(provide_trace_information,false),
207 set_preference(performance_monitoring_on,false),
208 set_preference(find_abort_values,false),
209 set_preference(raise_abort_immediately,false),
210 set_preference(expand_forall_upto,100),
211 %set_preference(animate_skip_operations,true),
212 set_preference(cspm_animate_all_processes_without_arguments,false),
213 set_preference(cspm_animate_all_processes,false).
214 % set_preference(convert_closures_into_explicit_form_for_store,true).
215
216 :- meta_predicate call_with_preference(0,-,-).
217
218 call_with_preference(Call,Pref,Val) :-
219 temporary_set_preference(Pref,Val,CHNG1),
220 call_cleanup(Call,
221 reset_temporary_preference(Pref,CHNG1)).
222
223
224 % ------------------------
225
226
227 % now in basic_tests.pl
228 %:- assert_must_succeed( \+((eclipse_preference(_EP,P), \+preference_default_value(P,_Val)))).
229 eclipse_preference('MAXINT',maxint).
230 eclipse_preference('MININT',minint).
231 eclipse_preference('DEFAULT_SETSIZE',globalsets_fdrange).
232 eclipse_preference('MAX_INITIALISATIONS',maxNrOfInitialisations).
233 eclipse_preference('RANDOMISED_RESTART_INIT',randomisedRestartInitalisations).
234 eclipse_preference('MAX_OPERATIONS',maxNrOfEnablingsPerOperation).
235 %eclipse_preference('ANIMATE_SKIP_OPERATIONS',animate_skip_operations).
236 %eclipse_preference('EXPAND_CLOSURES_FOR_STATE',convert_closures_into_explicit_form_for_store).
237 eclipse_preference('SYMBOLIC',convert_comprehension_sets_into_closures).
238 eclipse_preference('CLPFD',use_clpfd_solver).
239 eclipse_preference('CHR',use_chr_solver).
240 eclipse_preference('SMT',use_smt_mode).
241 eclipse_preference('SOLVER_STRENGTH',solver_strength).
242 eclipse_preference('REMOVE_IMPLIED_CONSTRAINTS',remove_implied_constraints).
243 eclipse_preference('LIFT_EXISTS',lift_existential_quantifiers).
244 eclipse_preference('CSE',use_common_subexpression_elimination).
245 eclipse_preference('STATIC_ORDERING',use_static_ordering).
246 eclipse_preference('COMPRESSION',use_state_packing).
247 %eclipse_preference('SYMMETRY_MARKERS',use_symmetry_marker_hash).
248 %eclipse_preference('PERMUTATION_FLOODING',enable_permutation_reducation).
249 eclipse_preference('SYMMETRY_MODE',symmetry_mode).
250 eclipse_preference('STATIC_SYMMETRY_DETECTION',use_static_symmetry_detection).
251 eclipse_preference('TIME_OUT',time_out).
252 eclipse_preference('PROOF_INFO',use_po).
253 eclipse_preference('TRY_FIND_ABORT',find_abort_values). % maybe rename into TRY_FIND_WD_ERROR ?
254 eclipse_preference('RAISE_ABORT_IMMEDIATELY',raise_abort_immediately).
255 eclipse_preference('NUMBER_OF_ANIMATED_ABSTRACTIONS',number_animated_abstractions).
256 eclipse_preference('USE_RECORD_CONSTRUCTION',use_record_construction).
257 eclipse_preference('KODKOD',try_kodkod_on_load).
258 eclipse_preference('MEMO',use_closure_expansion_memoization).
259 eclipse_preference('MEMOIZE_FUNCTIONS',use_function_memoization).
260 eclipse_preference('RANDOMISE_ENUMERATION_ORDER',randomise_enumeration_order).
261 eclipse_preference('PGE',pge).
262 eclipse_preference('OPTIMIZE_AST',optimize_ast).
263 eclipse_preference('USELESS_CODE_ELIMINATION',useless_code_elimination).
264 eclipse_preference('COMPILE_WHILE',compile_while_body).
265 eclipse_preference('DETECT_LAMBDAS',detect_lambdas).
266
267 eclipse_preference(A,B) :- advanced_eclipse_preference(A,B).
268
269 % these will not be shown in ProB for Rodin for example:
270 advanced_eclipse_preference('OPERATION_REUSE',try_operation_reuse). % not available for Event-B this doesn't work ; see eg. prob_examples/examples/EventBPrologPackages/Advance_WP2/v6_Sep2014/ex_mch.eventb -animate 300 which generates deadlock
271 advanced_eclipse_preference('NORMALIZE_AST',normalize_ast).
272 advanced_eclipse_preference('DATA_VALIDATION',data_validation_mode).
273 advanced_eclipse_preference('KODKOD_ONLY_FULL',kodkod_for_components).
274 advanced_eclipse_preference('KODKOD_RAISE_WARNINGS',kodkod_raise_warnings).
275 advanced_eclipse_preference('KODKOD_MAX_NR_SOLS',kodkod_max_nr_solutions).
276 advanced_eclipse_preference('KODKOD_SYMMETRY',kodkod_symmetry_level).
277 advanced_eclipse_preference('KODKOD_SAT_SOLVER',kodkod_sat_solver).
278 advanced_eclipse_preference('CSE_PRED',use_common_subexpression_also_for_predicates).
279 advanced_eclipse_preference('CSE_WD_ONLY',use_common_subexpression_wd_only).
280 advanced_eclipse_preference('ALLOW_INCOMPLETE_SETUP_CONSTANTS',allow_incomplete_partial_setup_constants).
281 advanced_eclipse_preference('PARTITION_PROPERTIES',partition_predicates).
282 advanced_eclipse_preference('PARTITION_PROPERTIES_INLINE',partition_predicates_inline_equalities).
283 advanced_eclipse_preference('SHOW_EVENTB_ANY_VALUES',show_eventb_any_arguments).
284 advanced_eclipse_preference('RANDOMISE_OPERATION_ORDER',randomise_operation_order).
285 advanced_eclipse_preference('EXPAND_FORALL_UPTO',expand_forall_upto).
286 advanced_eclipse_preference('MAX_DISPLAY_SET',expand_avl_upto).
287 %advanced_eclipse_preference('WARN_WHEN_EXPANDING_INFINITE_CLOSURES',warn_when_expanding_infinite_closures).
288 advanced_eclipse_preference('ENUMERATE_INFINITE_TYPES',allow_enumeration_of_infinite_types).
289 advanced_eclipse_preference('WARN_IF_DEFINITION_HIDES_VARIABLE',warn_if_definition_hides_variable).
290 advanced_eclipse_preference('TYPE_CHECK_DEFINITIONS',type_check_definitions).
291 advanced_eclipse_preference('TRACE_INFO',provide_trace_information).
292 advanced_eclipse_preference('PERFORMANCE_INFO',performance_monitoring_on).
293 advanced_eclipse_preference('DOUBLE_EVALUATION',double_evaluation_when_analysing).
294 %advanced_eclipse_preference('RECURSIVE',allow_recursive_closures).
295 advanced_eclipse_preference('IGNORE_HASH_COLLISIONS',ignore_hash_collisions).
296 advanced_eclipse_preference('USE_SCOPE_DEFINITION',use_scope_predicate).
297 advanced_eclipse_preference('USE_IGNORE_PRAGMAS',use_ignore_pragmas).
298 advanced_eclipse_preference('FORGET_STATE_SPACE',forget_state_space).
299 advanced_eclipse_preference('SAFETY_MODEL_CHECK',store_only_one_incoming_transition).
300 %advanced_eclipse_preference('LARGE_PARSER_JVM',use_large_jvm_for_parser).
301 advanced_eclipse_preference('CSP_STRIP_SOURCE_LOC',cspm_strip_source_location).
302 advanced_eclipse_preference('INVARIANT_CHECKING',do_invariant_checking).
303 %advanced_eclipse_preference('NEGATED_INVARIANT_CHECKING',do_neginvariant_checking). % use double_evaluation_when_analysing
304 advanced_eclipse_preference('ALLOW_SIMULTANEOUS_ASSIGNMENTS',allow_simultaneous_assignments).
305 advanced_eclipse_preference('BUGLY',bugly_pp_scrambling). % B Ugly
306 advanced_eclipse_preference('ATELIERB_KRT_PATH',path_to_atb_krt).
307 advanced_eclipse_preference('JAVA_PATH',path_to_java).
308 advanced_eclipse_preference('TRY_ATELIERB_PROVERS',try_atb_provers).
309 advanced_eclipse_preference('SYMBOLIC_MC_TRY_OTHER_SOLVERS',symbolic_mc_try_other_solvers).
310 advanced_eclipse_preference('CSE_SUBST',use_common_subexpression_also_for_substitutions).
311 advanced_eclipse_preference('SMT_SUPPORTED_INTERPRETER',smt_supported_interpreter).
312 advanced_eclipse_preference('PP_FROZEN_INFOS',translate_print_frozen_infos).
313 advanced_eclipse_preference('PP_SEQUENCES',translate_print_all_sequences).
314 advanced_eclipse_preference('PP_CS_STYLE_SEQUENCES',translate_print_cs_style_sequences).
315 advanced_eclipse_preference('STRING_AS_SEQUENCE',allow_sequence_operators_on_strings).
316
317
318 advanced_eclipse_preference('DOT_PROP',dot_print_node_properties).
319 advanced_eclipse_preference('DOT_IDS',dot_print_node_ids).
320 advanced_eclipse_preference('DOT_INFO',dot_print_node_info).
321 advanced_eclipse_preference('DOT_LOOPS',dot_print_self_loops).
322 advanced_eclipse_preference('DOT_ARC_COLORS',dot_print_arc_colors).
323 advanced_eclipse_preference('DOT_FUNCTIONS',dot_print_functions).
324 advanced_eclipse_preference('DOT_ROOT',dot_print_root).
325 %advanced_eclipse_preference('DOT_LEAVES',dot_print_leaves).
326 advanced_eclipse_preference('DOT_EDGE_LABELS',dot_print_edge_labels).
327 advanced_eclipse_preference('DOT_ARGUMENTS',dot_print_action_arguments).
328 advanced_eclipse_preference('DOT_COLOR_ARC',dot_normal_arc_colour).
329 advanced_eclipse_preference('DOT_COLOR_NODE',dot_normal_node_colour).
330 advanced_eclipse_preference('DOT_COLOR_NODE_ERROR',dot_invariant_violated_node_colour).
331 advanced_eclipse_preference('DOT_COLOR_NODE_OPEN',dot_open_node_colour).
332 advanced_eclipse_preference('DOT_COLOR_NODE_GOAL',dot_goal_node_colour).
333 advanced_eclipse_preference('DOT_PEN_WIDTH',dot_node_penwidth).
334 advanced_eclipse_preference('DOT_SHOW_OP_READ_WRITES',dot_enabling_show_readwrites).
335 advanced_eclipse_preference('DOT',path_to_dot).
336 advanced_eclipse_preference('DOT_ENGINE',dot_default_engine).
337
338 advanced_eclipse_preference('TK_CUSTOM_STATE_VIEW_PADDING',tk_custom_state_viewer_padding).
339 advanced_eclipse_preference('TK_CUSTOM_STATE_VIEW_STRING_PADDING',tk_custom_state_viewer_str_padding).
340 advanced_eclipse_preference('TK_CUSTOM_STATE_VIEW_FONT_NAME',tk_custom_state_viewer_font_name).
341 advanced_eclipse_preference('TK_CUSTOM_STATE_VIEW_FONT_SIZE',tk_custom_state_viewer_font_size).
342 advanced_eclipse_preference('TK_CUSTOM_STATE_VIEW_VISIBLE',use_tk_custom_state_viewer).
343
344 advanced_eclipse_preference('BOOL_AS_PREDICATE',bool_expression_as_predicate).
345 advanced_eclipse_preference('ALLOW_UNTYPED_IDENTIFIERS',allow_untyped_identifiers).
346 advanced_eclipse_preference('ALLOW_LOCAL_OPERATION_CALLS',allow_local_operation_calls).
347 advanced_eclipse_preference('ALLOW_OPERATION_CALLS_IN_EXPRESSIONS',allow_operation_calls_in_expr).
348 advanced_eclipse_preference('ALLOW_COMPLEX_LETS',allow_let_to_reuse_introduced_ids).
349 advanced_eclipse_preference('REQUIRE_OUTPUT_ASSIGNMENT',require_operations_to_assign_all_outputs).
350 advanced_eclipse_preference('ALLOW_OUTPUT_READING',allow_operations_to_read_outputs).
351 advanced_eclipse_preference('REPL_UNICODE',repl_unicode).
352 advanced_eclipse_preference('REPL_CACHE_PARSING',repl_cache_parsing).
353 advanced_eclipse_preference('LATEX_ENCODING',latex_encoding).
354 advanced_eclipse_preference('LATEX_GREEK_IDENTIFIERS',latex_pp_greek_ids).
355 advanced_eclipse_preference('XML_ENCODING',xml_encoding).
356 advanced_eclipse_preference('BBRESULTS',view_probcli_errors_using_bbresults).
357 advanced_eclipse_preference('IGNORE_PRJ_TYPES',ignore_prj_types).
358 advanced_eclipse_preference('FILTER_UNUSED',filter_unused_constants).
359 advanced_eclipse_preference('DISPROVER_MODE',disprover_mode).
360 advanced_eclipse_preference('TRACE_UPON_ERROR',trace_upon_error).
361 advanced_eclipse_preference('NDJSON_ERROR_LOG_FILE',error_log_file).
362 advanced_eclipse_preference('STRICT_RAISE_WARNINGS',strict_raise_warnings).
363 advanced_eclipse_preference('STRICT_RAISE_ENUM_WARNINGS',strict_raise_enum_warnings).
364 advanced_eclipse_preference('STRICT_CLASH_CHECKING',clash_strict_checks).
365 %advanced_eclipse_preference('SHOW_FULL_ERROR_LOCATIONS',show_full_error_span).
366 advanced_eclipse_preference('EDITOR',path_to_text_editor_launch).
367 advanced_eclipse_preference('EDITOR_GUI',path_to_text_editor).
368 advanced_eclipse_preference('TLC_WORKERS',tlc_number_of_workers). % will be useful once we can call TLC from probcli
369 advanced_eclipse_preference('LTSMIN',path_to_ltsmin).
370
371 advanced_eclipse_preference('INTERNAL_ARGUMENT_PREFIX',prefix_internal_operation_arguments).
372 advanced_eclipse_preference('MINIMAL_TEST_SUITES',generate_minimal_nr_of_testcases).
373 advanced_eclipse_preference('ALLOW_NEW_OPERATIONS_IN_REFINEMENT',allow_new_ops_in_refinement).
374
375 advanced_eclipse_preference('PROB2_TRACE_FILE',prob2_trace_file).
376 advanced_eclipse_preference('PROB2_TRACE_FILE_UNIQUE',prob2_trace_file_gen_unique_name).
377
378
379 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_HORIZONTAL',dot_event_hierarchy_horizontal).
380 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_MCH_COL',dot_event_hierarchy_machine_colour).
381 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_REF_COL',dot_event_hierarchy_refines_colour).
382 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_NEW_COL',dot_event_hierarchy_new_event_colour).
383 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_RENAME_COL',dot_event_hierarchy_rename_event_colour).
384 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_RENAME_UNCHG_COL',dot_event_hierarchy_rename_unchanged_event_colour).
385 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_UNCHG_COL',dot_event_hierarchy_unchanged_event_colour).
386 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_GRD_STRGTH_COL',dot_event_hierarchy_grd_strengthening_event_colour).
387 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_GRD_KEEP_COL',dot_event_hierarchy_grd_keeping_event_colour).
388 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_EDGE_COL',dot_event_hierarchy_edge_colour).
389 advanced_eclipse_preference('DOT_EVENT_HIERARCHY_EXTENDS_COL',dot_event_hierarchy_extends_colour).
390 advanced_eclipse_preference('DOT_USE_CONSTANTS',dot_print_use_constants).
391 advanced_eclipse_preference('DOT_ROOT_SHAPE',dot_root_shape).
392 advanced_eclipse_preference('DOT_NORMAL_NODE_SHAPE',dot_normal_node_shape).
393 advanced_eclipse_preference('DOT_CURRENT_NODE_SHAPE',dot_current_node_shape).
394 advanced_eclipse_preference('DOT_SCOPE_LIMIT_COL',dot_scope_limit_node_colour).
395 advanced_eclipse_preference('DOT_FILL_NORMAL_NODES',dot_fill_normal_nodes).
396 advanced_eclipse_preference('DOT_NODE_FONT_SIZE',dot_node_font_size).
397 advanced_eclipse_preference('DOT_EDGE_FONT_SIZE',dot_edge_font_size).
398 advanced_eclipse_preference('DOT_COLOUR_GOAL',dot_colour_goal_nodes).
399 advanced_eclipse_preference('DOT_DEFINITIONS_USE_SUB_GRAPH',dot_definitions_use_sub_graph).
400 advanced_eclipse_preference('DOT_DEFINITIONS_SHOW_ALL',dot_definitions_show_all).
401 advanced_eclipse_preference('DOT_PROJECTION_NON_DET_COL',dot_projection_non_det_edge_colour).
402 advanced_eclipse_preference('DOT_PROJECTION_DET_COL',dot_projection_det_edge_colour).
403 advanced_eclipse_preference('DOT_PROJECTION_NON_DEF_COL',dot_projection_non_definite_edge_style).
404 advanced_eclipse_preference('DOT_PROJECTION_DEF_COL',dot_projection_definite_edge_style).
405 advanced_eclipse_preference('DOT_PROJECTION_LABEL_LIMIT',dot_projection_label_limit).
406 advanced_eclipse_preference('DOT_USE_UNICODE',dot_use_unicode).
407 advanced_eclipse_preference('DOT_PREDICATE_NODE_SHAPE',dot_predicate_node_shape).
408 advanced_eclipse_preference('DOT_EXPRESSION_NODE_SHAPE',dot_expression_node_shape).
409 advanced_eclipse_preference('DOT_VARIABLE_MODIFICATION_HIDE_ONLY_WRITTEN',dot_var_mod_hide_only_written).
410 advanced_eclipse_preference('SYNTAX_HIGHLIGHT',do_syntax_highlighting).
411
412
413 advanced_eclipse_preference('MC_DC_Level',mc_dc_default_level).
414
415
416 % obsolete
417 obsolete_eclipse_preference('EXPAND_CLOSURES_FOR_STATE').
418 obsolete_eclipse_preference('BPARSER').
419 obsolete_eclipse_preference('DOT_LEAVES').
420 obsolete_eclipse_preference('SFDP').
421 obsolete_eclipse_preference('SHOW_FULL_ERROR_LOCATIONS').
422 obsolete_eclipse_preference('WARN_WHEN_EXPANDING_INFINITE_CLOSURES').
423
424
425
426 print_eclipse_prefs :- findall(X,eclipse_preference(X,_),Xs), sort(Xs,SXs),
427 member(X,SXs),
428 eclipse_preference(X,P),
429 preference_val_type(P,VT),
430 preference_description(P,Desc),
431 preference(P,Val),
432 preference_default_value(P,Def),
433 (Def=Val -> Info = '' ; Info = ' *'),
434 format(' ~w = ~w~w : ~w ==> ~w~n',[X,Val,Info,VT,Desc]),
435 fail.
436 print_eclipse_prefs :- preference_group_description(Group,Desc),
437 findall(Setting,preference_group_val(Group,Setting,_,_),S),
438 sort(S,Sorted),
439 format(' * PREFERENCE GROUP ~w : SETTINGS ~w : ~w~n',[Group,Sorted,Desc]),
440 fail.
441 print_eclipse_prefs.
442
443
444 :- dynamic preference/2.
445
446 % add clause in case init_preferences forgotten
447 preference(A,B) :- format(user_error,'Preferences not initalised (~w,~w)',[A,B]),trace,
448 init_preferences,!, preference(A,B).
449 %add_internal_error('Preferences not initialised: ',preference(A,B)),fail.
450
451
452 % ------------------
453
454 preference_default_value(maxint,3). % 2147483647
455 preference_default_value(minint,-1). %-2147483648
456 preference_default_value(number_animated_abstractions, 20).
457 preference_default_value(globalsets_fdrange,2).
458 preference_default_value(do_invariant_checking,true).
459 %preference_default_value(do_full_invariant_checking,true).
460 %preference_default_value(use_new_kernel,false).
461 preference_default_value(find_abort_values,false).
462 preference_default_value(raise_abort_immediately,false).
463 preference_default_value(treat_outermost_pre_as_select,true).
464 preference_default_value(require_operations_to_assign_all_outputs,false).
465 preference_default_value(allow_operations_to_read_outputs,false).
466 preference_default_value(allow_simultaneous_assignments,false).
467 preference_default_value(cspm_animate_all_processes_without_arguments,false).
468 preference_default_value(cspm_animate_all_processes,false).
469 %preference_default_value(cspm_display_inout,false).
470 preference_default_value(cspm_detailed_animation,false).
471 preference_default_value(cspm_strip_source_location,false).
472 %preference_default_value(csp_event_visible_to_user,false).
473 %preference_default_value(cspm_allow_incomplete_records,false).
474 %preference_default_value(findOnlyOneSol,false).
475 preference_default_value(maxNrOfInitialisations,4).
476 preference_default_value(randomisedRestartInitalisations,false).
477 preference_default_value(maxNrOfEnablingsPerOperation,10).
478 preference_default_value(time_out,2500).
479 preference_default_value(debug_time_out_factor,5).
480 %preference_default_value(use_large_jvm_for_parser,false).
481 preference_default_value(show_initialisation_arguments,true).
482 preference_default_value(deterministic_trace_replay,false).
483 %preference_default_value(animate_skip_operations,true).
484 preference_default_value(show_eventb_any_arguments,false).
485 preference_default_value(convert_comprehension_sets_into_closures,false). /* <------------ was true */
486 preference_default_value(use_clpfd_solver,true). % Default was changed from false to true on November 28 2013; commit d26b1bf1edeb29d630cf798c0773bfa1ba71219b
487 preference_default_value(use_chr_solver,false).
488 preference_default_value(data_validation_mode,false).
489 preference_default_value(use_smt_mode,false).
490 preference_default_value(solver_strength,0).
491 preference_default_value(remove_implied_constraints,false).
492 preference_default_value(lift_existential_quantifiers,false).
493 preference_default_value(use_common_subexpression_elimination,false). % CSE
494 preference_default_value(use_common_subexpression_also_for_predicates,true). % CSE_PRED
495 preference_default_value(use_common_subexpression_also_for_substitutions,false). % CSE_SUBST
496 preference_default_value(use_common_subexpression_wd_only,false). % CSE_WD_ONLY
497 preference_default_value(normalize_ast,false). % NORMALIZE_AST
498 preference_default_value(optimize_ast,true). % OPTIMIZE_AST
499 preference_default_value(useless_code_elimination,false). % see test 1660
500 preference_default_value(compile_while_body,true). % COMPILE_WHILE
501 preference_default_value(detect_lambdas,false). % DETECT_LAMBDAS
502 preference_default_value(ltsmin_guard_splitting,false).
503 preference_default_value(ltsmin_do_not_evaluate_top_level_guards,false).
504 preference_default_value(fail_if_clpfd_timeout,false).
505 %preference_default_value(allow_recursive_closures,false).
506 preference_default_value(use_static_ordering,false).
507 preference_default_value(use_state_packing,false).
508 preference_default_value(provide_trace_information,false).
509 preference_default_value(performance_monitoring_on,false).
510 preference_default_value(partition_predicates,true).
511 preference_default_value(partition_predicates_inline_equalities,true).
512 preference_default_value(use_closure_expansion_memoization,false).
513 preference_default_value(use_function_memoization,false).
514 preference_default_value(allow_incomplete_partial_setup_constants,false).
515 preference_default_value(re_execute_operations_with_side_effects,false).
516 preference_default_value(warn_if_definition_hides_variable,true).
517 preference_default_value(type_check_definitions,false). % can consume time, see test 778; and produces error messages for some tests
518 %preference_default_value(warn_when_expanding_infinite_closures,5).
519 preference_default_value(allow_enumeration_of_infinite_types,true).
520 preference_default_value(strict_raise_warnings,false). % Default false as add_closure_warning otherwise will e.g. then be raised as errors; this can confuse predicate_evaluator into returning a not-well-defined result or everybody else relying ErrOcc arg of exit_error_scope
521 preference_default_value(strict_raise_enum_warnings,false).
522 preference_default_value(clash_strict_checks,false).
523 preference_default_value(perform_stricter_static_checks,false).
524 preference_default_value(ignore_prj_types,false).
525 %preference_default_value(never_convert_closures_into_explicit_form,false).
526 %preference_default_value(convert_types_into_closures,true).
527 %preference_default_value(convert_closures_into_explicit_form_for_store,true). % <--- maybe remove preference
528 %preference_default_value(allow_empty_global_sets,false).
529 %preference_default_value(test_case_gen_stop_at_first_error,false).
530 preference_default_value(prefix_internal_operation_arguments,'$none'). %all operations arguments are external and shown in testcases
531 preference_default_value(generate_minimal_nr_of_testcases,true).
532 preference_default_value(use_tk_custom_state_viewer,true).
533 preference_default_value(tk_custom_state_viewer_font_name,'').
534 preference_default_value(tk_custom_state_viewer_font_size,0).
535 preference_default_value(tk_custom_state_viewer_padding,0).
536 preference_default_value(tk_custom_state_viewer_str_padding,10).
537 preference_default_value(use_small_window,false).
538 preference_default_value(tk_show_source_pane,true).
539 preference_default_value(ignore_hash_collisions,false).
540 preference_default_value(forget_state_space,false).
541 preference_default_value(store_only_one_incoming_transition,false).
542 %preference_default_value(enable_permutation_reducation,false).
543 %preference_default_value(use_symmetry_marker_hash,false).
544 %preference_default_value(enable_canonical_symmetry,false).
545 %preference_default_value(use_nauty_symmetry_reduction,false).
546 preference_default_value(symmetry_mode,off).
547 preference_default_value(use_static_symmetry_detection,true).
548 preference_default_value(bool_expression_as_predicate,false).
549 preference_default_value(allow_untyped_identifiers,false).
550 preference_default_value(repl_unicode,false).
551 preference_default_value(repl_cache_parsing,false).
552 preference_default_value(latex_encoding,auto).
553 preference_default_value(latex_pp_greek_ids,false).
554 preference_default_value(xml_encoding,auto).
555 preference_default_value(view_probcli_errors_using_bbresults,false).
556 preference_default_value(eventtrace,false).
557 preference_default_value(store_event_transinfo,false).
558 preference_default_value(try_kodkod_on_load,false).
559 preference_default_value(kodkod_for_components,true).
560 preference_default_value(kodkod_raise_warnings,false).
561 preference_default_value(kodkod_max_nr_solutions,22).
562 preference_default_value(kodkod_symmetry_level,0).
563 preference_default_value(kodkod_sat_solver,sat4j).
564 preference_default_value(smt_supported_interpreter,false).
565 preference_default_value(use_record_construction,true). % was false
566 preference_default_value(seen_machines_included,false).
567 preference_default_value(allow_sequence_operators_on_strings,true).
568
569 preference_default_value(dot_print_edge_labels,true).
570 preference_default_value(dot_print_action_arguments,true).
571 preference_default_value(dot_print_functions,false).
572 preference_default_value(dot_print_self_loops,true).
573 preference_default_value(dot_print_arc_colors,true).
574 preference_default_value(dot_print_root,true).
575 %preference_default_value(dot_print_leaves,true).
576 preference_default_value(dot_print_node_ids,false).
577 preference_default_value(dot_print_use_constants,true).
578 preference_default_value(dot_print_node_info,true).
579 preference_default_value(dot_use_ps_viewer,false).
580 preference_default_value(path_to_dot,Path) :- try_get_program_path('dot',Path).
581 preference_default_value(dot_default_engine,dot).
582 preference_default_value(path_to_dotty,VIEWER) :- (possible_program(dot_viewer,E) -> VIEWER=E ; VIEWER ='dotty').
583 %preference_default_value(path_to_dotty,'/Applications/OmniGraffle/OmniGraffle.app/Contents/MacOS/OmniGraffle').
584 preference_default_value(path_to_ltsmin,'./lib/'). % Path to where we can find prob2lts min commands like prob2lts-sym; default means we look in lib
585 preference_default_value(path_to_ps_viewer,VIEWER) :-
586 (possible_program(ps_viewer,E) -> VIEWER=E ; VIEWER ='gv').
587 %preference_default_value(path_to_ps_viewer,'open -a /Applications/Preview.app') :- host_platform(darwin).
588 %preference_default_value(path_to_ps_viewer,'C:/Program Files/Ghostgum/gsview/gsview32') :- host_platform(windows).
589 %preference_default_value(path_to_ps_viewer,'gv') :- host_platform(linux) ; host_platform(unknown).
590 %preference_default_value(path_to_ps_viewer,'open -a /Applications/MacGhostViewX_Folder/MacGhostViewX.app').
591 preference_default_value(dot_root_shape,invtriangle).
592 preference_default_value(dot_node_penwidth,2).
593 preference_default_value(dot_normal_node_shape,box). % egg,ellipse
594 preference_default_value(dot_current_node_shape,doubleoctagon).
595 preference_default_value(dot_open_node_colour,'#F4E3C1'). %'#E88C59' '#C96D37'
596 preference_default_value(dot_scope_limit_node_colour,gray).
597 preference_default_value(dot_normal_node_colour,'#99BF38').
598 preference_default_value(dot_invariant_violated_node_colour,'#FF3800'). %'#FF4409'
599 preference_default_value(dot_fill_normal_nodes,false).
600 preference_default_value(dot_normal_arc_colour,'#006391').
601 preference_default_value(dot_node_font_size,12).
602 preference_default_value(dot_edge_font_size,12).
603 preference_default_value(dot_colour_goal_nodes,true).
604 preference_default_value(dot_goal_node_colour,orange).
605 preference_default_value(dot_print_node_properties,false).
606 preference_default_value(dot_counterexample_node_colour,brown).
607 preference_default_value(dot_counterexample_op_colour,brown).
608 preference_default_value(dot_hierarchy_max_ids,0).
609
610 preference_default_value(dot_event_hierarchy_horizontal,true).
611 preference_default_value(dot_event_hierarchy_machine_colour,gray95).
612 preference_default_value(dot_event_hierarchy_refines_colour,'#C0A060'). % Dark Khaki; see http://www.gpeters.com/color/color-schemes.php?search_term=Art+Nouveau
613 preference_default_value(dot_event_hierarchy_new_event_colour,'#C06040'). % Coral '#C08040'). % Peru
614 preference_default_value(dot_event_hierarchy_rename_event_colour,'#E0E0A0'). % Pale Goldenrod
615 preference_default_value(dot_event_hierarchy_rename_unchanged_event_colour,'#E0F0E0'). % Honeydew
616 preference_default_value(dot_event_hierarchy_unchanged_event_colour,gray92).
617 preference_default_value(dot_event_hierarchy_grd_strengthening_event_colour,gray83).
618 preference_default_value(dot_event_hierarchy_grd_keeping_event_colour,'#E0C080'). % Burlywood
619 preference_default_value(dot_event_hierarchy_edge_colour,'#806040'). % Sienna
620 preference_default_value(dot_event_hierarchy_extends_colour,gray50).
621
622 preference_default_value(dot_projection_non_det_edge_colour,'#806040'). % Sienna; alternative :#A06040 Light Salmon
623 preference_default_value(dot_projection_det_edge_colour,black).
624 preference_default_value(dot_projection_non_definite_edge_style,dashed).
625 preference_default_value(dot_projection_definite_edge_style,solid).
626 preference_default_value(dot_projection_label_limit,75).
627 preference_default_value(dot_use_unicode,true).
628 preference_default_value(dot_predicate_node_shape,rect).
629 preference_default_value(dot_expression_node_shape,record).
630 preference_default_value(dot_var_mod_hide_only_written,false).
631
632
633 preference_default_value(mc_dc_default_level,2).
634
635 preference_default_value(dot_enabling_show_readwrites,true).
636
637 preference_default_value(dot_definitions_use_sub_graph,true).
638 preference_default_value(dot_definitions_show_all,false).
639 preference_default_value(dot_state_graph_decompose,true).
640
641 preference_default_value(font_size,'Monaco 12') :- host_platform(darwin).
642 % Monaco looks better than Courier on Mac, Consolas
643 % Note: ctext seems to use a non-monospaced font for TkFixedFont
644 preference_default_value(font_size,'TkFixedFont 12') :- host_platform(X), X\==darwin. % alternative: Courier, Monaco, Consolas
645 preference_default_value(font_name,'Monaco') :- host_platform(darwin).
646 preference_default_value(font_name,'TkFixedFont') :- host_platform(X), X\==darwin. % alternative: Courier, Monaco
647 preference_default_value(font_size_only,12).
648 preference_default_value(use_font_size_for_columns,false).
649 preference_default_value(allow_source_code_editing,true).
650 preference_default_value(show_line_numbers,false).
651 %preference_default_value(show_full_error_span,true).
652 preference_default_value(highlight_brackets,true).
653 preference_default_value(highlight_current_line,true).
654 preference_default_value(ask_when_content_changed,false).
655 preference_default_value(user_not_beginner,false).
656 preference_default_value(user_is_an_expert_with_accessto_source_distribution,false).
657 %preference_default_value(default_to_runtime_type_checking_on_startup_for_expert,false).
658 preference_default_value(path_to_probe,'C:/probe/probe-1.30-windows/probe.exe') :- host_platform(windows).
659 preference_default_value(path_to_probe,'more') :- host_platform(X), X\==windows.
660 preference_default_value(path_to_spin,'xspin').
661 preference_default_value(path_to_cspm,'/usr/bin/cspm').
662 preference_default_value(path_to_text_editor,EDITOR) :-
663 (possible_program(editor,E) -> EDITOR=E ; EDITOR ='').
664 preference_default_value(path_to_text_editor_launch,EDITOR) :-
665 (possible_program(editor_launch,E) -> EDITOR=E ; EDITOR ='vi').
666 %preference_default_value(path_to_fuzz,'fuzz').
667 preference_default_value(path_to_fdr,'fdr2').
668 preference_default_value(path_to_csp_typechecker,FDR3) :-
669 (possible_program(fdr3,E) -> FDR3=E ; FDR3 ='refines').
670 preference_default_value(path_to_bcomp,'bcomp').
671 preference_default_value(path_to_atb_krt,Default) :- try_get_program_path('krt',KRT),!,Default=KRT.
672 preference_default_value(path_to_java,Default) :- try_get_program_path('java',JJ),!,Default=JJ.
673 preference_default_value(try_atb_provers,false).
674 preference_default_value(symbolic_mc_try_other_solvers,false).
675 preference_default_value(ltl_to_ba_tool,'lib/ltl2ba').
676 preference_default_value(prob2_trace_file,''). % no tracing
677 preference_default_value(prob2_trace_file_gen_unique_name,false).
678
679
680 preference_default_value(number_of_recent_documents,25).
681 preference_default_value(number_of_searched_patterns,9).
682 preference_default_value(number_of_replaced_patterns,9).
683 preference_default_value(number_of_eval_history_elements,50).
684 preference_default_value(number_of_eval_csp_history_elements,50).
685 preference_default_value(number_of_checked_ltl_formulas,20).
686
687 preference_default_value(do_syntax_highlighting,true).
688 preference_default_value(sh_type_colour,darkred).
689 preference_default_value(sh_logical_colour,tomato).
690 preference_default_value(sh_assignments_colour,darkslateblue).
691 preference_default_value(sh_operators,'#5883be').
692 preference_default_value(sh_top_level_keywords,blue).
693 preference_default_value(sh_control_keywords,darkviolet).
694 %preference_default_value(sh_includes_keywords,darkslateblue).
695 preference_default_value(sh_comments,'#784e50').
696 preference_default_value(sh_pragmas,'#5b5b5b').
697 preference_default_value(sh_unsupported_background,yellow).
698
699 preference_default_value(expand_forall_upto,100).
700 preference_default_value(double_evaluation_when_analysing,true).
701 preference_default_value(expand_avl_upto,100).
702 preference_default_value(show_function_tuples_in_property,true).
703 preference_default_value(bugly_pp_scrambling,false).
704 preference_default_value(pp_propositional_logic_mode,false).
705
706 preference_default_value(allow_new_ops_in_refinement,false).
707 preference_default_value(allow_local_operation_calls,false).
708 preference_default_value(allow_operation_calls_in_expr,false).
709 preference_default_value(allow_let_to_reuse_introduced_ids,false).
710 preference_default_value(use_po,true).
711 preference_default_value(try_operation_reuse,false).
712 preference_default_value(randomise_operation_order,false).
713 preference_default_value(randomise_enumeration_order,false).
714 preference_default_value(set_rand,false).
715 preference_default_value(rand_seed,2342452).
716
717 preference_default_value(use_cbc_analysis,true).
718 preference_default_value(timeout_cbc_analysis,300).
719
720 preference_default_value(use_scope_predicate,true).
721 preference_default_value(use_ignore_pragmas,false).
722
723 preference_default_value(pge,off).
724 preference_default_value(por,off).
725 preference_default_value(por_heur,random).
726 preference_default_value(use_por_for_ltl,false).
727 preference_default_value(use_safety_ltl_model_checker,false).
728
729 preference_default_value(enable_graph,false).
730 preference_default_value(enable_graph_depth,1).
731
732 preference_default_value(dependency_enable_predicates,false).
733
734 preference_default_value(filter_unused_constants,false).
735 preference_default_value(translate_force_all_typing_infos,false).
736 preference_default_value(translate_print_typing_infos,false).
737 preference_default_value(translate_print_frozen_infos,false).
738 preference_default_value(translate_ids_to_parseable_format,false).
739 preference_default_value(translate_suppress_rodin_positions_flag,false).
740 preference_default_value(translate_print_all_sequences,false).
741 preference_default_value(translate_print_cs_style_sequences,false).
742
743 /* Disprover mode - deactivates some optimizations only valid for animation */
744 preference_default_value(disprover_mode,false).
745 preference_default_value(trace_upon_error,false).
746 preference_default_value(error_log_file,'').
747 preference_default_value(tlc_number_of_workers,2).
748 preference_default_value(unsat_core_algorithm,divide_and_conquer).
749
750 preference_default_value(port, 5000).
751 preference_default_value(ip, localhost).
752 preference_default_value(max_states, 0).
753 preference_default_value(tmpdir, '/tmp/').
754 preference_default_value(logdir, './distb-logs/').
755 preference_default_value(proxynumber, 0).
756 preference_default_value(queue_threshold, 20). /* TODO: this is not used an implemented in the proxy (pk, 12.01.18) */
757 preference_default_value(hash_cycle, 25).
758
759 preference_default_value(machines_path,Dir) :-
760 catch(absolute_file_name(examples('.'),Dir),_,Dir='.').
761
762
763
764 :- use_module(library(file_systems),[file_exists/1,directory_exists/1]).
765 try_get_program_path(Name,Path) :-
766 (possible_program(Name,R) -> Path=R
767 ; Path=Name). % hope in PATH
768 ?possible_program(Type,E) :- host_platform(P),possible_program_aux(Type,P,E),
769 (file_exists(E) -> true ; P=darwin, directory_exists(E)).
770
771 :-use_module(library(system),[environ/2]).
772 possible_program_aux(editor_launch,darwin,'/usr/local/bin/bbedit').
773 possible_program_aux(editor_launch,darwin,'/usr/local/bin/edit'). % Text Wrangler
774 possible_program_aux(editor_launch,_,PATH) :- environ('EDITOR',PATH).
775 possible_program_aux(editor_launch,darwin,'/usr/local/bin/atom').
776 possible_program_aux(editor_launch,linux,'/usr/local/bin/atom').
777 possible_program_aux(editor_launch,linux,'/usr/bin/kwrite').
778 possible_program_aux(editor_launch,linux,'/usr/bin/gedit').
779 possible_program_aux(editor_launch,linux,'/usr/bin/vim').
780 possible_program_aux(editor,darwin,'/Applications/BBEdit.app').
781 possible_program_aux(editor,darwin,'/Applications/TextWrangler.app').
782 possible_program_aux(editor,darwin,'/Applications/Atom.app').
783 possible_program_aux(editor,darwin,'/Applications/Sublime Text 2.app').
784 possible_program_aux(editor,darwin,'/Applications/TextMate.app').
785 possible_program_aux(editor,darwin,'/Applications/TextEdit.app').
786 possible_program_aux(editor,_,PATH) :- environ('EDITOR',PATH). % this is the Path in the Terminal; maybe the user wants other programs for the Tcl/Tk GUI; hence this is the last lookup
787 possible_program_aux(ps_viewer,darwin,'/Applications/Preview.app') :- prob_application_type(tcltk). % probcli cannot use open -a yet.
788 possible_program_aux(ps_viewer,darwin,'/usr/bin/open').
789 possible_program_aux(ps_viewer,windows,'C:/Program Files/Ghostgum/gsview/gsview32').
790 possible_program_aux(dot_viewer,darwin,'/Applications/Graphviz.app') :- prob_application_type(tcltk). % probcli cannot use open -a yet
791 possible_program_aux(dot_viewer,darwin,'/usr/bin/open').
792 possible_program_aux(dot_viewer,windows,'C:/Program Files/Graphviz2.38/bin/dotty.exe').
793 possible_program_aux(dot_viewer,windows,'C:/Program Files (x86)/Graphviz2.38/bin/dotty.exe').
794 possible_program_aux(krt,darwin,'/Applications/AtelierB.app/AB/bbin/macosx/krt').
795 possible_program_aux(java,windows,'C:/Program Files/Java/jre7/bin/java.exe').
796 possible_program_aux(java,P,'/usr/bin/java') :- unix(P).
797 possible_program_aux(fdr3,darwin,'/Applications/FDR3.app/Contents/MacOS/refines').
798 possible_program_aux(fdr3,darwin,'/Applications/FDR4.app/Contents/MacOS/refines').
799 %possible_program_aux(sfdp,P,'/usr/local/bin/sfdp') :- unix(P).
800 possible_program_aux(dot,P,'/usr/local/bin/dot') :- unix(P).
801 possible_program_aux(dot,P,'/opt/local/bin/dot') :- unix(P).
802
803 unix(darwin).
804 unix(linux).
805
806 /* ------------------------- */
807
808 % now in basic_tests.pl
809 %:- assert_must_succeed( \+((preference_description(P,_D),\+preference_default_value(P,_Val)))).
810 %:- assert_must_succeed( \+((preference_default_value(P,_D), \+preference_description(P,_Val)))).
811 preference_description(maxNrOfInitialisations,'Max Number of Initialisations and Constant-Setups Computed').
812 preference_description(randomisedRestartInitalisations,'Use Randomised Restart for Initialisation and Constant Setup (only makes sense if RANDOMISE_ENUMERATION_ORDER is set; for an operation OP use MAX_OPERATIONS_OP == -Nr)').
813 preference_description(maxNrOfEnablingsPerOperation,'Max Number of Enablings per Operation Computed').
814 preference_description(time_out,'Time out for computing enabled transitions (in ms, is multiplied by a factor for other computations, value 2147483646 turns time outs off)').
815 preference_description(globalsets_fdrange,'Size of unspecified deferred sets in SETS section').
816 preference_description(maxint,'value of MAXINT, used for expressions such as xx::NAT (2147483647 for 4 byte ints)').
817 preference_description(minint,'value of MININT, used for expressions such as xx::INT (-2147483648 for 4 byte ints)'). % Atelier-B uses 2147483647
818 preference_description(number_animated_abstractions,'How many levels of refined models are animated by default').
819 %preference_description(findOnlyOneSol,'Find only one solution per Operation or Initialisation').
820 preference_description(debug_time_out_factor,'Debug Properties: Multiplying Factor for Timeout').
821 %preference_description(use_large_jvm_for_parser,'Use large Heap and Stack size for Java Parser').
822 preference_description(do_invariant_checking,'Check invariant while animating and model checking').
823 %preference_description(do_neginvariant_checking,'Check negation of invariant').
824 %preference_description(do_full_invariant_checking,'Check types when checking invariant').
825 %preference_description(use_new_kernel,'Use new Kernel (only some basic operations supported, only fore PRE and INITs)').
826 preference_description(find_abort_values,'Try more aggressively to detect not well-defined expressions (e.g. applying function outside of domain), may slow down animator; possible values false,true,full').
827 preference_description(raise_abort_immediately,'Raise potential well-definedness issues immediately (may lead to false spurious alarms but can allow to better detect WD issues; possible values false,true,full)').
828 preference_description(cspm_animate_all_processes,'Animate all CSP-M processes (also processes with arguments)').
829 preference_description(cspm_animate_all_processes_without_arguments,'Animate all CSP-M processes without arguments (not just MAIN)').
830 %preference_description(cspm_display_inout,'Display unsynchronised inputs/outputs as ?/!').
831 preference_description(cspm_detailed_animation,'Provide more fine-grained source-location animation for CSP (can slow model checking down)').
832 preference_description(cspm_strip_source_location,'Strip CSP source-location information (for RHS of processes, except for internal choice)').
833 %preference_description(csp_event_visible_to_user,'Return the CSP event as visible event to the user (option only relevant for models in \'CSP || B\' mode).').
834 %preference_description(cspm_allow_incomplete_records,'Allow construction of incomplete records (e.g., for Casper files)').
835 preference_description(use_clpfd_solver,'Use CLP(FD) solver for B integers (restricts range to -2^28..2^28-1 on 32 bit machines)').
836 preference_description(use_chr_solver,'Use CHR based solver. Should speed up detection of unsolvable predicates, but might slow down solving in general.').
837 preference_description(data_validation_mode,'Assume everything can be computed without constraint solving.').
838 preference_description(convert_comprehension_sets_into_closures,'Lazy expansion of lambdas and set comprehensions').
839 preference_description(use_smt_mode,'Enable SMT-Mode (aggressive treatment of : and /: inside predicates)'). % will be set automatically in CBC mode; should normally not be set by user
840 preference_description(solver_strength,'Strength of certain Solver propagations (0 is default)').
841 preference_description(remove_implied_constraints,'Remove unnecessary constraints implied by other constraints').
842 preference_description(lift_existential_quantifiers,'Lift existential quantifiers, i.e., treat existentially quantified variables like ordinary variables').
843 preference_description(use_common_subexpression_elimination,'Enable CSE (Common Subexpression Elimination)').
844 preference_description(use_common_subexpression_also_for_predicates,'Apply CSE (if enabled) also to predicates').
845 preference_description(use_common_subexpression_also_for_substitutions,'Apply CSE (if enabled) also to substitutions (operation/event bodies) [EXPERIMENTAL]').
846 preference_description(use_common_subexpression_wd_only,'Apply CSE (if enabled) only to well-defined sub-formulas').
847 preference_description(normalize_ast,'Normalize AST before passing to ProB kernel (rewrites many B predicates into simpler form)').
848 preference_description(optimize_ast,'Optimize AST (Abstract Syntax Tree) before passing to ProB kernel (rewrites many B predicates into more efficient form)').
849 preference_description(useless_code_elimination,'Useless Code Elimination: try and find useless statements which have no influence on the result of an operation.').
850 preference_description(compile_while_body,'Compile bodies of WHILE loops if variant large').
851 preference_description(detect_lambdas,'Detect set comprehensions which can be rewritten into lambdas.').
852 preference_description(ltsmin_guard_splitting,'Detect GUARDS of operations which do not depend on parameters (for LTSMin); these guards will not be evaluated by the interpreter when ltsmin_do_not_evaluate_top_level_guards is true').
853 preference_description(ltsmin_do_not_evaluate_top_level_guards,'Do not evaluate top-level GUARDS detected when ltsmin_guard_splitting is true').
854 preference_description(fail_if_clpfd_timeout,'Assume failure if posting a CLP(FD) constraint times-out').
855 %preference_description(allow_recursive_closures,'Lazy expansion of *Recursive* set Comprehensions and lambdas').
856 preference_description(use_static_ordering,'Use static ordering to enumerate constants which occur in most PROPERTIES first').
857 preference_description(use_state_packing,'Use more aggressive COMPRESSION when storing states').
858 preference_description(provide_trace_information,'Provide various tracing information on the terminal/console.').
859 preference_description(performance_monitoring_on,'Provide performance monitoring information on the terminal/console.').
860 preference_description(partition_predicates,'Partition predicates (PROPERTIES) into components').
861 preference_description(partition_predicates_inline_equalities,'Inline equalities when partitioning into components').
862 preference_description(use_closure_expansion_memoization,'MEMOize expansions of set comprehensions and lambda abstractions.').
863 preference_description(use_function_memoization,'MEMOIZE function applications of all functions defined in ABSTRACT_CONSTANTS (even if not marked with /*@desc memo */).').
864 preference_description(allow_incomplete_partial_setup_constants,'Allow ProB to proceed even if only part of the CONSTANTS have been found.').
865 preference_description(re_execute_operations_with_side_effects,'Re-execute operations with side-effects in the animator (only works for the forward button at the moment).').
866 preference_description(warn_if_definition_hides_variable,'Warn if a DEFINITION hides a variable with the same name').
867 preference_description(type_check_definitions,'Type check all visible DEFINITIONs (not just used ones)').
868 %preference_description(warn_when_expanding_infinite_closures,'Warn when expanding infinite closures if MAXINT larger than: ').
869 preference_description(allow_enumeration_of_infinite_types,'Allow enumeration of infinite types').
870 preference_description(strict_raise_warnings,'Treat warnings as errors (Warning: can generate spurious NOT-WELL-DEFINED messages).').
871 preference_description(strict_raise_enum_warnings,'Treat ENUMERATION warnings (aka VIRTUAL TIME-OUTS) as errors (Warning: can generate spurious NOT-WELL-DEFINED messages).').
872 preference_description(clash_strict_checks,'Do a stricter checking for name CLASHES in B machines').
873 preference_description(perform_stricter_static_checks,'Perform stricter additional static checks on formulas (automatically set by ProB).').
874 preference_description(ignore_prj_types,'Ignore types of prj1 and prj2 (i.e., prj1({1},{1})(2,3) is considered well-defined').
875
876 %preference_description(never_convert_closures_into_explicit_form,'Never convert closures back into explicit form (only use for debugging !)').
877 %preference_description(convert_types_into_closures,'Lazy expansion of type expressions (POW,-->,...)').
878 %preference_description(convert_closures_into_explicit_form_for_store,'Convert lazy form back into explicit form for Variables, Constants, Operation Arguments').
879 %preference_description(allow_empty_global_sets,'Allow empty global SETs').
880 %preference_description(test_case_gen_stop_at_first_error,'Stop at first error in test case generation').
881 preference_description(prefix_internal_operation_arguments,'Prefix of internal operation arguments (these are not included in test cases)').
882 preference_description(generate_minimal_nr_of_testcases,'Generate minimal suite of mcm testcases (and not one per event)').
883 preference_description(use_tk_custom_state_viewer,'Use custom Tk viewer to represent state of B Machine').
884 preference_description(tk_custom_state_viewer_font_name,'Font for animation strings (if empty, the editor font will be used)').
885 preference_description(tk_custom_state_viewer_font_size,'Font size for animation strings (if 0, the editor font size will be used)').
886 preference_description(tk_custom_state_viewer_padding,'Padding (in pixels) between images of custom TK state viewer').
887 preference_description(tk_custom_state_viewer_str_padding,'Padding (in pixels) between strings of custom TK state viewer').
888 preference_description(use_small_window,'Use a small main window for ProB (useful on small screens)').
889 preference_description(tk_show_source_pane,'Show the B Source Code').
890 preference_description(ignore_hash_collisions,'Ignore Hash Collisions (if true not all states may be computed, visited states are not memorised !)').
891 preference_description(forget_state_space,'Do not remember state space (mainly useful in conjunction with IGNORE_HASH_COLLISIONS)').
892 preference_description(store_only_one_incoming_transition,'Only store one incoming transition/operation per reached state. Can be used when model checking of safety properties (invariants, deadlocks, assertions). Do not use for LTL model checking, deadlock checking or animation.').
893 %preference_description(enable_permutation_reducation,'Enable Permutation Flooding').
894 %preference_description(use_symmetry_marker_hash,'Use Symmetry Hash Marker').
895 %preference_description(enable_canonical_symmetry,'Enable Symmetry Reduction by Canonical Form Computation').
896 %preference_description(use_nauty_symmetry_reduction,'Use Nauty ((c) McKay) C Library for Symmetry Reduction with Canonical Form Computation').
897 preference_description(symmetry_mode,'Symmetry Mode: off,flood,canon,nauty,hash').
898 preference_description(use_static_symmetry_detection,'Detect symmetries in forall/exists and in PROPERTIES for deferred sets').
899 preference_description(bool_expression_as_predicate,'Extended Predicate Syntax (allow p&q as syntactic sugar for (p=TRUE) & (q=TRUE), only possible in REPL and DEPRECATED)' ).
900 preference_description(allow_untyped_identifiers,'Allow UNTYPED identifiers (they will be assigned new deferred sets as type)' ).
901 preference_description(repl_unicode,'Use UNICODE in REPL and editing window').
902 preference_description(repl_cache_parsing,'Cache parsing in REPL (useful if same formula gets parsed multiple times, e.g., for Latex processing)').
903 preference_description(latex_encoding,'Encoding used for Latex processing with -latex (auto,ISO-8859-1,ISO-8859-2,UTF-8,UTF-16,...)').
904 preference_description(latex_pp_greek_ids,'Prety-print Greek identifiers (Sigma,...) in Latex mode').
905 preference_description(xml_encoding,'Encoding used for XML processing, e.g., with -logxml (auto,ISO-8859-1,ISO-8859-2,UTF-8,UTF-16,...)').
906 preference_description(view_probcli_errors_using_bbresults,'Show probcli errors using the BBEdit (11.6 or newer) bbresults command').
907
908 preference_description(eventtrace,'Store trace for each event (may cause large memory requirement)').
909 preference_description(store_event_transinfo,'Store Event-B Event-Info for each event (may cause larger memory requirement)').
910 preference_description(try_kodkod_on_load,'Apply translation to KODKOD on PROPERTIES when loading machines').
911 preference_description(kodkod_for_components,'Translate only complete components to KODKOD').
912 preference_description(kodkod_raise_warnings,'Raise WARNING when component or predicate cannot be translated to KODKOD').
913 preference_description(kodkod_max_nr_solutions,'Maximum number of solutions computed and sent by KODKOD per batch.').
914 preference_description(kodkod_symmetry_level,'Symmetry level for Kodkod (0=off, 20=on), the higher this value, the more symmetries will be broken, you should probably only turn this on when MAX_INITIALISATIONS is set to 1').
915 % from Kodkod API: If a non-symmetric solver is chosen for this.solver, this value controls the maximum length of the generated lex-leader symmetry breaking predicate. In general, the higher this value, the more symmetries will be broken. But setting the value too high may have the opposite effect and slow down the solving. The default value for this property is 20.
916 preference_description(kodkod_sat_solver,'SAT solver used for Kodkod (sat4j, minisat, lingeling, glucose)').
917 preference_description(smt_supported_interpreter,'Use Z3 / CVC4 for predicates inside the B interpreter').
918 preference_description(use_record_construction,'Records: Check if axioms/properties describe a record pattern').
919 preference_description(seen_machines_included,'Seen/used machines are included (no operations available) instead of extended').
920 preference_description(allow_sequence_operators_on_strings,'Allow sequence operators (^) to be applied to STRINGs').
921 preference_description(show_eventb_any_arguments,'Show top-level ANY variable values of B Operations without parameters as parameters').
922 preference_description(show_initialisation_arguments,'Show effect of initialisation and setup constants in operation name'). % in case of non-deterministic assignments for INIT: only those are shown
923 %preference_description(animate_skip_operations,'Animate operations which are skip or PRE C THEN skip').
924 preference_description(deterministic_trace_replay,'Replay Traces without backtracking (to reduce memory consumption)').
925 preference_description(treat_outermost_pre_as_select,'Treat outermost PRE as SELECT').
926 preference_description(require_operations_to_assign_all_outputs,'Require operations to assign to all outputs').
927 preference_description(allow_operations_to_read_outputs,'Allow B operations to read outputs; output values will be initialised to default value in animator.').
928 preference_description(allow_simultaneous_assignments,'Allow B operations to assign multiple times to same variable (ASM style)').
929
930 %preference_description(check_prolog_b_ast,'Check the abstract syntax tree for B machines').
931 preference_description(dot_print_edge_labels,'Show Edge Labels (Operation Names)').
932 preference_description(dot_print_action_arguments,'Print Operation Arguments (when Edge Labels shown)').
933 preference_description(dot_print_functions,'Print Functions (operations that return values w/o changing state)').
934 preference_description(dot_print_self_loops,'Print Self-Loops').
935 %preference_description(dot_print_leaves,'Print Leaves').
936 preference_description(dot_print_arc_colors,'Colour the arcs (disable for import in OmniGraffle)').
937 preference_description(dot_print_root,'Print Root Node').
938 preference_description(dot_print_node_ids,'Print Node Identifiers').
939 preference_description(dot_print_node_info,'Print Node information (values of variables)').
940 preference_description(dot_print_use_constants,'Use constants for deferred set values if possible').
941 preference_description(dot_use_ps_viewer,'Use Postscript Viewer').
942 preference_description(path_to_dot,'Path/Command for dot program (using "/" even on Windows. Try avoiding spaces in path)').
943 preference_description(dot_default_engine,'Default layout engine used for dot (dot,neato,sfdp,fdp,twopi,circo)').
944 preference_description(path_to_dotty,'Path/Command for dot viewer (e.g., dotty)').
945 %preference_description(path_to_sfdp,'Path/Command for sfdp program for dot files (using "/" even on Windows. Try avoiding spaces in path)').
946 preference_description(path_to_ltsmin,'Path to LTSmin commands, such as prob2lts-sym for symbolic model checking (not available for Windows.)').
947 preference_description(path_to_ps_viewer,'Path/Command for Postscript viewer').
948 preference_description(dot_root_shape,'Shape for root node (invtriangle,triangle, ellipse, box, diamond,...)').
949 preference_description(dot_normal_node_shape,'Shape for normal node').
950 preference_description(dot_current_node_shape,'Shape for current node').
951 preference_description(dot_open_node_colour,'Colour for open node (red,green,blue,gray,... or rgb hex #ff00ff) or adjacent to an open node if print leaves is off').
952 preference_description(dot_scope_limit_node_colour,'Colour for open, but uninteresting nodes (red,green,blue,gray,... or rgb hex #ff00ff)').
953 preference_description(dot_normal_node_colour,'Colour for normal node').
954 preference_description(dot_node_penwidth,'Pen width for nodes').
955 preference_description(dot_invariant_violated_node_colour,'Colour for invariant violation').
956 preference_description(dot_fill_normal_nodes,'Fill normal nodes with color').
957 preference_description(dot_normal_arc_colour,'Colour for normal arcs').
958 preference_description(dot_node_font_size,'Font Size for Node labels').
959 preference_description(dot_edge_font_size,'Font Size for Edge labels').
960 preference_description(dot_colour_goal_nodes,'Colour the nodes that satisfy the GOAL predicate').
961 preference_description(dot_goal_node_colour,'Colour for nodes satisfying the GOAL predicate').
962 preference_description(dot_print_node_properties,'Show properties of statespace node (useful for CSP models)').
963 preference_description(dot_counterexample_node_colour,'Colour for counterexample nodes').
964 preference_description(dot_counterexample_op_colour,'Colour for counterexample transitions').
965 preference_description(dot_hierarchy_max_ids,'Max. number of identifiers shown in hierarchy view (-1 to show all)').
966
967 preference_description(dot_event_hierarchy_horizontal,'Organize refinements horizontally').
968 preference_description(dot_event_hierarchy_machine_colour,'Colour for machine event cluster').
969 preference_description(dot_event_hierarchy_refines_colour,'Colour for events refining themselves (i.e., not renamed and modifying guard or action)').
970 preference_description(dot_event_hierarchy_new_event_colour,'Colour for new events (not refining any event)').
971 preference_description(dot_event_hierarchy_rename_event_colour,'Colour for renamed events (with change in guard or action)').
972 preference_description(dot_event_hierarchy_rename_unchanged_event_colour,'Colour for renamed unchanged events').
973 preference_description(dot_event_hierarchy_unchanged_event_colour,'Colour for unchanged events (not renamed, no guards or actions added)').
974 preference_description(dot_event_hierarchy_grd_strengthening_event_colour,'Colour for events just adding a guard (not renamed, no actions added)').
975 preference_description(dot_event_hierarchy_grd_keeping_event_colour,'Colour for events just changing an action (not renamed, keeping guard unchanged)').
976 preference_description(dot_event_hierarchy_edge_colour,'Edge colour for refine relation').
977 preference_description(dot_event_hierarchy_extends_colour,'Edge colour for extends relation').
978
979 preference_description(dot_projection_non_det_edge_colour,'Edge colour for deterministic edges').
980 preference_description(dot_projection_det_edge_colour,'Edge colour for non-deterministic edges').
981 preference_description(dot_projection_non_definite_edge_style,'Style for non-definite edges (solid,dashed,dotted,bold,invis)').
982 preference_description(dot_projection_definite_edge_style,'Style for definite edges (solid,dashed,dotted,bold,invis)').
983 preference_description(dot_projection_label_limit,'Max. nr of characters for node labels').
984 preference_description(dot_use_unicode,'Use Unicode symbols for values and formulas').
985 preference_description(dot_predicate_node_shape,'Shape for predicate nodes in formula trees').
986 preference_description(dot_expression_node_shape,'Shape for expression nodes in formula trees').
987 preference_description(dot_var_mod_hide_only_written,'Hide variables which are only written and not read in any guard').
988
989
990 preference_description(mc_dc_default_level,'Default Predicate Expansion Level for MC/DC Coverage Analyses (0=no expansion, 1=only top level connective expanded,...)').
991
992 preference_description(dot_enabling_show_readwrites,'Show read/write info for enabling diagrams').
993
994 preference_description(dot_definitions_use_sub_graph,'Show expression-, predicate-, substitution-DEFINITIONS as sub-graphs').
995 preference_description(dot_definitions_show_all,'Show all DEFINITIONS').
996 preference_description(dot_state_graph_decompose,'Decompose sets and complex pairs into individual vertices').
997
998 preference_description(font_size,'Font size in main window').
999 preference_description(font_name,'Font name in text editor').
1000 preference_description(font_size_only,'Font size in text editor').
1001 preference_description(use_font_size_for_columns,'Use font size also for columns (you need to reselect font size + Courier will be used)').
1002 preference_description(allow_source_code_editing,'Allow editing and saving of main B machine file').
1003 preference_description(show_line_numbers,'Show line numbers in main window').
1004 %preference_description(show_full_error_span,'Show also the end line and column in error messages').
1005 preference_description(highlight_brackets,'Highlights brackets').
1006 preference_description(highlight_current_line,'Highlights current line').
1007 preference_description(ask_when_content_changed,'Asking when file content changed from external program').
1008 preference_description(user_not_beginner,'User is not a beginner').
1009 preference_description(user_is_an_expert_with_accessto_source_distribution,'User is expert with access to source distribution of ProB').
1010 %preference_description(default_to_runtime_type_checking_on_startup_for_expert,'When starting up (in expert mode) turn runtime type checking on').
1011 preference_description(path_to_probe,'Path to Probe or other tool to view .csp files').
1012 preference_description(path_to_spin,'Path to Spin or other tool to view .prom files').
1013 preference_description(path_to_cspm,'Path to cspm to view and analyze .csp files.').
1014 preference_description(path_to_text_editor,'Path to external GUI text editor').
1015 preference_description(path_to_text_editor_launch,'Path to external text editor for probcli (uses EDITOR environment variable by default)'). % different to path_to_text_editor, as from SICStus we cannot launch .app ??!
1016 %preference_description(path_to_fuzz,'Path to the fuzz tool for ProZ').
1017 preference_description(path_to_fdr,'Path to the FDR2 tool').
1018 preference_description(path_to_csp_typechecker,'Path to a CSP type checking tool, such as refines from FDR3 (taking --typecheck as argument)').
1019 preference_description(path_to_bcomp,'Path to a bcomp (Atelier B Parser and type checker )').
1020 preference_description(path_to_java,'Path to the "java" command (in case java is not found on the PATH)').
1021 preference_description(path_to_atb_krt,'Path to Atelier B Provers krt tool').
1022 preference_description(try_atb_provers,'Try Atelier B Provers for unknown SMTLIB specifications').
1023 preference_description(symbolic_mc_try_other_solvers,'Symbolic Model Checking: Try different solver / settings combinations').
1024 preference_description(number_of_recent_documents,'Number of recently opened file names memorised').
1025 preference_description(number_of_searched_patterns,'Number of recently searched patterns in text').
1026 preference_description(number_of_replaced_patterns,'Number of recently replaced patterns in text').
1027 preference_description(number_of_eval_history_elements,'Number of recently runs of commands in the eval window').
1028 preference_description(number_of_eval_csp_history_elements,'Number of recently runs of commands in the eval window').
1029 preference_description(number_of_checked_ltl_formulas,'Number of recently checked LTL formulas').
1030 preference_description(ltl_to_ba_tool,'Tool in lib/ directory for generatin a Buechi automaton from LTL.').
1031 preference_description(prob2_trace_file,'Path to file to store prob2_execute_custom_operation results for later replay').
1032 preference_description(prob2_trace_file_gen_unique_name,'Make the file name for prob2_execute_custom_operation unique').
1033
1034 preference_description(do_syntax_highlighting,'Enable Syntax Colour Highlighting').
1035 preference_description(sh_type_colour,'Colour of typing constructs: NAT,POW,... (red,green,... or rgb hex #ff00ff)').
1036 preference_description(sh_logical_colour,'Colour of logical operators: &,or,...').
1037 preference_description(sh_assignments_colour,'Colour of assignments: :=, <-- and strings').
1038 preference_description(sh_operators,'Colour of normal operators ran,dom,...').
1039 preference_description(sh_top_level_keywords,'Colour of top level keywords: MACHINE, INVARIANT,...').
1040 preference_description(sh_control_keywords,'Colour of control keywords: IF, CASE,...').
1041 %preference_description(sh_includes_keywords,'Colour of inclusion related keywords: USES,...').
1042 preference_description(sh_comments,'Colour of comments /* ... */').
1043 preference_description(sh_pragmas,'Colour of pragmas /*@ ... */').
1044 preference_description(sh_unsupported_background,'Background colour for unsupported features (closure,...)').
1045
1046 preference_description(expand_forall_upto,'When analysing predicates: max. domain size for expansion of forall:').
1047 preference_description(double_evaluation_when_analysing,'Evaluate PREDICATES positively and negatively when analysing:').
1048 preference_description(expand_avl_upto,'Max size for pretty-printing sets (-1 means no limit) :').
1049 preference_description(show_function_tuples_in_property,'Show function tuples in state view or dot files (f(1)=2 instead of f={(1,2)})').
1050 preference_description(bugly_pp_scrambling,'Scramble identifiers when pretty-printing (BUGLY):').
1051 preference_description(pp_propositional_logic_mode,'Try and pretty-print formulas using propositional variables (A=TRUE will be printed as A)').
1052
1053
1054 preference_description(allow_new_ops_in_refinement,'Allow introduction of new operations in refinements (automatically set to TRUE for SYSTEM machines)').
1055 preference_description(allow_local_operation_calls,'Allow to call (local) operations in same machine').
1056 preference_description(allow_operation_calls_in_expr,'Allow to call query operations in (some) expressions').
1057 preference_description(allow_let_to_reuse_introduced_ids,'Allow LET substitutions to directly use introduced identifiers (e.g., LET x,y BE x=4 & y=x*x IN ...)').
1058
1059
1060 preference_description(use_po,'Use PROOF information to restrict invariant checking to affected clauses.').
1061 %preference_description(use_po,'Restrict invariant checking to affected clauses. Also remove clauses that are proven (EventB)').
1062 preference_description(try_operation_reuse,'Reuse previously computed operation effects in B/Event-B (false,true:local propagation,full:cache projected state space per operation)'). % true: perfroms local propagation to successor states for statically computed operation pairs, full: caches a projected state space per eligible operation in LTSmin style
1063 preference_description(randomise_operation_order,'Randomise order of operations when computing successor states.').
1064 preference_description(randomise_enumeration_order,'Randomise enumeration of variables.').
1065 preference_description(set_rand,'Use a fix seed for random number generator. Allows to reproduce results.').
1066 preference_description(rand_seed,'Seed for Random Number Generator').
1067
1068 preference_description(machines_path,'Last open directory').
1069
1070 % Options for enabling/disabling the POR and PGE optimisations for Model Checking of B and Event-B models
1071 preference_description(use_cbc_analysis,'Use the constraint solver for more refined analysis of the action relations (in case of enabling/dependency determination for POR).').
1072 preference_description(timeout_cbc_analysis,'Time out for computing independence and enable relations between operations.').
1073
1074 preference_description(use_scope_predicate,
1075 'Use SCOPE predicate (if defined) to restrict state space exploration for model checking and animation.').
1076 preference_description(use_ignore_pragmas, 'Use /*@desc prob-ignore */ pragmas when checking predicates (PROPERTIES,...)').
1077 preference_description(pge,
1078 'Use the Partial Guard Evaluation optimisation for the state space exploration of B models.').
1079
1080 preference_description(por,'Type of Partial Order Reduction Technique (ample_sets, ample_sets2).').
1081 preference_description(por_heur,'Type of heuritic for choosing a valid ample set.').
1082 preference_description(use_por_for_ltl,'Use Partial Order Reduction for LTL.').
1083 preference_description(use_safety_ltl_model_checker,'Rocognise safety properties and check these using the safety property model checker').
1084
1085 preference_description(enable_graph,'Option for using the enable graph module for partial order reduction.').
1086 preference_description(enable_graph_depth,'The depth of evaluating the weakest-preconditions along a path in an enable graph.').
1087
1088 preference_description(dependency_enable_predicates,'Compute in each state whether two events can disable each other.').
1089
1090 preference_description(filter_unused_constants,'Filter out unused constants').
1091 preference_description(translate_force_all_typing_infos,'Print all typing infos when pretty-printing').
1092 preference_description(translate_print_typing_infos,'Print needed typing infos when pretty-printing').
1093 preference_description(translate_print_frozen_infos,'Print Prolog frozen goal infos for unbound variables').
1094 preference_description(translate_ids_to_parseable_format,'Print Identifiers in a format that can be parsed again').
1095 preference_description(translate_suppress_rodin_positions_flag,'Suppres Rodin position information when pretty-printing').
1096 preference_description(translate_print_all_sequences,'Print B relations as sequences when possible during pretty-printing.').
1097 preference_description(translate_print_cs_style_sequences,'Print B sequences in theoretical CS style without separators.').
1098 % Note: also influenced by expand_avl_upto preference
1099
1100 preference_description(disprover_mode,'Skip certain optimizations that effect soundness of proofs (for Rodin DISPROVER Plugin)').
1101 preference_description(trace_upon_error,'Trace upon error (requires running from source)').
1102 preference_description(error_log_file, 'File were all errors and warnings are logged (NDJSON format). Can be set to stderr or stdout.').
1103 preference_description(tlc_number_of_workers,'Number of parallel workers for external tool TLC (for -workers option)').
1104 preference_description(unsat_core_algorithm,'Algorithm to compute the unsat core of predicates. (divide_and_conquer or linear)').
1105
1106
1107 preference_description(port, 'First number to be used by distb/ZMQ. Default: 5000').
1108 preference_description(ip, 'The IP addess or hostname of the current machine that should be used. Default: localhost. Must be overriden in a distributed setting.').
1109 preference_description(max_states, 'The amount of states that shall be checked. Zero means explore entire state space. Default: 0').
1110 preference_description(tmpdir, 'The directory where temporary files should be stored. Default: /tmp/.').
1111 preference_description(logdir, 'The directory where log files should be stored. Default: ./distb-logs/').
1112 preference_description(proxynumber, 'The number of the proxy the component should connect to. Relevant if multiple proxies run on the same machine. Default: 0').
1113 preference_description(queue_threshold, 'The amount of states that may be kept in a queue before it is allowed to share. Default: 20').
1114 preference_description(hash_cycle, 'Minimum amount of milliseconds that has to pass between hash code updates from the master. Default: 25').
1115
1116
1117
1118 /* ------------------------- */
1119
1120
1121 %preference_update_action(do_full_invariant_checking,_) :- !, b_types_precompile.
1122 %preference_change_requires_reload(enable_canonical_symmetry,true) :- !, .
1123 %preference_update_action(use_nauty_symmetry_reduction,true) :- !, graph_iso_nauty:nauty_init.
1124 %:- use_module(probsrc(bmachine),[bmachine_is_precompiled/0]).
1125 %:- use_module(probsrc(graph_iso_nauty),[nauty_init/0]).
1126 preference_update_action(symmetry_mode,nauty) :- !,
1127 (bmachine:bmachine_is_precompiled -> graph_iso_nauty:nauty_init ; true).
1128 preference_update_action(_,_).
1129
1130 /* ------------------------- */
1131
1132 % now in basic_tests.pl
1133 %:- assert_must_succeed( \+((preference_val_type(P,_D),\+preference_default_value(P,_Val)))).
1134 %:- assert_must_succeed( \+((preference_default_value(P,_D), \+preference_val_type(P,_Val)))).
1135 preference_val_type(maxint,nat1).
1136 preference_val_type(minint,neg).
1137 preference_val_type(number_animated_abstractions,nat).
1138 preference_val_type(globalsets_fdrange,nat).
1139 preference_val_type(do_invariant_checking,bool).
1140 preference_val_type(find_abort_values,xbool).
1141 preference_val_type(raise_abort_immediately,xbool).
1142 preference_val_type(treat_outermost_pre_as_select,bool).
1143 preference_val_type(require_operations_to_assign_all_outputs,bool).
1144 preference_val_type(allow_operations_to_read_outputs,bool).
1145 preference_val_type(allow_simultaneous_assignments,bool).
1146 preference_val_type(cspm_animate_all_processes_without_arguments,bool).
1147 preference_val_type(cspm_animate_all_processes,bool).
1148 preference_val_type(cspm_detailed_animation,bool).
1149 preference_val_type(cspm_strip_source_location,bool).
1150 %preference_val_type(csp_event_visible_to_user,bool).
1151 preference_val_type(show_initialisation_arguments,bool).
1152 preference_val_type(deterministic_trace_replay,bool).
1153 preference_val_type(show_eventb_any_arguments,bool).
1154 preference_val_type(maxNrOfInitialisations,nat).
1155 preference_val_type(randomisedRestartInitalisations,bool).
1156 preference_val_type(maxNrOfEnablingsPerOperation,nat).
1157 preference_val_type(time_out,nat1).
1158 preference_val_type(debug_time_out_factor,nat1).
1159 %preference_val_type(use_large_jvm_for_parser,bool).
1160 preference_val_type(convert_comprehension_sets_into_closures,bool).
1161 preference_val_type(use_clpfd_solver,bool).
1162 preference_val_type(use_chr_solver,bool).
1163 preference_val_type(data_validation_mode,bool).
1164 preference_val_type(use_smt_mode,bool).
1165 preference_val_type(solver_strength,nat).
1166 preference_val_type(use_common_subexpression_elimination,bool).
1167 preference_val_type(remove_implied_constraints,bool).
1168 preference_val_type(lift_existential_quantifiers,bool).
1169 preference_val_type(use_common_subexpression_also_for_predicates,bool).
1170 preference_val_type(use_common_subexpression_also_for_substitutions,bool).
1171 preference_val_type(use_common_subexpression_wd_only,bool).
1172 preference_val_type(normalize_ast,bool).
1173 preference_val_type(optimize_ast,bool).
1174 preference_val_type(useless_code_elimination,bool).
1175 preference_val_type(compile_while_body,bool).
1176 preference_val_type(detect_lambdas,bool).
1177 preference_val_type(ltsmin_guard_splitting,bool).
1178 preference_val_type(ltsmin_do_not_evaluate_top_level_guards,bool).
1179 preference_val_type(fail_if_clpfd_timeout,bool).
1180 %preference_val_type(allow_recursive_closures,bool).
1181 preference_val_type(use_static_ordering,bool).
1182 preference_val_type(use_state_packing,bool).
1183 preference_val_type(provide_trace_information,bool).
1184 preference_val_type(performance_monitoring_on,bool).
1185 preference_val_type(partition_predicates,bool).
1186 preference_val_type(partition_predicates_inline_equalities,bool).
1187 preference_val_type(use_closure_expansion_memoization,bool).
1188 preference_val_type(use_function_memoization,bool).
1189 preference_val_type(allow_incomplete_partial_setup_constants,bool).
1190 preference_val_type(re_execute_operations_with_side_effects,bool).
1191 preference_val_type(warn_if_definition_hides_variable,bool).
1192 preference_val_type(type_check_definitions,bool).
1193 %preference_val_type(warn_when_expanding_infinite_closures,int).
1194 preference_val_type(allow_enumeration_of_infinite_types,bool).
1195 preference_val_type(strict_raise_warnings,bool).
1196 preference_val_type(strict_raise_enum_warnings,bool).
1197 preference_val_type(clash_strict_checks,bool).
1198 preference_val_type(perform_stricter_static_checks,bool).
1199 preference_val_type(ignore_prj_types,bool).
1200 preference_val_type(prefix_internal_operation_arguments,string).
1201 preference_val_type(generate_minimal_nr_of_testcases,bool).
1202 preference_val_type(use_tk_custom_state_viewer,bool).
1203 preference_val_type(tk_custom_state_viewer_font_name,string).
1204 preference_val_type(tk_custom_state_viewer_font_size,nat).
1205 preference_val_type(tk_custom_state_viewer_padding,nat).
1206 preference_val_type(tk_custom_state_viewer_str_padding,nat).
1207 preference_val_type(use_small_window,bool).
1208 preference_val_type(tk_show_source_pane,bool).
1209 preference_val_type(ignore_hash_collisions,bool).
1210 preference_val_type(forget_state_space,bool).
1211 preference_val_type(store_only_one_incoming_transition,bool).
1212 preference_val_type(symmetry_mode,[off,flood,nauty,hash]).
1213 preference_val_type(use_static_symmetry_detection,bool).
1214 preference_val_type(bool_expression_as_predicate,bool).
1215 preference_val_type(allow_untyped_identifiers,[true,false,true_with_string_type]).
1216 preference_val_type(repl_unicode,bool).
1217 preference_val_type(repl_cache_parsing,bool).
1218 preference_val_type(latex_encoding,text_encoding).
1219 preference_val_type(latex_pp_greek_ids,bool).
1220 preference_val_type(xml_encoding,text_encoding).
1221 preference_val_type(view_probcli_errors_using_bbresults,bool).
1222 preference_val_type(eventtrace,bool).
1223 preference_val_type(store_event_transinfo,bool).
1224 preference_val_type(try_kodkod_on_load,bool).
1225 preference_val_type(kodkod_for_components,bool).
1226 preference_val_type(kodkod_raise_warnings,bool).
1227 preference_val_type(kodkod_max_nr_solutions,nat1).
1228 preference_val_type(kodkod_symmetry_level,nat).
1229 preference_val_type(kodkod_sat_solver,[sat4j,minisat,lingeling,glucose]).
1230 preference_val_type(smt_supported_interpreter,bool).
1231 preference_val_type(use_record_construction,bool).
1232 preference_val_type(seen_machines_included,bool).
1233 preference_val_type(allow_sequence_operators_on_strings,bool).
1234
1235 preference_val_type(dot_print_node_ids,bool).
1236 preference_val_type(dot_print_use_constants,bool).
1237 preference_val_type(dot_print_node_info,bool).
1238 preference_val_type(dot_print_edge_labels,bool).
1239 preference_val_type(dot_print_action_arguments,bool).
1240 preference_val_type(dot_print_functions,bool).
1241 preference_val_type(dot_print_self_loops,bool).
1242 preference_val_type(dot_print_root,bool).
1243 %preference_val_type(dot_print_leaves,bool).
1244 preference_val_type(dot_print_arc_colors,bool).
1245 preference_val_type(dot_use_ps_viewer,bool).
1246 preference_val_type(path_to_dot,path).
1247 preference_val_type(dot_default_engine,[dot,neato,sfdp,fdp,twopi,circo]).
1248 preference_val_type(path_to_dotty,path).
1249 preference_val_type(path_to_ltsmin,path).
1250 preference_val_type(path_to_ps_viewer,path).
1251 preference_val_type(dot_root_shape,dot_shape).
1252 preference_val_type(dot_node_penwidth,nat).
1253 preference_val_type(dot_normal_node_shape,dot_shape).
1254 preference_val_type(dot_current_node_shape,dot_shape).
1255 preference_val_type(dot_open_node_colour,rgb_color).
1256 preference_val_type(dot_scope_limit_node_colour,rgb_color).
1257 preference_val_type(dot_normal_node_colour,rgb_color).
1258 preference_val_type(dot_invariant_violated_node_colour,rgb_color).
1259 preference_val_type(dot_fill_normal_nodes,bool).
1260 preference_val_type(dot_normal_arc_colour,rgb_color).
1261 preference_val_type(dot_node_font_size,nat1).
1262 preference_val_type(dot_edge_font_size,nat1).
1263 preference_val_type(dot_colour_goal_nodes,bool).
1264 preference_val_type(dot_goal_node_colour,rgb_color).
1265 preference_val_type(dot_print_node_properties,bool).
1266 preference_val_type(dot_counterexample_node_colour,rgb_color).
1267 preference_val_type(dot_counterexample_op_colour,rgb_color).
1268 preference_val_type(dot_hierarchy_max_ids,int).
1269
1270 preference_val_type(dot_event_hierarchy_horizontal,bool).
1271 preference_val_type(dot_event_hierarchy_machine_colour,rgb_color).
1272 preference_val_type(dot_event_hierarchy_refines_colour,rgb_color).
1273 preference_val_type(dot_event_hierarchy_new_event_colour,rgb_color).
1274 preference_val_type(dot_event_hierarchy_rename_event_colour,rgb_color).
1275 preference_val_type(dot_event_hierarchy_rename_unchanged_event_colour,rgb_color).
1276 preference_val_type(dot_event_hierarchy_unchanged_event_colour,rgb_color).
1277 preference_val_type(dot_event_hierarchy_grd_strengthening_event_colour,rgb_color).
1278 preference_val_type(dot_event_hierarchy_grd_keeping_event_colour,rgb_color).
1279 preference_val_type(dot_event_hierarchy_edge_colour,rgb_color).
1280 preference_val_type(dot_event_hierarchy_extends_colour,rgb_color).
1281
1282 preference_val_type(dot_projection_non_det_edge_colour,rgb_color).
1283 preference_val_type(dot_projection_det_edge_colour,rgb_color).
1284 preference_val_type(dot_projection_non_definite_edge_style,dot_line_style).
1285 preference_val_type(dot_projection_definite_edge_style,dot_line_style).
1286 preference_val_type(dot_projection_label_limit,nat).
1287 preference_val_type(dot_use_unicode,bool).
1288 preference_val_type(dot_predicate_node_shape,dot_shape).
1289 preference_val_type(dot_expression_node_shape,dot_shape).
1290 preference_val_type(dot_var_mod_hide_only_written,bool).
1291
1292 preference_val_type(mc_dc_default_level,nat).
1293
1294 preference_val_type(dot_enabling_show_readwrites,bool).
1295
1296 preference_val_type(dot_definitions_use_sub_graph,bool).
1297 preference_val_type(dot_definitions_show_all,bool).
1298 preference_val_type(dot_state_graph_decompose,bool).
1299
1300 preference_val_type(font_name,string).
1301 preference_val_type(font_size_only,nat1).
1302 preference_val_type(font_size,string).
1303 preference_val_type(use_font_size_for_columns,bool).
1304 preference_val_type(allow_source_code_editing,bool).
1305 preference_val_type(show_line_numbers,bool).
1306 %preference_val_type(show_full_error_span,bool).
1307 preference_val_type(highlight_brackets,bool).
1308 preference_val_type(highlight_current_line,bool).
1309 preference_val_type(ask_when_content_changed,bool).
1310
1311 preference_val_type(user_not_beginner,bool).
1312 preference_val_type(user_is_an_expert_with_accessto_source_distribution,bool).
1313 %preference_val_type(default_to_runtime_type_checking_on_startup_for_expert,bool).
1314 preference_val_type(path_to_probe,path).
1315 %preference_val_type(path_to_fuzz,path).
1316 preference_val_type(path_to_fdr,path).
1317 preference_val_type(path_to_csp_typechecker,path).
1318 preference_val_type(path_to_bcomp,path). % Atelier B parser & type checker
1319 preference_val_type(path_to_java,path). % Path to Java
1320 preference_val_type(path_to_atb_krt,path).
1321 preference_val_type(try_atb_provers,bool).
1322 preference_val_type(symbolic_mc_try_other_solvers,bool).
1323 preference_val_type(path_to_spin,path).
1324 preference_val_type(path_to_cspm,path).
1325 preference_val_type(path_to_text_editor,path).
1326 preference_val_type(path_to_text_editor_launch,path).
1327 preference_val_type(number_of_recent_documents,nat).
1328 preference_val_type(number_of_searched_patterns,nat).
1329 preference_val_type(number_of_replaced_patterns,nat).
1330 preference_val_type(number_of_eval_history_elements,nat).
1331 preference_val_type(number_of_eval_csp_history_elements,nat).
1332 preference_val_type(number_of_checked_ltl_formulas,nat).
1333 preference_val_type(ltl_to_ba_tool,path).
1334 preference_val_type(prob2_trace_file,path).
1335 preference_val_type(prob2_trace_file_gen_unique_name,bool).
1336
1337
1338 preference_val_type(do_syntax_highlighting,bool).
1339 preference_val_type(sh_type_colour,rgb_color).
1340 preference_val_type(sh_logical_colour,rgb_color).
1341 preference_val_type(sh_assignments_colour,rgb_color).
1342 preference_val_type(sh_operators,rgb_color).
1343 preference_val_type(sh_top_level_keywords,rgb_color).
1344 preference_val_type(sh_control_keywords,rgb_color).
1345 %preference_val_type(sh_includes_keywords,rgb_color).
1346 preference_val_type(sh_comments,rgb_color).
1347 preference_val_type(sh_pragmas,rgb_color).
1348 preference_val_type(sh_unsupported_background,rgb_color).
1349
1350 preference_val_type(expand_forall_upto,nat).
1351 preference_val_type(double_evaluation_when_analysing,bool).
1352 preference_val_type(expand_avl_upto,int).
1353 preference_val_type(show_function_tuples_in_property,bool).
1354 preference_val_type(bugly_pp_scrambling,bool).
1355 preference_val_type(pp_propositional_logic_mode,bool).
1356
1357 preference_val_type(allow_new_ops_in_refinement,bool).
1358 preference_val_type(allow_local_operation_calls,bool).
1359 preference_val_type(allow_operation_calls_in_expr,bool).
1360 preference_val_type(allow_let_to_reuse_introduced_ids,bool).
1361 preference_val_type(use_po,bool).
1362 preference_val_type(try_operation_reuse,xbool).
1363 preference_val_type(randomise_operation_order,bool).
1364 preference_val_type(randomise_enumeration_order,bool).
1365
1366 preference_val_type(set_rand,bool).
1367 preference_val_type(rand_seed,nat).
1368
1369 preference_val_type(use_scope_predicate,bool).
1370 preference_val_type(use_ignore_pragmas,bool).
1371 %% Options' meaning
1372 % disabled: skipping guard evaluation of actions known to be disabled at state
1373 % enabled: skipping guard evaluation of actions known to be enabled at state
1374 % full: skipping guard evaluations of actions known to be enabled or disabled at state
1375 % disabled2, enabled2, full2: same for these, but another (more precise) way for computing the sets of enabled and disabled actions is used
1376 preference_val_type(pge,[off,disabled,enabled,full,disabled2,enabled2,full2]).
1377
1378 preference_val_type(use_cbc_analysis,bool).
1379 preference_val_type(timeout_cbc_analysis,nat1).
1380
1381 preference_val_type(por,[off,ample_sets,ample_sets2]).
1382 preference_val_type(por_heur,[first,random,minimal]).
1383 preference_val_type(use_por_for_ltl,bool).
1384 preference_val_type(use_safety_ltl_model_checker,bool).
1385
1386 preference_val_type(enable_graph,bool).
1387 preference_val_type(enable_graph_depth,int).
1388
1389 preference_val_type(dependency_enable_predicates,bool).
1390
1391 preference_val_type(filter_unused_constants,bool).
1392 preference_val_type(translate_force_all_typing_infos,bool).
1393 preference_val_type(translate_print_typing_infos,bool).
1394 preference_val_type(translate_print_frozen_infos,bool).
1395 preference_val_type(translate_ids_to_parseable_format,bool).
1396 preference_val_type(translate_suppress_rodin_positions_flag,bool).
1397 preference_val_type(translate_print_all_sequences,bool).
1398 preference_val_type(translate_print_cs_style_sequences,bool).
1399
1400
1401 preference_val_type(disprover_mode,bool).
1402 preference_val_type(trace_upon_error,bool).
1403 preference_val_type(tlc_number_of_workers,nat1).
1404 preference_val_type(error_log_file,path).
1405
1406 preference_val_type(unsat_core_algorithm,[divide_and_conquer,linear]).
1407
1408 preference_val_type(port, nat1).
1409 preference_val_type(ip, string).
1410 preference_val_type(max_states, nat).
1411 preference_val_type(tmpdir, path).
1412 preference_val_type(logdir, path).
1413 preference_val_type(proxynumber, nat).
1414 preference_val_type(queue_threshold, nat1).
1415 preference_val_type(hash_cycle, nat).
1416
1417 preference_val_type(machines_path,path). %directory_path). % preference not so critical; default value may not exist
1418
1419
1420
1421 /* ------------------------- */
1422
1423
1424 % now in basic_tests.pl
1425 %:- assert_must_succeed( \+((preference_category(P,_D),\+preference_default_value(P,_Val)))).
1426 %:- assert_must_succeed( \+((preference_default_value(P,_D), \+preference_category(P,_Val)))).
1427 preference_category(unsat_core_algorithm,advanced).
1428 preference_category(maxint,animation).
1429 preference_category(minint,animation).
1430 preference_category(globalsets_fdrange,animation).
1431 preference_category(do_invariant_checking,advanced).
1432 %preference_category(do_full_invariant_checking,animation).
1433 %preference_category(use_new_kernel,advanced).
1434 preference_category(find_abort_values,animation).
1435 preference_category(raise_abort_immediately,advanced).
1436 preference_category(treat_outermost_pre_as_select,animation).
1437 preference_category(require_operations_to_assign_all_outputs,animation).
1438 preference_category(allow_operations_to_read_outputs,advanced).
1439 preference_category(allow_simultaneous_assignments,hidden).
1440 preference_category(cspm_animate_all_processes_without_arguments,csp_prefs).
1441 preference_category(cspm_animate_all_processes,csp_prefs).
1442 %preference_category(cspm_display_inout,csp_prefs).
1443 preference_category(cspm_detailed_animation,csp_prefs).
1444 preference_category(cspm_strip_source_location,csp_prefs).
1445 %preference_category(csp_event_visible_to_user,csp_prefs).
1446 %preference_category(cspm_allow_incomplete_records,csp_prefs).
1447 %preference_category(findOnlyOneSol,advanced).
1448 preference_category(show_eventb_any_arguments,animation).
1449 preference_category(maxNrOfInitialisations,animation).
1450 preference_category(randomisedRestartInitalisations,advanced).
1451 preference_category(maxNrOfEnablingsPerOperation,animation).
1452 preference_category(time_out,animation).
1453 preference_category(number_animated_abstractions,animation).
1454 preference_category(show_initialisation_arguments,animation).
1455 preference_category(deterministic_trace_replay,hidden).
1456 %preference_category(animate_skip_operations,animation).
1457 preference_category(debug_time_out_factor,advanced).
1458 %preference_category(use_large_jvm_for_parser,advanced).
1459 preference_category(convert_comprehension_sets_into_closures,animation).
1460 preference_category(use_clpfd_solver,animation).
1461 preference_category(use_chr_solver,animation).
1462 preference_category(data_validation_mode,advanced).
1463 preference_category(use_smt_mode,advanced).
1464 preference_category(solver_strength,advanced).
1465 preference_category(use_common_subexpression_elimination,advanced).
1466 preference_category(remove_implied_constraints,advanced).
1467 preference_category(lift_existential_quantifiers,advanced).
1468 preference_category(use_common_subexpression_also_for_predicates,advanced).
1469 preference_category(use_common_subexpression_also_for_substitutions,advanced).
1470 preference_category(use_common_subexpression_wd_only,advanced).
1471 preference_category(normalize_ast,hidden).
1472 preference_category(optimize_ast,advanced).
1473 preference_category(useless_code_elimination,advanced).
1474 preference_category(compile_while_body,advanced).
1475 preference_category(detect_lambdas,advanced).
1476 preference_category(ltsmin_guard_splitting,hidden).
1477 preference_category(ltsmin_do_not_evaluate_top_level_guards,hidden).
1478 preference_category(fail_if_clpfd_timeout,advanced).
1479 %preference_category(allow_recursive_closures,hidden).
1480 preference_category(use_static_ordering,advanced).
1481 preference_category(use_state_packing,advanced).
1482 preference_category(provide_trace_information,advanced).
1483 preference_category(performance_monitoring_on,advanced).
1484 preference_category(partition_predicates,advanced).
1485 preference_category(partition_predicates_inline_equalities,advanced).
1486 preference_category(use_closure_expansion_memoization,advanced).
1487 preference_category(use_function_memoization,advanced).
1488 preference_category(allow_incomplete_partial_setup_constants,advanced).
1489 preference_category(re_execute_operations_with_side_effects,advanced).
1490 preference_category(warn_if_definition_hides_variable,advanced).
1491 preference_category(type_check_definitions,advanced).
1492 %preference_category(warn_when_expanding_infinite_closures,advanced).
1493 preference_category(allow_enumeration_of_infinite_types,advanced).
1494 preference_category(strict_raise_warnings,advanced).
1495 preference_category(strict_raise_enum_warnings,hidden). % only for testing
1496 preference_category(clash_strict_checks,advanced).
1497 preference_category(perform_stricter_static_checks,hidden). % set by prob
1498 preference_category(ignore_prj_types,advanced).
1499 %preference_category(never_convert_closures_into_explicit_form,hidden).
1500 %preference_category(convert_types_into_closures,animation).
1501 %preference_category(convert_closures_into_explicit_form_for_store,animation).
1502 %preference_category(allow_empty_global_sets,advanced).
1503 preference_category(ignore_hash_collisions,advanced).
1504 preference_category(forget_state_space,advanced).
1505 preference_category(store_only_one_incoming_transition,advanced).
1506 %preference_category(enable_permutation_reducation,advanced).
1507 %preference_category(use_symmetry_marker_hash,advanced).
1508 %preference_category(enable_canonical_symmetry,advanced).
1509 %preference_category(use_nauty_symmetry_reduction,advanced).
1510 preference_category(symmetry_mode,hidden).
1511 preference_category(use_static_symmetry_detection,advanced).
1512 preference_category(bool_expression_as_predicate,hidden).
1513 preference_category(allow_untyped_identifiers,hidden).
1514 preference_category(repl_unicode,syntax_highlighting).
1515 preference_category(repl_cache_parsing,hidden).
1516 preference_category(latex_encoding,hidden).
1517 preference_category(latex_pp_greek_ids,hidden).
1518 preference_category(xml_encoding,hidden).
1519 preference_category(view_probcli_errors_using_bbresults,hidden).
1520 preference_category(eventtrace,animation).
1521 preference_category(store_event_transinfo,hidden). % automatically set by probcli
1522 preference_category(try_kodkod_on_load,hidden).
1523 preference_category(kodkod_for_components,advanced).
1524 preference_category(kodkod_raise_warnings,advanced).
1525 preference_category(kodkod_max_nr_solutions,advanced).
1526 preference_category(kodkod_symmetry_level,advanced).
1527 preference_category(kodkod_sat_solver,advanced).
1528 preference_category(smt_supported_interpreter,advanced).
1529 preference_category(use_record_construction,advanced).
1530 preference_category(seen_machines_included,animation).
1531 preference_category(allow_sequence_operators_on_strings,animation).
1532
1533 %preference_category(test_case_gen_stop_at_first_error,advanced).
1534 preference_category(prefix_internal_operation_arguments,advanced).
1535 preference_category(generate_minimal_nr_of_testcases,advanced).
1536 preference_category(use_tk_custom_state_viewer,hidden). % actually : if user wants to turn it off; simply do not define ANIMATION_FUNCTION
1537 preference_category(tk_custom_state_viewer_font_name,hidden).
1538 preference_category(tk_custom_state_viewer_font_size,hidden).
1539 preference_category(tk_custom_state_viewer_padding,animation).
1540 preference_category(tk_custom_state_viewer_str_padding,animation).
1541 preference_category(use_small_window,animation).
1542 preference_category(tk_show_source_pane,animation).
1543
1544 preference_category(path_to_ltsmin,advanced).
1545
1546
1547 preference_category(dot_print_node_ids,dot).
1548 preference_category(dot_print_use_constants,dot).
1549 preference_category(dot_print_node_info,dot).
1550 preference_category(dot_print_edge_labels,dot).
1551 preference_category(dot_print_action_arguments,dot).
1552 preference_category(dot_print_functions,dot).
1553 preference_category(dot_print_self_loops,dot).
1554 preference_category(dot_print_root,dot).
1555 %preference_category(dot_print_leaves,dot).
1556 preference_category(dot_print_arc_colors,dot).
1557 preference_category(dot_use_ps_viewer,hidden).
1558 preference_category(path_to_dotty,dot).
1559 preference_category(path_to_dot,dot).
1560 preference_category(dot_default_engine,dot).
1561 preference_category(path_to_ps_viewer,dot).
1562 preference_category(dot_root_shape,dot).
1563 preference_category(dot_node_penwidth,dot).
1564 preference_category(dot_normal_node_shape,dot).
1565 preference_category(dot_current_node_shape,dot).
1566 preference_category(dot_open_node_colour,dot).
1567 preference_category(dot_scope_limit_node_colour,dot).
1568 preference_category(dot_normal_node_colour,dot).
1569 preference_category(dot_invariant_violated_node_colour,dot).
1570 preference_category(dot_fill_normal_nodes,dot).
1571 preference_category(dot_normal_arc_colour,dot).
1572
1573 %preference_category(dot_font_size,hidden).
1574 preference_category(dot_node_font_size,dot).
1575 preference_category(dot_edge_font_size,dot).
1576 preference_category(dot_colour_goal_nodes,dot).
1577 preference_category(dot_goal_node_colour,dot).
1578 preference_category(dot_print_node_properties,dot).
1579 preference_category(dot_counterexample_node_colour,dot).
1580 preference_category(dot_counterexample_op_colour,dot).
1581 preference_category(dot_hierarchy_max_ids,dot).
1582
1583 preference_category(dot_event_hierarchy_horizontal,dot_event_hierarchy).
1584 preference_category(dot_event_hierarchy_machine_colour,dot_event_hierarchy).
1585 preference_category(dot_event_hierarchy_refines_colour,dot_event_hierarchy).
1586 preference_category(dot_event_hierarchy_new_event_colour,dot_event_hierarchy).
1587 preference_category(dot_event_hierarchy_rename_event_colour,dot_event_hierarchy).
1588 preference_category(dot_event_hierarchy_unchanged_event_colour,dot_event_hierarchy).
1589 preference_category(dot_event_hierarchy_rename_unchanged_event_colour,dot_event_hierarchy).
1590 preference_category(dot_event_hierarchy_grd_strengthening_event_colour,dot_event_hierarchy).
1591 preference_category(dot_event_hierarchy_grd_keeping_event_colour,dot_event_hierarchy).
1592 preference_category(dot_event_hierarchy_edge_colour,dot_event_hierarchy).
1593 preference_category(dot_event_hierarchy_extends_colour,dot_event_hierarchy).
1594
1595 preference_category(dot_projection_non_det_edge_colour,dot_projection).
1596 preference_category(dot_projection_det_edge_colour,dot_projection).
1597 preference_category(dot_projection_non_definite_edge_style,dot_projection).
1598 preference_category(dot_projection_definite_edge_style,dot_projection).
1599 preference_category(dot_projection_label_limit,dot_projection).
1600 preference_category(dot_use_unicode,dot_projection).
1601
1602 preference_category(dot_predicate_node_shape,dot_formula_tree).
1603 preference_category(dot_expression_node_shape,dot_formula_tree).
1604 preference_category(dot_var_mod_hide_only_written,dot_variable_modification).
1605
1606 preference_category(mc_dc_default_level,mc_dc_commands).
1607
1608 preference_category(dot_enabling_show_readwrites,dot).
1609
1610 preference_category(dot_definitions_use_sub_graph,dot_definitions).
1611 preference_category(dot_definitions_show_all,dot_definitions).
1612
1613 preference_category(dot_state_graph_decompose,dot_state_graph).
1614
1615 preference_category(font_size,gui_prefs).
1616 preference_category(font_name,gui_prefs).
1617 preference_category(font_size_only,gui_prefs).
1618 preference_category(use_font_size_for_columns,advanced).
1619 preference_category(allow_source_code_editing,gui_prefs).
1620 preference_category(show_line_numbers,gui_prefs).
1621 preference_category(highlight_brackets,gui_prefs).
1622 preference_category(highlight_current_line,gui_prefs).
1623 preference_category(ask_when_content_changed,gui_prefs).
1624 preference_category(user_not_beginner,gui_prefs).
1625
1626 preference_category(user_is_an_expert_with_accessto_source_distribution,hidden).
1627 %preference_category(default_to_runtime_type_checking_on_startup_for_expert,hidden).
1628 preference_category(path_to_probe,csp_prefs).
1629 %preference_category(path_to_fuzz,advanced).
1630 preference_category(path_to_fdr,csp_prefs).
1631 preference_category(path_to_csp_typechecker,csp_prefs).
1632 preference_category(path_to_bcomp,advanced).
1633 preference_category(path_to_java,advanced).
1634 preference_category(path_to_atb_krt,advanced). % not yet used from within ProB Tcl/Tk, ...
1635 preference_category(try_atb_provers,advanced).
1636 preference_category(symbolic_mc_try_other_solvers,advanced).
1637 preference_category(path_to_spin,advanced).
1638 preference_category(path_to_cspm,advanced).
1639 preference_category(path_to_text_editor,advanced).
1640 preference_category(path_to_text_editor_launch,hidden).
1641 preference_category(number_of_recent_documents,advanced).
1642 preference_category(number_of_searched_patterns,advanced).
1643 preference_category(number_of_replaced_patterns,advanced).
1644 preference_category(number_of_eval_history_elements,advanced).
1645 preference_category(number_of_eval_csp_history_elements,advanced).
1646 preference_category(number_of_checked_ltl_formulas,advanced).
1647 preference_category(allow_new_ops_in_refinement,advanced).
1648 preference_category(allow_local_operation_calls,advanced).
1649 preference_category(allow_operation_calls_in_expr,advanced).
1650 preference_category(allow_let_to_reuse_introduced_ids,advanced).
1651 preference_category(use_po,advanced).
1652 preference_category(try_operation_reuse,advanced).
1653 preference_category(randomise_operation_order,advanced).
1654 preference_category(randomise_enumeration_order,advanced).
1655 preference_category(set_rand,advanced).
1656 preference_category(rand_seed,advanced).
1657 preference_category(ltl_to_ba_tool,advanced).
1658 preference_category(prob2_trace_file,hidden).
1659 preference_category(prob2_trace_file_gen_unique_name,hidden).
1660
1661
1662 preference_category(do_syntax_highlighting,syntax_highlighting).
1663 preference_category(sh_type_colour,syntax_highlighting).
1664 preference_category(sh_logical_colour,syntax_highlighting).
1665 preference_category(sh_assignments_colour,syntax_highlighting).
1666 preference_category(sh_operators,syntax_highlighting).
1667 preference_category(sh_top_level_keywords,syntax_highlighting).
1668 preference_category(sh_control_keywords,syntax_highlighting).
1669 %preference_category(sh_includes_keywords,syntax_highlighting).
1670 preference_category(sh_comments,syntax_highlighting).
1671 preference_category(sh_pragmas,syntax_highlighting).
1672 preference_category(sh_unsupported_background,syntax_highlighting).
1673
1674 preference_category(expand_forall_upto,advanced).
1675 preference_category(double_evaluation_when_analysing,advanced).
1676 preference_category(expand_avl_upto,advanced).
1677 preference_category(show_function_tuples_in_property,animation).
1678 preference_category(bugly_pp_scrambling,advanced).
1679 preference_category(pp_propositional_logic_mode,hidden).
1680 %preference_category(show_full_error_span,hidden).
1681
1682 preference_category(machines_path,hidden).
1683
1684 /* Partial techniques for optimising the Model Checker */
1685
1686 preference_category(use_scope_predicate,advanced).
1687 preference_category(use_ignore_pragmas,advanced).
1688 preference_category(pge,model_checker).
1689
1690 preference_category(use_cbc_analysis,advanced).
1691 preference_category(timeout_cbc_analysis,advanced).
1692 preference_category(por,model_checker).
1693 preference_category(por_heur,model_checker).
1694 preference_category(use_por_for_ltl,model_checker).
1695 preference_category(use_safety_ltl_model_checker,model_checker).
1696 preference_category(enable_graph,model_checker).
1697 preference_category(enable_graph_depth,model_checker).
1698 preference_category(dependency_enable_predicates,model_checker).
1699
1700 %------------------------------------
1701
1702 preference_category(filter_unused_constants,advanced).
1703 preference_category(translate_force_all_typing_infos,hidden).
1704 preference_category(translate_print_typing_infos,hidden).
1705 preference_category(translate_print_frozen_infos,hidden).
1706 preference_category(translate_ids_to_parseable_format,hidden).
1707 preference_category(translate_suppress_rodin_positions_flag,hidden).
1708 preference_category(translate_print_all_sequences,hidden).
1709 preference_category(translate_print_cs_style_sequences,hidden).
1710
1711 preference_category(disprover_mode,advanced).
1712 preference_category(trace_upon_error,hidden).
1713 preference_category(error_log_file,advanced).
1714 preference_category(tlc_number_of_workers,hidden).
1715
1716 preference_category(port, distb).
1717 preference_category(ip, distb).
1718 preference_category(max_states, distb).
1719 preference_category(tmpdir, distb).
1720 preference_category(logdir, distb).
1721 preference_category(proxynumber, distb).
1722 preference_category(queue_threshold, distb).
1723 preference_category(hash_cycle, distb).
1724
1725
1726 /* ------------------------- */
1727
1728 % secondary, alternate categories:
1729 alternate_preference_category(dot_print_node_ids,dot_state_space).
1730 alternate_preference_category(dot_print_use_constants,dot_state_space). %?
1731 alternate_preference_category(dot_print_node_info,dot_state_space).
1732 alternate_preference_category(dot_print_edge_labels,dot_state_space).
1733 alternate_preference_category(dot_print_action_arguments,dot_state_space).
1734 alternate_preference_category(dot_print_functions,dot_state_space).
1735 alternate_preference_category(dot_print_self_loops,dot_state_space).
1736 alternate_preference_category(dot_print_root,dot_state_space).
1737 alternate_preference_category(dot_print_arc_colors,dot_state_space).
1738 alternate_preference_category(dot_root_shape,dot_state_space).
1739 alternate_preference_category(dot_node_penwidth,dot_state_space).
1740 alternate_preference_category(dot_normal_node_shape,dot_state_space).
1741 alternate_preference_category(dot_current_node_shape,dot_state_space).
1742 alternate_preference_category(dot_open_node_colour,dot_state_space).
1743 alternate_preference_category(dot_scope_limit_node_colour,dot_state_space).
1744 alternate_preference_category(dot_normal_node_colour,dot_state_space).
1745 alternate_preference_category(dot_invariant_violated_node_colour,dot_state_space).
1746 alternate_preference_category(dot_fill_normal_nodes,dot_state_space).
1747 alternate_preference_category(dot_normal_arc_colour,dot_state_space).
1748 alternate_preference_category(dot_node_font_size,dot_state_space).
1749 alternate_preference_category(dot_edge_font_size,dot_state_space).
1750 alternate_preference_category(dot_colour_goal_nodes,dot_state_space).
1751 alternate_preference_category(dot_goal_node_colour,dot_state_space).
1752 alternate_preference_category(dot_print_node_properties,dot_state_space).
1753 alternate_preference_category(dot_use_unicode,dot_formula_tree).
1754
1755 /* ------------------------- */
1756 % now in basic_tests.pl
1757 %:- assert_must_succeed( \+((preferences:obsolete_preference(P),preference_default_value(P,_Val)))).
1758 obsolete_preference(warn_when_expanding_infinite_closures).
1759 obsolete_preference(do_neginvariant_checking). % use double_evaluation_when_analysing
1760 obsolete_preference(check_prolog_b_ast).
1761 obsolete_preference(use_large_jvm_for_parser).
1762 obsolete_preference(default_to_runtime_type_checking_on_startup_for_expert).
1763 obsolete_preference(animate_skip_operations).
1764 obsolete_preference(debug_try_minimise).
1765 obsolete_preference(convert_types_into_closures).
1766 obsolete_preference(use_avl_trees_for_sets).
1767 obsolete_preference(dot_font_size).
1768 obsolete_preference(only_label_base_types).
1769 obsolete_preference(use_new_kernel).
1770 obsolete_preference(findOnlyOneSol).
1771 obsolete_preference(enable_permutation_reducation).
1772 obsolete_preference(use_symmetry_marker_hash).
1773 obsolete_preference(enable_canonical_symmetry).
1774 obsolete_preference(use_nauty_symmetry_reduction).
1775 obsolete_preference(do_full_invariant_checking).
1776 obsolete_preference(test_case_gen_stop_at_first_error).
1777 obsolete_preference(use_failure_refinement).
1778 obsolete_preference(do_on_the_fly_refinement).
1779 obsolete_preference(never_convert_closures_into_explicit_form).
1780 obsolete_preference(allow_empty_global_sets).
1781 obsolete_preference(multilevel_animation).
1782 obsolete_preference(remove_multilevel_prefix).
1783 obsolete_preference(cspm_allow_incomplete_records).
1784 obsolete_preference(cspm_display_inout).
1785 obsolete_preference(allow_recursive_closures).
1786 obsolete_preference(absint_abstract_domain_module).
1787 obsolete_preference(absint_use_widening).
1788 obsolete_preference(absint_soft_widening).
1789 obsolete_preference(absint_extrapolation_threshold).
1790 obsolete_preference(convert_closures_into_explicit_form_for_store).
1791 obsolete_preference(use_por).
1792 obsolete_preference(use_pge).
1793 obsolete_preference(pge_dis).
1794 obsolete_preference(pge_ind).
1795 obsolete_preference(pge_keep).
1796 obsolete_preference(use_pge_keep).
1797 obsolete_preference(use_pge_dis).
1798 obsolete_preference(use_pge_ind).
1799 obsolete_preference(selected_bparser).
1800 obsolete_preference(dot_print_leaves).
1801 obsolete_preference(csp_event_visible_to_user).
1802 obsolete_preference(path_to_fuzz).
1803 obsolete_preference(use_optimistic_por).
1804 obsolete_preference(show_full_error_span).
1805 obsolete_preference(path_to_sfdp).
1806 obsolete_preference(dot_use_alterate_dot_viewer).
1807 obsolete_preference(path_to_dotty2).
1808
1809 % might be re-included later
1810 obsolete_preference(plugin(absint,use_widening)).
1811 obsolete_preference(plugin(absint,soft_widening)).
1812 obsolete_preference(plugin(absint,extrapolation_threshold)).
1813 obsolete_preference(plugin(absint,retract_widening_related_states)).
1814
1815 % replaced by api calls
1816 obsolete_preference(path_to_smt_solver).
1817
1818 % has been renamed
1819 obsolete_preference(try_atb_provers_for_smtlib).
1820
1821
1822 % VOLATILE
1823 % not necessary to store in file; value will not be changed when loading pref file
1824 % dangerous preferences: user should explicitly reset it every time or put it explicitly into file
1825 volatile_preference(store_event_transinfo).
1826 volatile_preference(fail_if_clpfd_timeout).
1827 volatile_preference(ignore_hash_collisions).
1828 volatile_preference(forget_state_space).
1829 volatile_preference(store_only_one_incoming_transition).
1830 volatile_preference(filter_unused_constants).
1831 volatile_preference(disprover_mode).
1832 volatile_preference(trace_upon_error).
1833 volatile_preference(performance_monitoring_on).
1834 volatile_preference(translate_force_all_typing_infos).
1835 volatile_preference(translate_print_typing_infos).
1836 volatile_preference(translate_ids_to_parseable_format).
1837 volatile_preference(translate_suppress_rodin_positions_flag).
1838 volatile_preference(prob2_trace_file).
1839 volatile_preference(prob2_trace_file_gen_unique_name).
1840 volatile_preference(deterministic_trace_replay).
1841 volatile_preference(bool_expression_as_predicate). % Deprecated
1842
1843 /* ------------------------- */
1844 ?is_of_type(El,Type) :- type_element(Type,El).
1845
1846 type_element(bool,true).
1847 type_element(bool,false).
1848 ?type_element(xbool,X) :- member(X,[false,true,full]).
1849 type_element(directory_path,X) :- atomic(X),check_directory_exists(X).
1850 type_element(int,X) :- number(X).
1851 type_element(neg,X) :- number(X), X=<0.
1852 type_element(nat,X) :- number(X), X>=0.
1853 type_element(nat1,X) :- number(X), X>0.
1854 type_element(range(Low,Up),X) :- number(X), X>=Low, X=<Up.
1855 type_element(string,X) :- atomic(X).
1856 type_element(path,X) :- atomic(X). % some paths are files, some directorys (.app) and some aliases
1857 type_element(file_path,X) :- atomic(X),check_file_exists(X).
1858 type_element(term,X) :- nonvar(X).
1859 ?type_element(ListOfCsts,X) :- ListOfCsts=[_|_], member(X,ListOfCsts).
1860 type_element(por,X) :-
1861 member(X,[off,ample_sets,ample_sets2]).
1862 ?type_element(dot_shape,X) :- is_of_type(X,[triangle,box,diamond,hexagon,octagon,house,
1863 invtriangle,invhouse,invtrapez,invtrapezium,
1864 egg,ellipse,oval,circle,
1865 parallelogram,pentagon,trapezium,septagon,
1866 square,rect,rectangle,
1867 record,
1868 'Mcircle','Msquare', 'Mdiamond',
1869 doublecircle,doubleoctagon,tripleoctagon,
1870 none,plain,plaintext,point]).
1871 type_element(dot_node_style,X) :-
1872 is_of_type(X,[solid,dashed,dotted,bold,rounded,filled,diagonals,striped,wedged]).
1873 ?type_element(dot_line_style,X) :- is_of_type(X,[solid, dashed, dotted, bold, invis]).
1874 ?type_element(rgb_color,X) :- valid_rgb_color(X).
1875 type_element(text_encoding,X) :-
1876 ? is_of_type(X,[auto,'ISO-8859-1','ISO-8859-2','ISO-8859-15',
1877 'UTF-8','UTF-16','UTF-16LE','UTF-16BE','UTF-32','UTF-32LE','UTF-32BE',
1878 'ANSI_X3.4-1968', 'windows 1252']).
1879
1880 valid_rgb_color(X) :- tk_color(X).
1881 valid_rgb_color(X) :- % check for composed colors like chocolate3
1882 ? atom_codes(X,Codes), append(Prefix,[Digit],Codes),
1883 Digit >= 48, Digit =< 57, Nr is Digit - 48, atom_codes(ColorName,Prefix),
1884 tk_color(ColorName,Low,Up),
1885 Nr >= Low, Nr =< Up.
1886 valid_rgb_color(X) :- valid_gray(X).
1887 ?valid_rgb_color(X) :- atom(X),atom_codes(X,[35,H1,H2,H3,H4,H5,H6]),
1888 ? hex(H1),hex(H2),hex(H3),hex(H4),hex(H5),hex(H6). /* should be of the form #ff00ff */
1889
1890 % colors which also accept numbers at end:
1891 tk_color(aquamarine,1,4).
1892 tk_color(azure,1,4).
1893 tk_color(bisque,1,4).
1894 tk_color(blue,1,4).
1895 tk_color(brown,1,4).
1896 tk_color(burlywood,1,4).
1897 tk_color('CadetBlue',1,4).
1898 tk_color(chartreuse,1,4).
1899 tk_color(chocolate,1,4).
1900 tk_color(coral,1,4).
1901 tk_color(cornsilk,1,4).
1902 tk_color(cyan,1,4).
1903 tk_color(deepskyblue,1,4).
1904 tk_color('DarkGoldenrod',1,4).
1905 tk_color('DarkOliveGreen',1,4).
1906 tk_color('DarkOrange',1,4).
1907 tk_color('DarkSeaGreen',1,4).
1908 tk_color('DarkSlateGray',1,4).
1909 tk_color('DeepPink',1,4).
1910 tk_color('DeepSkyBlue',1,4).
1911 tk_color('DodgerBlue',1,4).
1912 tk_color(firebrick,1,4).
1913 tk_color(gold,1,4).
1914 tk_color(goldenrod,1,4).
1915 tk_color(gray,0,99).
1916 tk_color(green,1,4).
1917 tk_color(grey,0,99).
1918 tk_color(honeydew,1,4).
1919 tk_color('HotPink',1,4).
1920 tk_color(indianred,1,4).
1921 tk_color('IndianRed',1,4).
1922 tk_color(ivory,1,4).
1923 tk_color(khaki,1,4).
1924 tk_color('LavenderBlush',1,4).
1925 tk_color('LemonChiffon',1,4).
1926 tk_color('LightBlue',1,4).
1927 tk_color('LightCyan',1,4).
1928 tk_color('LightGoldenrod',1,4).
1929 tk_color('LightPink',1,4).
1930 tk_color('LightSalmon',1,4).
1931 tk_color('LightSkyBlue',1,4).
1932 tk_color('LightSteelBlue',1,4).
1933 tk_color('LightYellow',1,4).
1934 tk_color(magenta,1,4).
1935 tk_color(maroon,1,4).
1936 tk_color('MediumOrchid',1,4).
1937 tk_color('MediumPurple',1,4).
1938 tk_color('MistyRose',1,4).
1939 tk_color('NavajoWhite',1,4).
1940 tk_color(orchid,1,4).
1941 tk_color(orange,1,4).
1942 tk_color(olivedrab,1,4).
1943 tk_color('OliveDrab',1,4).
1944 tk_color('OrangeRed',1,4).
1945 tk_color(mistyrose,1,4).
1946 tk_color(peachpuff,1,4).
1947 tk_color(pink,1,4).
1948 tk_color(plum,1,4).
1949 tk_color(purple,1,4).
1950 tk_color('PaleGreen',1,4).
1951 tk_color('PaleTurquoise',1,4).
1952 tk_color('PaleVioletRed',1,4).
1953 tk_color('PeachPuff',1,4).
1954 tk_color(red,1,4).
1955 tk_color(royalblue,1,4).
1956 tk_color('RosyBrown',1,4).
1957 tk_color('RoyalBlue',1,4).
1958 tk_color(salmon,1,4).
1959 tk_color(seagreen,1,4).
1960 tk_color(seashell,1,4).
1961 tk_color(sienna,1,4).
1962 tk_color(skyblue,1,4).
1963 tk_color(snow,1,4).
1964 tk_color(springgreen,1,4).
1965 tk_color(steelblue,1,4).
1966 tk_color('SeaGreen',1,4).
1967 tk_color('SkyBlue',1,4).
1968 tk_color('SlateBlue',1,4).
1969 tk_color('SlateGray',1,4).
1970 tk_color('SpringGreen',1,4).
1971 tk_color('SteelBlue',1,4).
1972 tk_color(tan,1,4).
1973 tk_color(thistle,1,4).
1974 tk_color(tomato,1,4).
1975 tk_color(turquoise,1,4).
1976 tk_color('VioletRed',1,4).
1977 tk_color(wheat,1,4).
1978 tk_color(yellow,1,4).
1979
1980
1981 tk_color(X) :- tk_color(X,_,_).
1982 tk_color('AliceBlue').
1983 tk_color(beige).
1984 tk_color(black).
1985 tk_color('BlanchedAlmond').
1986 tk_color('BlueViolet').
1987 tk_color(darkblue).
1988 tk_color(darkgray). % this is not a valid X11 color; but it is recognised by Tk (but not by sfdp)
1989 tk_color(darkgreen).
1990 tk_color(darkorange).
1991 tk_color(darkorchid).
1992 tk_color(darkred).
1993 tk_color(darkslateblue).
1994 tk_color(darkviolet).
1995 tk_color('DarkBlue').
1996 tk_color('DarkCyan').
1997 tk_color('DarkGray').
1998 tk_color('DarkGreen').
1999 tk_color('DarkGrey').
2000 tk_color('DarkKhaki').
2001 tk_color('DarkMagenta').
2002 tk_color('DarkRed').
2003 tk_color('DarkSalmon').
2004 tk_color('DarkSlateBlue').
2005 tk_color('DarkTurquoise').
2006 tk_color('DarkViolet').
2007 tk_color('DimGray').
2008 tk_color('DimGrey').
2009 tk_color('FloralWhite').
2010 tk_color('ForestGreen').
2011 tk_color(lightblue).
2012 tk_color(lightgray).
2013 tk_color('LawnGreen').
2014 tk_color('LightCoral').
2015 tk_color('LightGray').
2016 tk_color('LightGreen').
2017 tk_color('LightGrey').
2018 tk_color('LightSeaGreen').
2019 tk_color('LimeGreen').
2020 tk_color(moccasin).
2021 tk_color('MediumAquamarine').
2022 tk_color('MediumBlue').
2023 tk_color('MediumSeaGreen').
2024 tk_color('MediumSlateBlue').
2025 tk_color('MediumSpringGreen').
2026 tk_color('MediumTurquoise').
2027 tk_color('MediumVioletRed').
2028 tk_color('MidnightBlue').
2029 tk_color('MintCream').
2030 tk_color(navy).
2031 tk_color('NavyBlue').
2032 tk_color('OldLace').
2033 tk_color('PapayaWhip').
2034 tk_color('PowderBlue').
2035 tk_color(slateblue).
2036 tk_color(steelblue).
2037 tk_color('SaddleBrown').
2038 tk_color('SandyBrown').
2039 tk_color(violet).
2040 tk_color(white).
2041 tk_color('WhiteSmoke').
2042 tk_color('YellowGreen').
2043
2044 valid_gray(G) :- atom(G), atom_codes(G,GC), append("gray",[N1|T],GC), digit(N1),
2045 (T=[] -> true ; T=[N2],digit(N2)).
2046 digit(N) :- N >47, N<58.
2047
2048
2049 ?hex(X) :- atomic(X), number(X), ((X<103,X>96) ; (X<71,X>64) ; (X>47,X<58)).
2050
2051 :- use_module(library(file_systems)).
2052 check_file_exists(X) :- file_exists(X) -> true ; add_message(preferences,'Warning file for preference does not exist: ',X).
2053 check_directory_exists(X) :-
2054 directory_exists(X) -> true ; add_message(preferences,'Warning directory for preference does not exist: ',X).
2055 :- public check_path_exists/1.
2056 check_path_exists(X) :- (file_exists(X) -> true
2057 ; directory_exists(X) -> true
2058 ; add_message(preferences,'Warning path for preference does not exist: ',X)).
2059
2060 :- dynamic temp_pref/3.
2061 % use to temporarily set preferences;
2062 % changes can be undone with reset_temporary_preference
2063 % change will not be saved if reset_temporary_preference not called (e.g., due to bug/timeout/Ctrl-C)
2064 temporary_set_preference(Pref,Val) :- temporary_set_preference(Pref,Val,_).
2065 temporary_set_preference(Pref,Val,ChangeOccured) :- get_preference(Pref,OldVal),!,
2066 (OldVal=Val -> ChangeOccured=false
2067 ; set_preference_direct(Pref,Val,_,_), ChangeOccured = true,
2068 asserta(temp_pref(Pref,OldVal,Val))
2069 %,debug:debug_println(9,temp_set_pref(Pref,Val))
2070 ).
2071 % Note: assert(p(1)), assert(p(2)), retract(p(X)), retract(p(Y)) -> X=1, Y=2
2072 % Note: asserta(p(1)), asserta(p(2)), retract(p(X)), retract(p(Y)) -> X=2, Y=1
2073
2074 reset_temporary_preference(P) :- reset_temporary_preference(P,_).
2075 reset_temporary_preference(_,ChangeOccured) :- ChangeOccured==false,!. % nothing to do
2076 reset_temporary_preference(Pref,_) :-
2077 (retract(temp_pref(Pref,OldVal,_NewVal))
2078 -> set_preference_direct(Pref,OldVal,_,_)
2079 ; true).
2080
2081 ?reset_all_temporary_preferences :- retract(temp_pref(Pref,OldVal,_)),set_preference(Pref,OldVal),fail.
2082 reset_all_temporary_preferences.
2083
2084 % this set_preference does not update change flag and performs no preference_update_action
2085 set_preference_direct(Pref,Val,_,_) :- var(Pref),!,
2086 print_error('Variable as preference not allowed'),
2087 print_error(set_preference(Pref,Val)),
2088 fail.
2089 set_preference_direct(Pref,Val,OldVal,New) :-
2090 % format(user_output,'~nset_preference ~w to ~w (~w)~n~n',[Pref,Val,OldVal]),
2091 (preference_val_type(Pref,Type)
2092 ? -> (is_of_type(Val,Type)
2093 -> true
2094 ; print_error('New Preference value of incorrect type: '),
2095 print_error(Pref), print_error(Val),
2096 %Val =.. L, print_error(val(L)),
2097 %print_error(expected(Type)),
2098 print_error('No changes performed!'),
2099 fail
2100 )
2101 ; print_error('Do not know type of preference'), print_error(Pref)
2102 ),
2103 (retract(preference(Pref,OldVal)) -> New=false ; New=true),
2104 assert(preference(Pref,Val)),
2105 (New=false,OldVal=Val -> true ; preference_update_action(Pref,Val)).
2106
2107 set_preference(Pref,Val) :-
2108 set_preference_direct(Pref,Val,OldVal,New),
2109 retractall(temp_pref(Pref,_,_)), % user has overriden temporary choice
2110 (New=false,OldVal=Val -> true ; assert_change_flag).
2111
2112
2113
2114 tcltk_get_preference(Pref,Val) :- /* same as get_preference, but convert non-atomic into atoms */
2115 get_preference(Pref,V),
2116 (atomic(V) -> Val=V
2117 ; translate_term_into_atom(V,Val)
2118 ).
2119
2120 get_preference(Pref,Val) :-
2121 (preference(Pref,V)
2122 -> Val=V
2123 ; (preference_default_value(Pref,V)
2124 -> Val=V
2125 ; print_error('Invalid Preference in get_preference:'),
2126 print_error(Pref),
2127 Val = 0
2128 )
2129 ).
2130
2131 % rules for computed/derived preferences:
2132 get_computed_preference(debug_time_out,Res) :-
2133 preference(debug_time_out_factor,TFactor), !,
2134 get_time_out_preference_with_factor(TFactor,Res).
2135 get_computed_preference(convert_closures_into_explicit_form_for_store,Value) :-
2136 preference(convert_comprehension_sets_into_closures,SymbolicV),!,
2137 (SymbolicV=true -> Value=false ; Value=true).
2138 get_computed_preference(X,_) :- print_error('Invalid Preference in get_computed_preference:'),
2139 print_error(X).
2140
2141 get_time_out_preference_with_factor(TFactor,Res) :-
2142 preference(time_out,CurTO),
2143 (disabled_time_out(CurTO)
2144 -> disabled_time_out(Res) % keep disabled_time_out value
2145 ; DTimeOut is integer(CurTO * TFactor),
2146 prune_time_out_preference(DTimeOut,Res)).
2147 add_time_outs(TO1,TO2,ResTO) :-
2148 (disabled_time_out(TO1) -> ResTO=TO1
2149 ; disabled_time_out(TO2) -> ResTO=TO2
2150 ; ResTO is TO1+TO2
2151 ).
2152
2153 % value of 2147483646 means time-out was disabled, 600 hours; should we move to 64 bits ?
2154 disabled_time_out(2147483646).
2155 prune_time_out_preference(X,Res) :- (X>= 2147483646 -> disabled_time_out(Res) ; Res=X).
2156
2157 time_out_preference_disabled :- preference(time_out,2147483646).
2158
2159 cur_pref_string(Pref,String) :-
2160 preference_description(Pref,Desc),
2161 (eclipse_preference(ECLPREF,Pref) -> ajoin([ECLPREF,': ',Desc],String)
2162 ; String=Desc). %string_concatenate(Desc,';',String)).
2163 /* preference(Pref,Val),
2164 string_concatenate(Val,';',V1),
2165 string_concatenate(' = ',V1,V2),
2166 string_concatenate(Desc,V2,String). */
2167
2168 /* useful predicates for Tcl/Tk listbox interaction: */
2169 get_preferences_list(List) :-
2170 findall(S,cur_pref_string(_,S),List).
2171 get_preferences_list(Category,list(List)) :-
2172 findall(S,(virtual_preference_category(Pref,Category),cur_pref_string(Pref,S)),List).
2173
2174 % add some virtual categories like eclipse
2175 virtual_preference_category(Pref,Category) :- Category==eclipse,!,
2176 findall(e(E,P),(eclipse_preference(E,P), \+ preference_category(P,hidden)),List),
2177 sort(List,SList),
2178 member(e(_,Pref),SList).
2179 virtual_preference_category(Pref,Category) :- preference_description(Pref,_Desc), preference_category(Pref,Category).
2180 virtual_preference_category(Pref,Category) :- preference_description(Pref,_Desc),
2181 alternate_preference_category(Pref,Category).
2182
2183
2184 get_ith_preference_type(Pos,Type) :- get_ith_preference_type(_,Pos,Type).
2185 get_ith_preference_type(Category,Pos,Type) :-
2186 findall(S, (virtual_preference_category(Pref,Category),
2187 preference_val_type(Pref,S)), List),
2188 (nth1(Pos,List,FType) -> Type=FType
2189 ; (add_error(get_ith_preference_type,'Could not find preference: ',nth1(Pos,List)),fail)).
2190
2191 get_ith_preference_value(Pos,Val) :- get_ith_preference_value(_,Pos,Val).
2192 get_ith_preference_value(Category,Pos,Val) :-
2193 findall(S, (virtual_preference_category(Pref,Category),
2194 tcltk_get_preference(Pref,S)), List),
2195 (nth1(Pos,List,FVal) -> Val=FVal
2196 ; (add_error(get_ith_preference_value,'Could not find preference: ',nth1(Pos,List)),fail)).
2197
2198 set_ith_preference_value(Pos,Val) :- set_ith_preference_value(_,Pos,Val).
2199 set_ith_preference_value(Category,Pos,Val) :-
2200 findall(S, virtual_preference_category(S,Category), List),
2201 (nth1(Pos,List,Pref) -> set_preference(Pref,Val)
2202 ; add_error(set_ith_preference_value,'Could not find preference: ',nth1(Pos,List)),fail).
2203
2204
2205 /* ------------------------- */
2206
2207 :- dynamic nr_of_recent_documents/1.
2208 :- dynamic recent_documents/1.
2209 nr_of_recent_documents(0).
2210
2211 recompute_nr_of_recent_documents :-
2212 retractall(nr_of_recent_documents(_)),
2213 findall(X,recent_documents(X),List),
2214 length(List,Nr),
2215 assert(nr_of_recent_documents(Nr)).
2216
2217
2218 :- dynamic add_recent_documents_active/0.
2219 add_recent_documents_active.
2220
2221 activate_recent_documents :- (add_recent_documents_active -> true ; assert(add_recent_documents_active)).
2222
2223 deactivate_recent_documents :- retractall(add_recent_documents_active).
2224
2225 /* use to add a file to recent documents list */
2226 add_recent_document(_) :- \+ add_recent_documents_active, !.
2227 add_recent_document(Document) :-
2228 (retract(nr_of_recent_documents(Nr)) -> true ; Nr=0),
2229 (retract(recent_documents(Document))
2230 -> N1 =Nr ; N1 is Nr+1
2231 ),
2232 (preference(number_of_recent_documents,Max) -> true ; Max=25),
2233 (N1>Max -> (retract(recent_documents(_)),assert(nr_of_recent_documents(Nr)))
2234 ; assert(nr_of_recent_documents(N1))),
2235 assertz(recent_documents(Document)),
2236 assert_change_flag.
2237
2238 get_recent_documents(list(Res)) :-
2239 findall(X,recent_documents(X),List),
2240 reverse(List,Res).
2241
2242 clear_recent_documents :-
2243 retractall(recent_documents(_)),
2244 retractall(nr_of_recent_documents(_)),
2245 assert(nr_of_recent_documents(0)).
2246
2247
2248 /* use to add a string to the searched patterns list */
2249 :- dynamic searched_patterns/1.
2250 :- dynamic replaced_patterns/1.
2251 :- dynamic eval_history_elements/1.
2252 :- dynamic eval_csp_history_elements/1.
2253 :- dynamic checked_ltl_formulas/1.
2254
2255
2256 add_element_to_history(Predicate,Pattern,MaxNumb) :-
2257 merge_prefix_with_suffix(number_of_,Predicate,Name),
2258 get_predicate_term_with_single_argument(Name,Nr,TermNum),
2259 (retract(TermNum) -> true ; Nr=0),
2260 get_predicate_term_with_single_argument(Predicate,Pattern,Term),
2261 (retract(Term) -> N1=Nr ; N1 is Nr+1),
2262 (preference(TermNum,Max) -> true ; Max=MaxNumb),
2263 get_predicate_term_with_single_argument(Predicate,_,Term1),
2264 (N1>Max -> (retract(Term1),assert(TermNum))
2265 ; get_predicate_term_with_single_argument(Name,N1,TermNum1),
2266 assert(TermNum1)),assertz(Term),
2267 assert_change_flag.
2268
2269 % this will be used with checked_ltl_formulas, ... from tcltk_gui.tcl
2270 :- public searched_patterns/1, replaced_patterns/1, eval_history_elements/1, eval_csp_history_elements/1, checked_ltl_formulas/1.
2271 get_history_elements_list(Predicate,Reversed,list(Res)) :-
2272 get_predicate_term_with_single_argument(Predicate,X,Term),
2273 findall(X,Term,List),
2274 (Reversed=true -> reverse(List,Res); Res=List).
2275
2276
2277
2278 /* not used
2279 :- dynamic number_of_checked_ltl_formulas/1.
2280 number_of_checked_ltl_formulas(0).
2281 recompute_nr_of_checked_ltl_formulas :-
2282 retractall(number_of_checked_ltl_formulas(_)),
2283 findall(F,checked_ltl_formulas(F),List),
2284 length(List,Nr),assert(number_of_checked_ltl_formulas(Nr)). */
2285
2286 merge_prefix_with_suffix(Prefix,Ending,Name) :-
2287 atom_codes(Prefix,Pr),atom_codes(Ending,End),
2288 append(Pr,End,CodeName),atom_codes(Name,CodeName).
2289
2290 get_predicate_term_with_single_argument(Name,Arg,Term) :-
2291 functor(Term,Name,1),arg(1,Term,Arg).
2292
2293
2294 /* ------------------------- */
2295
2296 :- dynamic prob_application_type/1.
2297 prob_application_type(unknown).
2298
2299 get_prob_application_type(X) :- prob_application_type(X).
2300 set_prob_application_type(X) :- retractall(prob_application_type(_)), assert(prob_application_type(X)).
2301 % can be tcltk, probcli, prob2, ...
2302
2303 /* ------------------------- */
2304
2305 set_preference_group(Group,_) :- \+ preference_group_description(Group,_),!,
2306 add_error(set_preference_mode,'Preference mode does not exist: ',Group).
2307 set_preference_group(Group,default) :- preference_group_val(Group,Scheme,_,_),!,
2308 ( preference_group_val(Group,Scheme,Pref,_),preference_default_value(Pref,Val),
2309 set_preference(Pref,Val),fail
2310 ; true).
2311 ?set_preference_group(Group,Scheme) :- preference_group_val(Group,Scheme,Pref,Val),
2312 set_preference(Pref,Val),fail.
2313 set_preference_group(_,_).
2314
2315
2316 preference_group_description(integer,'Values for MAXINT and MININT').
2317 preference_group_description(time_out,'To disable TIME_OUT').
2318 preference_group_description(model_check,'Model Checking Limits').
2319 preference_group_description(dot_colors,'Colours for Dot graphs').
2320
2321 preference_group_val(integer,int32,maxint,2147483647). % 2147483647
2322 preference_group_val(integer,int32,minint,-2147483648). %-2147483648
2323 preference_group_val(integer,int8,maxint,127).
2324 preference_group_val(integer,int8,minint,-128).
2325
2326 preference_group_val(time_out,disable_time_out,time_out,TO) :- disabled_time_out(TO). % this value turns time_out off, e.g., in safe_time_out
2327
2328 preference_group_val(model_check,unlimited,time_out,TO) :- disabled_time_out(TO). % this value turns time_out off
2329 preference_group_val(model_check,unlimited,maxNrOfInitialisations,Max) :- prolog_flag(max_tagged_integer,Max).
2330 preference_group_val(model_check,unlimited,maxNrOfEnablingsPerOperation,Max) :- prolog_flag(max_tagged_integer,Max).
2331 preference_group_val(model_check,disable_max,maxNrOfInitialisations,Max) :- prolog_flag(max_tagged_integer,Max).
2332 preference_group_val(model_check,disable_max,maxNrOfEnablingsPerOperation,Max) :- prolog_flag(max_tagged_integer,Max).
2333
2334 preference_group_val(dot_colors,classic,dot_normal_node_colour, olivedrab2).
2335 preference_group_val(dot_colors,classic,dot_normal_arc_colour,steelblue).
2336 preference_group_val(dot_colors,classic,dot_open_node_colour,red).
2337 preference_group_val(dot_colors,classic,dot_goal_node_colour,orange).
2338 preference_group_val(dot_colors,classic,dot_invariant_violated_node_colour,maroon2).
2339 preference_group_val(dot_colors,classic,dot_counterexample_node_colour,brown).
2340 preference_group_val(dot_colors,classic,dot_counterexample_op_colour,brown).
2341
2342 preference_group_val(dot_colors,winter,dot_normal_node_colour, '#425955').
2343 preference_group_val(dot_colors,winter,dot_normal_arc_colour,'#1B1D26').
2344 preference_group_val(dot_colors,winter,dot_open_node_colour,'#BFBD9F').
2345 preference_group_val(dot_colors,winter,dot_goal_node_colour,'#CC8604').
2346 preference_group_val(dot_colors,winter,dot_invariant_violated_node_colour,'#9C080C').
2347
2348 preference_group_val(dot_colors,dreams,dot_normal_node_colour, '#5D7359').
2349 preference_group_val(dot_colors,dreams,dot_invariant_violated_node_colour,'#661C0E').
2350 preference_group_val(dot_colors,dreams,dot_normal_arc_colour,'#8C5430').
2351 preference_group_val(dot_colors,dreams,dot_open_node_colour,'#D6AA5C').
2352 preference_group_val(dot_colors,dreams,dot_goal_node_colour,'#FFC800').
2353
2354
2355 :- use_module(eventhandling,[register_event_listener/3]).
2356 :- register_event_listener(startup_prob,init_preferences,
2357 'Initialise Preferences').
2358 :- register_event_listener(clear_specification,reset_all_temporary_preferences,
2359 'Reset Temporary Preferences.').
2360 :- register_event_listener(start_unit_tests,(backup_preferences,
2361 set_preference(minint,-1),
2362 set_preference(maxint,3),
2363 set_preference(translate_print_all_sequences,false),
2364 set_preference(translate_print_cs_style_sequences,false)
2365 ),
2366 'Setting up Preferences for Unit Tests').
2367 :- register_event_listener(stop_unit_tests, revert_preferences, 'Reverting Preferences').