Open szschaler opened 5 years ago
Thanks, @narudocap. I think I can sort of see how this works for an individual NAC or PAC; i.e., where there is just a graph attached to the rule, possibly with a negation wrapped around it:
I'm less clear on how all of this translates to more complex ACs. Even already an AND of multiple NACs isn't clear to me: what's the check condition here? Do we need the same number of NACs on the other side and then do a one-by-one check? What if some of the individual ACs are themselves nested expressions?
Things get even weirder when we also look at symbolic conditions (such as t3 < t1
). How does one shift these? Is it simply about renaming things? Implication is obviously not an easy one in this case. At the very least we need to introduce some restrictions on what's allowed and even then we will probably need some sort of SAT solving to do this properly, unless we continue to only check for syntactic identity like we do for attribute-value expressions at the moment.
Is there a paper that provides a general construction algorithm for Shift for arbitrary, possibly nested ACs?
Working on this.
One thing I was wondering: is there a way to use the fact that we've been pushing out the woven rule to simplify the woven application condition, too? E.g., Shift (f_L \circ \hat{g}_L, C_0) = Shift (g_L \circ \hat{f}_L, C_0)
?
Paco will, hopefully, look at some examples of what Shift and implication mean for flat PACs/NACs and (perhaps) simple OCL expressions and then we can decide which of these to implement in the tool first.