$constraints =
$constraint->
getConstraints();
$numericGroups = array
();
$constraintBranches = array
();
foreach ($constraints as $c) { $res = self::
get($c);
$numericGroups[] =
$res['numeric'
];
$constraintBranches[] =
$res['branches'
];
} if ($constraint->
isDisjunctive()) { $branches = Interval::
noDev();
foreach ($constraintBranches as $b) { if ($b['exclude'
]) { if ($branches['exclude'
]) { // disjunctive constraint, so only exclude what's excluded in all constraints
// !=a,!=b || !=b,!=c => !=b
$branches['names'
] =
array_intersect($branches['names'
],
$b['names'
]);
} else { // disjunctive constraint so exclude all names which are not explicitly included in the alternative
// (==b || ==c) || !=a,!=b => !=a
$branches['exclude'
] = true;