question: protected boolean collect ( Fact fact ) { if ( fact . getIteration ( ) == currentIteration && ! fact . isCycle ( ) ) { Derivation d = fact . getDerivation ( ) ; for ( Fact source : d . getSources ( ) ) { if ( frontier ( source ) ) { return newFacts . add ( fact ) ; } } } return false ; }
target:  Store fact if it really is new.