1 | % (c) 2009-2022 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(kernel_propagation, | |
6 | [ do_not_enumerate_binary_boolean_operator/3 | |
7 | ]). | |
8 | ||
9 | ||
10 | ||
11 | :- use_module(module_information,[module_info/2]). | |
12 | :- module_info(group,kernel). | |
13 | :- module_info(description,'This module has rules about when and how to propagate in the ProB kernel.'). | |
14 | ||
15 | ||
16 | ||
17 | % avoid enumerating possible values for arguments: | |
18 | do_not_enumerate_binary_boolean_operator(subset,LHS,_) :- cannot_propagate_value_to_expr(LHS). | |
19 | ||
20 | cannot_propagate_value_to_expr(b(E,T,_)) :- cannot_propagate(E,T). | |
21 | % we cannot effectively propagate values to such expressions | |
22 | cannot_propagate(domain(_),_). % when knowing dom(f) we cannot derive f | |
23 | cannot_propagate(range(_),_). | |
24 | %cannot_propagate(_,_). | |
25 | % TO DO: unary_in_boolean_type(pow_subset,kernel_objects:check_subset_of_wf). | |
26 | % unary_in_boolean_type(fin_subset,kernel_objects:check_finite_subset_of_wf). | |
27 | % unary_in_boolean_type(pow1_subset,kernel_objects:check_non_empty_subset_of_wf). | |
28 | ||
29 |