| 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 |