summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2017-07-07 19:05:07 +0000
committerMichał Górny <mgorny@gentoo.org>2017-07-07 19:05:07 +0000
commit9af0bbf79a231c01a03a0d5e0c77b1f743642069 (patch)
tree1a0c416214e27296700e4bacd31d53edadccd9ba
parent/* QA checks/verification */ choice of algo (diff)
downloadglep-9af0bbf79a231c01a03a0d5e0c77b1f743642069.tar.gz
glep-9af0bbf79a231c01a03a0d5e0c77b1f743642069.tar.bz2
glep-9af0bbf79a231c01a03a0d5e0c77b1f743642069.zip
/* QA checks to verify REQUIRED_USE solutions */ mention the indirect implication problem
-rw-r--r--GLEP:73.mw12
1 files changed, 12 insertions, 0 deletions
diff --git a/GLEP:73.mw b/GLEP:73.mw
index ea03838..62efd52 100644
--- a/GLEP:73.mw
+++ b/GLEP:73.mw
@@ -268,6 +268,18 @@ In order to determine the final set of flags ''F<sub>n</sub>'', with specific se
* For every flat constraint ''(C<sub>i</sub>, E<sub>i</sub>)'' in the set:
** If the condition ''C<sub>i</sub>'' always evaluates to true, update ''F'' with ''E<sub>i</sub>'' (''F<sub>i+1</sub> = F<sub>i</sub> ∪ {E<sub>i</sub>} ∖ {¬E<sub>i</sub>}'').
+====Limitations of the algorithm====
+
+The presented check algorithm has a limitation which could result in false positives. However, the testing against all real Gentoo uses of REQUIRED_USE has shown that none of those occur at the moment of writing this GLEP, and that is quite unlikely for them to become a major issue in the future.
+
+The algorithm is unable to infer indirect implications of the constraints. For example, given the following constraint:
+
+ || ( a b c ) a? ( !d ) b? ( !d ) c? ( !d ) d? ( e )
+
+The algorithm is unable to correctly infer that due to the first constraint, ''d'' will never be true. As a result, it will e.g. report an immutability error on <code>d? ( e )</code> if ''e'' is masked even though this condition could never evaluate to true.
+
+However, it is considered that a natural occurrence of such a constraint is quite unlikely, and usually indicates a problem with the constraint anyway. Therefore, reporting a false positive here could serve as an indication of another problem.
+
==Rationale==
===Restrictions for allowed REQUIRED_USE syntax===