1 | % (c) 2021-2024 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(pathes_extensions_db,[ | |
6 | prob_extension/1, | |
7 | compile_time_unavailable_extension/2, | |
8 | module_path_implements_extension/3, | |
9 | silently_fail_unavailable_predicate/3, | |
10 | lib_component_implements_extension/4, | |
11 | lib_file_suffix/3, | |
12 | load_spec_file_requires_extension/2, | |
13 | preference_value_requires_extension/3, | |
14 | probcli_command_requires_extension/2, | |
15 | external_function_requires_extension/2 | |
16 | ]). | |
17 | ||
18 | ||
19 | % ------------------------------------ | |
20 | % PROB EXTENSIONS DECLARATION DATABASE | |
21 | % ------------------------------------ | |
22 | ||
23 | % keep track of which optional extensions of ProB are available | |
24 | % and patch use_modules to unloaded extensions | |
25 | % Note: only use_modules with explicit import lists are patched ! | |
26 | ||
27 | % This module is potentially loaded very early (from the pathes module). | |
28 | % To avoid cyclic dependency problems, do not import any other ProB modules | |
29 | % (or at least be very careful). | |
30 | ||
31 | % PROB-CORE EXTENSIONS: | |
32 | % --------------------- | |
33 | ||
34 | :- load_files(library(system), [when(compile_time), imports([environ/2])]). | |
35 | ||
36 | % TO DO: provide a way to choose which extensions are available | |
37 | % these are the extensions that are present in the prob-core: | |
38 | core_extension(counter_extension). % one can use Prolog version by setting prob_c_counter to false, but counter_extensions is available in both cases | |
39 | ||
40 | core_extension(core). | |
41 | core_extension(dot_extension). % do we need this in core? | |
42 | core_extension(plspec_extension). | |
43 | ||
44 | % compile_time_unavailable_extension cannot guarantee that an extension will be available! | |
45 | % It can only report that an extension will definitely be unavailable. | |
46 | % If this predicate fails, it means that the extension was compiled in, | |
47 | % but may still be unavailable at runtime for other reasons, | |
48 | % which can be checked using unavailable_extension/2 from the pathes_lib module. | |
49 | ||
50 | :- if(environ(prob_core_only,true)). | |
51 | compile_time_unavailable_extension(E, 'non-core extension disabled using prob_core_only=true') :- \+ core_extension(E). | |
52 | :- endif. | |
53 | ||
54 | :- if(environ(prob_myheap,false)). % otherwise we use Prolog version | |
55 | compile_time_unavailable_extension(myheap_extension, 'manually disabled using prob_myheap=false'). | |
56 | :- endif. | |
57 | ||
58 | :- if(environ(disable_chr,true)). % otherwise we use Prolog version | |
59 | compile_time_unavailable_extension(chr_extension, 'manually disabled using disable_chr=true'). | |
60 | :- endif. | |
61 | ||
62 | compile_time_unavailable_extension(_, _) :- fail. | |
63 | ||
64 | prob_extension(alloy2b_extension). | |
65 | prob_extension(atelierb_extension). | |
66 | prob_extension(avl_ugraphs_extension). | |
67 | prob_extension(bliss_extension). | |
68 | prob_extension(bvisual2_extension). | |
69 | prob_extension(cbc_extension). | |
70 | prob_extension(chr_extension). | |
71 | prob_extension(counter_extension). | |
72 | prob_extension(core). | |
73 | prob_extension(cse_extension). | |
74 | prob_extension(cspm_extension). | |
75 | prob_extension(coverage_extension). | |
76 | prob_extension(disprover_extension). | |
77 | prob_extension(dot_extension). | |
78 | prob_extension(cdclt_extension). | |
79 | prob_extension(external_svg_extension). | |
80 | prob_extension(external_reals_extension). | |
81 | prob_extension(fuzz_extension). | |
82 | prob_extension(fuzzing_extension). | |
83 | prob_extension(graphical_state_viewer_extension). | |
84 | prob_extension(hit_profiler_extension). | |
85 | prob_extension(json_extension). | |
86 | prob_extension(kodkod_extension). | |
87 | prob_extension(latex_extension). | |
88 | prob_extension(ltl_extension). | |
89 | prob_extension(ltl2ba_extension). | |
90 | prob_extension(ltsmin_extension). | |
91 | prob_extension(mcdc_coverage_extension). | |
92 | prob_extension(meta_interface_extension). | |
93 | prob_extension(myheap_extension). | |
94 | prob_extension(nauty_extension). | |
95 | prob_extension(opcache_extension). | |
96 | prob_extension(optimizing_solver_extension). | |
97 | prob_extension(pge_extension). | |
98 | prob_extension(plspec_extension). | |
99 | prob_extension(pltables_extension). | |
100 | prob_extension(por_extension). | |
101 | prob_extension(predicate_debugger_extension). | |
102 | prob_extension(probhash_extension). | |
103 | prob_extension(random_permutations). | |
104 | prob_extension(refinement_extension). | |
105 | prob_extension(regexp_extension). | |
106 | prob_extension(satsolver_extension). | |
107 | prob_extension(setlog_extension). | |
108 | prob_extension(smt_extension). | |
109 | prob_extension(smtlib_extension). | |
110 | prob_extension(state_graph_extension). | |
111 | prob_extension(symbolic_model_checker_extension). | |
112 | prob_extension(symmetry_extension). | |
113 | prob_extension(synthesis_extension). | |
114 | prob_extension(table_tools_extension). | |
115 | prob_extension(tcltk_extension). | |
116 | prob_extension(timer_extension). | |
117 | prob_extension(tla2b_extension). | |
118 | prob_extension(tlc4b_extension). | |
119 | prob_extension(unsat_core_extension). | |
120 | prob_extension(visb_extension). | |
121 | prob_extension(wd_extension). | |
122 | prob_extension(wp_ba_extension). | |
123 | prob_extension(xml2b_extension). | |
124 | prob_extension(zmq_extension). | |
125 | ||
126 | ||
127 | ||
128 | % PATHS/MODULES for EXTENSIONS: | |
129 | % ----------------------------- | |
130 | ||
131 | % module_path_implements_extension (PATH, ModuleName, ExtensionName) | |
132 | ||
133 | % TO DO: complete lists | |
134 | module_path_implements_extension(chrsrc(M),M,chr_extension). | |
135 | module_path_implements_extension(cbcsrc(M),M,cbc_extension). | |
136 | module_path_implements_extension(covsrc(hit_profiler),hit_profiler,hit_profiler_extension). | |
137 | module_path_implements_extension(disproversrc(M),M,disprover_extension). | |
138 | module_path_implements_extension(dotsrc(M),M,dot_extension). | |
139 | module_path_implements_extension(cdclt_solver(M),M,cdclt_extension). | |
140 | module_path_implements_extension(extrasrc(atelierb_provers_interface),atelierb_provers_interface,atelierb_extension). | |
141 | module_path_implements_extension(extrasrc(avl_ugraphs),avl_ugraphs,avl_ugraphs_extension). | |
142 | module_path_implements_extension(extrasrc(b_expression_sharing),b_expression_sharing,cse_extension). | |
143 | module_path_implements_extension(extrasrc(b_operation_cache),b_operation_cache,opcache_extension). | |
144 | module_path_implements_extension(extrasrc(b2setlog),b2setlog,setlog_extension). | |
145 | module_path_implements_extension(extrasrc(before_after_predicates),before_after_predicates,wp_ba_extension). | |
146 | module_path_implements_extension(extrasrc(bvisual2),bvisual2,bvisual2_extension). | |
147 | module_path_implements_extension(extrasrc(coverage_statistics),coverage_statistics,coverage_extension). | |
148 | module_path_implements_extension(extrasrc(external_functions_svg),external_functions_svg,external_svg_extension). | |
149 | module_path_implements_extension(extrasrc(external_functions_reals),external_functions_svg,external_reals_extension). | |
150 | module_path_implements_extension(extrasrc(graphical_state_viewer_images),graphical_state_viewer_images,graphical_state_viewer_extension). | |
151 | module_path_implements_extension(extrasrc(json_parser),json_parser,json_extension). | |
152 | module_path_implements_extension(extrasrc(latex_processor),latex_processor,latex_extension). | |
153 | module_path_implements_extension(extrasrc(meta_interface),meta_interface,meta_interface_extension). | |
154 | module_path_implements_extension(extrasrc(mcdc_coverage),mcdc_coverage,mcdc_coverage_extension). | |
155 | module_path_implements_extension(extrasrc(optimizing_solver),optimizing_solver,optimizing_solver_extension). | |
156 | module_path_implements_extension(extrasrc(predicate_debugger),predicate_debugger,predicate_debugger_extension). | |
157 | module_path_implements_extension(extrasrc(refinement_checker),refinement_checker,refinement_extension). | |
158 | module_path_implements_extension(extrasrc(state_graph_canon),state_graph_canon,state_graph_extension). | |
159 | module_path_implements_extension(extrasrc(unsat_cores),unsat_cores,unsat_core_extension). | |
160 | module_path_implements_extension(extrasrc(weakest_preconditions),weakest_preconditions,wp_ba_extension). | |
161 | module_path_implements_extension(extrasrc(xml2b),xml2b,xml2b_extension). | |
162 | module_path_implements_extension(extrasrc(table_tools),table_tools,table_tools_extension). | |
163 | module_path_implements_extension(kodkodsrc(M),M,kodkod_extension). | |
164 | module_path_implements_extension(pltablesrc(M),M,pltables_extension). | |
165 | module_path_implements_extension(probcspsrc(M),M,cspm_extension). | |
166 | module_path_implements_extension(probltlsrc(M),M,ltl_extension). | |
167 | module_path_implements_extension(probltlsrc(ltl_safety),ltl_safety,ltl2ba_extension). | |
168 | module_path_implements_extension(probpgesrc(M),M,pge_extension). %pge_algo:do_not_evaluate_guard/0 | |
169 | module_path_implements_extension(probporsrc(M),M,por_extension). | |
170 | module_path_implements_extension(probsrc('alloy2b/alloy2b'),alloy2b,alloy2b_extension). | |
171 | module_path_implements_extension(prozsrc(M),M,fuzz_extension). | |
172 | module_path_implements_extension(smt_solvers_interface(M),M,smt_extension). | |
173 | module_path_implements_extension(smtlib_solver(M),M,smtlib_extension). | |
174 | module_path_implements_extension(symsrc(M),M,symmetry_extension). | |
175 | module_path_implements_extension(symbolic_model_checker(M),M,symbolic_model_checker_extension). | |
176 | module_path_implements_extension(synthesis(M),N,synthesis_extension) :- (get_module_name(M,N) -> true ; M=N). | |
177 | module_path_implements_extension(tcltkuisrc(M),M,tcltk_extension). | |
178 | module_path_implements_extension(visbsrc(M),M,visb_extension). | |
179 | module_path_implements_extension(wdsrc(M),M,wd_extension). | |
180 | ||
181 | % modules/files in extension (usually C/C++ related extensions): | |
182 | module_path_implements_extension(extension('bliss/bliss_interface'),bliss_interface,bliss_extension). | |
183 | module_path_implements_extension(extension('counter/counter'),counter,counter_extension). | |
184 | module_path_implements_extension(extension('cvc4interface/cvc4interface'),cvc4interface,smt_extension). | |
185 | module_path_implements_extension(extension('ltl2ba/ltl2ba'),ltl2ba,ltl2ba_extension). | |
186 | module_path_implements_extension(extension('ltlc/ltlc'),ltlc,ltl_extension). | |
187 | module_path_implements_extension(extension('ltsmin/ltsmin_trace'),ltsmin_trace,ltsmin_extension). | |
188 | module_path_implements_extension(extension('ltsmin/ltsmin'),ltsmin,ltsmin_extension). | |
189 | module_path_implements_extension(extension('myheap/myheap'),myheap,myheap_extension). | |
190 | module_path_implements_extension(extension('nauty/graphiso'),graphiso,nauty_extension). | |
191 | module_path_implements_extension(extension('plspec/plspec/plspec_core'),plspec_core,plspec_extension). | |
192 | module_path_implements_extension(extension('plspec/plspec/prettyprinter'),prettyprinter,plspec_extension). | |
193 | module_path_implements_extension(extension('probhash/probhash'),probhash,probhash_extension). | |
194 | module_path_implements_extension(extension('prolog_fuzzer/fuzzing'),fuzzing,fuzzing_extension). | |
195 | module_path_implements_extension(extension('random_permutations/random_permutations'),random_permutations,random_permutations). | |
196 | module_path_implements_extension(extension('regexp/regexp'),regexp,regexp_extension). | |
197 | module_path_implements_extension(extension('satsolver/satsolver'),satsolver,satsolver_extension). | |
198 | module_path_implements_extension(extension('timer/timer'),timer,timer_extension). | |
199 | module_path_implements_extension(extension('z3interface/z3interface'),z3interface,smt_extension). | |
200 | module_path_implements_extension(extension('zmq/master/master'),master,zmq_extension). | |
201 | module_path_implements_extension(extension('zmq/worker/worker'),worker,zmq_extension). | |
202 | module_path_implements_extension(extension('zmq/zmq'),zmq,zmq_extension). | |
203 | ||
204 | ||
205 | % TO DO: deconstruct programmatically | |
206 | get_module_name('deep_learning/ground_truth',ground_truth). | |
207 | get_module_name('deep_learning/b_machine_identifier_normalization',b_machine_identifier_normalization). | |
208 | get_module_name('deep_learning/predicate_data_generator',predicate_data_generator). | |
209 | get_module_name('deep_learning/operation_data_generator',operation_data_generator). | |
210 | ||
211 | % declare predicates that should silently fail | |
212 | % when the corresponding extension is not available | |
213 | silently_fail_unavailable_predicate(is_dot_command,1,meta_interface_extension). | |
214 | silently_fail_unavailable_predicate(is_dot_command_for_expr,1,meta_interface_extension). | |
215 | silently_fail_unavailable_predicate(is_plantuml_command,1,meta_interface_extension). | |
216 | silently_fail_unavailable_predicate(is_plantuml_command_for_expr,1,meta_interface_extension). | |
217 | silently_fail_unavailable_predicate(is_table_command,1,meta_interface_extension). | |
218 | silently_fail_unavailable_predicate(is_table_command_for_expr,1,meta_interface_extension). | |
219 | silently_fail_unavailable_predicate(get_profile_stats,2,hit_profiler_extension). | |
220 | silently_fail_unavailable_predicate(retract_profile_stats,2,hit_profiler_extension). | |
221 | ||
222 | ||
223 | % LIB FILES for EXTENSIONS: | |
224 | % ------------------------- | |
225 | ||
226 | % Required components: | |
227 | lib_component_implements_extension(java_parser,jar,'probcliparser',core). | |
228 | lib_component_implements_extension(statespace_queue,bundle,'myheap',core). % but fallback exists | |
229 | lib_component_implements_extension(user_signal,bundle,'user_signal',core). % required for ProB2 | |
230 | ||
231 | lib_component_implements_extension(kodkod,jar,'probkodkod',kodkod_extension). | |
232 | lib_component_implements_extension(tla2b,jar,'TLA2B',tla2b_extension). | |
233 | lib_component_implements_extension(tlc4b,jar,'TLC4B',tlc4b_extension). | |
234 | lib_component_implements_extension(alloy2b,jar,'alloy2b',alloy2b_extension). | |
235 | lib_component_implements_extension(ltl2ba,bundle,'ltl2ba',ltl2ba_extension). | |
236 | lib_component_implements_extension(ltlc,bundle,'ltlc',ltl_extension). | |
237 | lib_component_implements_extension(counter,bundle,'counter',counter_extension). | |
238 | lib_component_implements_extension(ltsmin_bundle,bundle,'ltsmin',ltsmin_extension). | |
239 | lib_component_implements_extension(ltsmin_sequential,executable,'prob2lts-seq',ltsmin_extension). | |
240 | lib_component_implements_extension(ltsmin_symbolic,executable,'prob2lts-sym',ltsmin_extension). | |
241 | lib_component_implements_extension(ltsmin_printtrace,executable,'ltsmin-printtrace',ltsmin_extension). | |
242 | lib_component_implements_extension(csp_parser,executable,'cspmf',cspm_extension). | |
243 | lib_component_implements_extension(fuzz_parser,executable,'fuzz',fuzz_extension). | |
244 | lib_component_implements_extension(fuzz_lib,file,'fuzzlib',fuzz_extension). | |
245 | lib_component_implements_extension(nauty,bundle,'graphiso',nauty_extension). | |
246 | lib_component_implements_extension(regexp,bundle,'regexp',regexp_extension). | |
247 | lib_component_implements_extension(random_permutations,bundle,'random_permutations',random_permutations). | |
248 | lib_component_implements_extension(setlog,qlf,'setlog-cli',setlog_extension). | |
249 | lib_component_implements_extension(z3,bundle,'z3interface',smt_extension). | |
250 | lib_component_implements_extension(zmq,bundle,'zmq',zmq_extension). | |
251 | ||
252 | lib_file_suffix(bundle,darwin,'.bundle'). | |
253 | lib_file_suffix(bundle,windows,'.dll'). | |
254 | lib_file_suffix(bundle,linux,'.so'). | |
255 | lib_file_suffix(executable,windows,'.exe'). | |
256 | lib_file_suffix(executable,P,'') :- P \= windows. | |
257 | lib_file_suffix(file,_,''). | |
258 | lib_file_suffix(jar,_,'.jar'). | |
259 | lib_file_suffix(qlf,_,'.qlf'). % SWI compiled Prolog program | |
260 | ||
261 | ||
262 | % FILENAME SUFFIXES (FILE EXTENSIONS): | |
263 | % ----------------- | |
264 | ||
265 | % see second argument of known_spec_file_extension | |
266 | load_spec_file_requires_extension(alloy,alloy2b_extension). | |
267 | load_spec_file_requires_extension(csp,cspm_extension). | |
268 | load_spec_file_requires_extension(smt,smtlib_extension). | |
269 | load_spec_file_requires_extension(tla,tla2b_extension). | |
270 | load_spec_file_requires_extension(z,fuzz_extension). | |
271 | ||
272 | ||
273 | % PREFERENCE VALUES: | |
274 | % ----------------- | |
275 | ||
276 | preference_value_requires_extension(symmetry_mode,hash,symmetry_extension). | |
277 | preference_value_requires_extension(symmetry_mode,flood,symmetry_extension). | |
278 | preference_value_requires_extension(symmetry_mode,nauty,symmetry_extension). | |
279 | preference_value_requires_extension(symmetry_mode,nauty,nauty_extension). | |
280 | ||
281 | %preference_value_requires_extension(use_chr_solver,true,chr_extension). | |
282 | preference_value_requires_extension(use_common_subexpression_elimination,true,cse_extension). | |
283 | preference_value_requires_extension(smt_supported_interpreter,true,smt_extension). | |
284 | ||
285 | preference_value_requires_extension(use_solver_on_load,kodkod,kodkod_extension). | |
286 | preference_value_requires_extension(use_solver_on_load,z3,smt_extension). | |
287 | preference_value_requires_extension(use_solver_on_load,z3cns,smt_extension). | |
288 | preference_value_requires_extension(use_solver_on_load,z3axm,smt_extension). | |
289 | preference_value_requires_extension(use_solver_on_load,sat,satsolver_extension). | |
290 | preference_value_requires_extension(use_solver_on_load,cdclt,cdclt_extension). | |
291 | ||
292 | preference_value_requires_extension(pge,Val,pge_extension) :- dif(Val,off). | |
293 | preference_value_requires_extension(por,Val,por_extension) :- dif(Val,off). | |
294 | preference_value_requires_extension(use_safety_ltl_model_checker,true,ltl2ba_extension). % ltl.pl performs a separate check is_ltl2ba_tool_installed before checking for the preference | |
295 | preference_value_requires_extension(randomise_enumeration_order,true,random_permutations). | |
296 | ||
297 | preference_value_requires_extension(use_cbc_analysis,true,cbc_extension). | |
298 | ||
299 | preference_value_requires_extension(try_atb_provers,true,atelierb_extension). | |
300 | ||
301 | preference_value_requires_extension(try_operation_reuse,Val,opcache_extension) :- Val \= false. | |
302 | ||
303 | preference_value_requires_extension(use_chr_solver,true,chr_extension). | |
304 | ||
305 | % PROBCLI COMMANDS: | |
306 | % ----------------- | |
307 | ||
308 | % which probcli commands requires which extension | |
309 | probcli_command_requires_extension(ltl_assertions,ltl_extension). | |
310 | probcli_command_requires_extension(ltl_formula_model_check(_,_),ltl_extension). | |
311 | probcli_command_requires_extension(ltl_file(_),ltl_extension). | |
312 | ||
313 | probcli_command_requires_extension(dot_command(_,_),dot_extension). | |
314 | probcli_command_requires_extension(dot_command_for_expr(_,_,_,_),dot_extension). | |
315 | probcli_command_requires_extension(csv_table_command(_,_,_,_),meta_interface_extension). | |
316 | ||
317 | probcli_command_requires_extension(process_latex_file(_,_),latex_extension). | |
318 | ||
319 | probcli_command_requires_extension(ltsmin2(_), ltsmin_extension). | |
320 | probcli_command_requires_extension(ltsmin_ltl_output(_), ltsmin_extension). | |
321 | probcli_command_requires_extension(ltsmin_option(_),ltsmin_extension). | |
322 | ||
323 | probcli_command_requires_extension(visb_history(_,_,_),visb_extension). | |
324 | probcli_command_requires_extension(cli_start_mc_with_tlc,tlc4b_extension). | |
325 | ||
326 | probcli_command_requires_extension(cli_check_disprover_result(_),disprover_extension). | |
327 | ||
328 | probcli_command_requires_extension(kodkod_comparision(_),kodkod_extension). | |
329 | probcli_command_requires_extension(kodkod_performance(_),kodkod_extension). | |
330 | ||
331 | probcli_command_requires_extension(zmq_master(_),zmq_extension). | |
332 | probcli_command_requires_extension(zmq_worker(_),zmq_extension). | |
333 | probcli_command_requires_extension(zmq_assertion(_),zmq_extension). | |
334 | ||
335 | probcli_command_requires_extension(csp_main(_),cspm_extension). | |
336 | probcli_command_requires_extension(csp_in_situ_refinement_check(_,_,_),cspm_extension). | |
337 | probcli_command_requires_extension(csp_checkAssertion(_,_,_),cspm_extension). | |
338 | probcli_command_requires_extension(eval_csp_expression(_),cspm_extension). | |
339 | probcli_command_requires_extension(csp_get_assertions,cspm_extension). | |
340 | probcli_command_requires_extension(csp_translate_to_file(_),cspm_extension). | |
341 | probcli_command_requires_extension(add_csp_guide(_),cspm_extension). | |
342 | ||
343 | probcli_command_requires_extension(cli_wd_check(_,_),wd_extension). | |
344 | ||
345 | probcli_command_requires_extension(cli_symbolic_model_check(_),symbolic_model_checker_extension). | |
346 | ||
347 | probcli_command_requires_extension(cli_start_sym_mc_with_lts(_),ltsmin_extension). | |
348 | probcli_command_requires_extension(ltsmin,ltsmin_extension). | |
349 | ||
350 | probcli_command_requires_extension(get_min_max_coverage(_),coverage_extension). | |
351 | probcli_command_requires_extension(get_coverage_information(_),coverage_extension). | |
352 | probcli_command_requires_extension(coverage(_,_,ShowEnabledInfo),coverage_extension) :- | |
353 | ShowEnabledInfo \== just_check_stats, ShowEnabledInfo \== just_summary. | |
354 | ||
355 | probcli_command_requires_extension(refinement_check(_,_,_),refinement_extension). | |
356 | probcli_command_requires_extension(csp_in_situ_refinement_check(_,_),refinement_extension). | |
357 | probcli_command_requires_extension(csp_checkAssertion(_,_),refinement_extension). | |
358 | ||
359 | probcli_command_requires_extension(all_deadlocking_paths(_),cbc_extension). | |
360 | probcli_command_requires_extension(cbc_tests(_),cbc_extension). | |
361 | probcli_command_requires_extension(enabling_analysis_csv(_),cbc_extension). | |
362 | probcli_command_requires_extension(feasibility_analysis_csv(_),cbc_extension). | |
363 | probcli_command_requires_extension(test_description(_),cbc_extension). | |
364 | probcli_command_requires_extension(cbc_sequence(_,_,_),cbc_extension). | |
365 | ||
366 | ||
367 | probcli_command_requires_extension(trace_check(json,_,_),json_extension). | |
368 | probcli_command_requires_extension(trace_check('JSON',_,_),json_extension). | |
369 | ||
370 | probcli_command_requires_extension(cbc_option(unsat_core),unsat_core_extension). | |
371 | probcli_command_requires_extension(disprover_options(Opts),unsat_core_extension) :- | |
372 | member(disprover_option(unsat_core),Opts). | |
373 | ||
374 | probcli_command_requires_extension(dot_command(_,_),meta_interface_extension). | |
375 | probcli_command_requires_extension(dot_command_for_expr(_,_,_,_),meta_interface_extension). | |
376 | ||
377 | probcli_command_requires_extension(check_statespace_hash(_,_),probhash_extension). | |
378 | ||
379 | probcli_command_requires_extension(cli_print_statistics(hit_profile),hit_profiler_extension). % in covsrc | |
380 | ||
381 | ||
382 | % probcli_command_requires_extension(cli_check_properties(_),predicate_debugger_extension). % only used when PROPERTIES inconsistent; hence we just leave comment here | |
383 | ||
384 | ||
385 | % EXTERNAL FUNCTIONS: | |
386 | % ------------------- | |
387 | external_function_requires_extension('KODKOD',kodkod_extension). | |
388 | external_function_requires_extension('KODKOD_SOLVE',kodkod_extension). | |
389 | ||
390 | external_function_requires_extension('REGEX_MATCH',regexp_extension). | |
391 | external_function_requires_extension('REGEX_IMATCH',regexp_extension). | |
392 | external_function_requires_extension('IS_REGEX',regexp_extension). | |
393 | external_function_requires_extension('REGEX_REPLACE',regexp_extension). | |
394 | external_function_requires_extension('REGEX_IREPLACE',regexp_extension). | |
395 | external_function_requires_extension('REGEX_SEARCH_STR',regexp_extension). | |
396 | external_function_requires_extension('REGEX_ISEARCH_STR',regexp_extension). | |
397 | external_function_requires_extension('REGEX_SEARCH',regexp_extension). | |
398 | external_function_requires_extension('REGEX_ISEARCH',regexp_extension). | |
399 | external_function_requires_extension('REGEX_SEARCH_ALL',regexp_extension). | |
400 | external_function_requires_extension('REGEX_ISEARCH_ALL',regexp_extension). | |
401 | ||
402 | ||
403 | external_function_requires_extension('MACHINE_INFO',probhash_extension). | |
404 | external_function_requires_extension('SHA_HASH',probhash_extension). | |
405 | external_function_requires_extension('SHA_HASH_HEX',probhash_extension). | |
406 | external_function_requires_extension('SHA_HASH_FILE_HEX',probhash_extension). | |
407 | ||
408 | external_function_requires_extension('SATSOLVER_SOLVE',satsolver_extension). | |
409 | ||
410 | external_function_requires_extension('READ_XML',xml2b_extension). | |
411 | ||
412 | external_function_requires_extension(svg_points, external_svg_extension). | |
413 | external_function_requires_extension(svg_train, external_svg_extension). | |
414 | external_function_requires_extension(svg_axis, external_svg_extension). | |
415 | external_function_requires_extension(svg_set_polygon,external_svg_extension). | |
416 | external_function_requires_extension(svg_dasharray_for_intervals,external_svg_extension). | |
417 | ||
418 | ||
419 | external_function_requires_extension('STRING_TO_REAL',external_reals_extension). | |
420 | external_function_requires_extension('RADD',external_reals_extension). | |
421 | external_function_requires_extension('RSUB',external_reals_extension). | |
422 | external_function_requires_extension('RMUL',external_reals_extension). | |
423 | external_function_requires_extension('RDIV',external_reals_extension). | |
424 | %TODO: declare all exported functions of external_functions_reals |