}
// go through the y's and if y is bound to a blocked node, set a flag that the block is invalid
for (int i=dlClauseInfo.m_yConstraints.length-1;i>=0;i--) {
// break blocks till the clause is satisfied
YConstraint yConstraint=dlClauseInfo.m_yConstraints[i];
Node yi=dlClauseInfo.m_yNodes[i];
for (AtomicConcept c : yConstraint.m_yConcepts) {
if (yi.isBlocked()&&!((ValidatedBlockingObject)yi.getBlockingObject()).blockViolatesParentConstraints() && !m_extensionManager.containsAssertion(c,yi) && m_extensionManager.containsAssertion(c,yi.getBlocker())) {
((ValidatedBlockingObject)yi.getBlockingObject()).setBlockViolatesParentConstraints(true);
if (debuggingMode) inValidClausesForBlockedParent.put(dlClauseInfo, yi);
return;
}
}
}
for (ConsequenceAtom consequenceAtom : dlClauseInfo.m_consequencesForNonblockedX) {
if (consequenceAtom instanceof MirroredYConsequenceAtom) {
MirroredYConsequenceAtom atom=(MirroredYConsequenceAtom)consequenceAtom;
if (atom.isSatisfiedNonMirrored(m_extensionManager,dlClauseInfo)) {
Node nodeY=dlClauseInfo.m_yNodes[atom.m_yArgumentIndex];
((ValidatedBlockingObject)nodeY.getBlockingObject()).setBlockViolatesParentConstraints(true);
if (debuggingMode) inValidClausesForBlockedParent.put(dlClauseInfo, nodeY);
return;
}
}
}