final IntSet varReachable = new IntBitSet(var+1);
varReachable.add(var);
hits.put(var, varReachable);
}
for(Iterator<Clause> clauseItr = trace.reverseIterator(trace.axioms()); clauseItr.hasNext();) {
final Clause clause = clauseItr.next();
final int maxVar = clause.maxVariable();
for(IntSet reachableVars : hits.values()) {
if (reachableVars.contains(maxVar)) {
for(IntIterator lits = clause.literals(); lits.hasNext(); ) {
reachableVars.add(StrictMath.abs(lits.next()));
}
}
}
}
}
final long[] counts = new long[hits.size()];
for(Iterator<Clause> clauseItr = trace.iterator(trace.core()); clauseItr.hasNext(); ) {
final Clause clause = clauseItr.next();
final int maxVar = clause.maxVariable();
int i = 0;
for(IntSet reachableVars : hits.values()) {
if (reachableVars.contains(maxVar)) {
counts[i]++;
}