This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revisionLast revisionBoth sides next revision |
reference:rules [2016/03/14 13:42] – [Production rules] gawrilow | user_guide:extend:rules [2019/01/25 16:02] – ↷ Page moved from reference:rules to user_guide:extend:rules oroehrig |
---|
=== Permutations === | === Permutations === |
| |
A production rule can [[permutations#Triggering the permutation|trigger a permutation]] if it produces some properties sensitive to this permutation without reading any other properties being as well sensitive to it. While the threat of triggering could in most cases be detected automatically by analyzing the rule header, we prefer to state this explicitly by putting the following adornment line: | A production rule can [[permutations#Creating permuted subobjects|incur a permutation]] if it produces some properties sensitive to this permutation without reading any other properties being as well sensitive to it. While the threat of triggering could in most cases be detected automatically by analyzing the rule header, we prefer to state this explicitly by putting the following adornment line: |
permutation : PermutationName; | incurs PermutationName; |
| |
As a little aid, there is a script ''list_suspicious_rules'' which performs the analysis of all production rules in an application and prints the headers of rules which could trigger a permutation but does not state it. | As a little aid, there is a script ''list_suspicious_rules'' which performs the analysis of all production rules in an application and prints the headers of rules which could incur a permutation but does not state it. |
| |
Currently a production rule can't be declared to trigger more than one permutation. | Currently, a production rule can't be declared to incur more than one permutation. |
| |
==== Rules operating on multiple subobjects ==== | ==== Rules operating on multiple subobjects ==== |