* properties specified by the {@linkplain ArrayTrace#ArrayResolution(int[][], int)}
* constructor.
* @return the indices of the core clauses in the given trace
*/
private static IntSet core(int[][] trace, int axioms) {
final IntSet core = new IntBitSet(axioms);
final IntSet reachable = new IntBitSet(trace.length);
reachable.add(trace.length-1);
for(int i = trace.length-1; i >= axioms; i--) {
if (reachable.contains(i)) {
int[] resolvent = trace[i];
for(int j = 1, antes = resolvent[0]; j <= antes; j++) {
reachable.add(resolvent[j]);
}
}
}
for(IntIterator itr = reachable.iterator(0, axioms-1); itr.hasNext(); ) {
core.add(itr.next());
}
return core;
}