public ReachedSet createReachedSet() { ReachedSet reached = reachedSetFactory.create(); if (useRestartingAlgorithm || useRestartAlgorithmWithARGReplay) { // this algorithm needs an indirection so that it can change // the actual reached set instance on the fly if (memorizeReachedAfterRestart) { reached = new HistoryForwardingReachedSet(reached); } else { reached = new ForwardingReachedSet(reached); } } return reached; }
private ReachedSet createInitialReachedSetForRestart( ConfigurableProgramAnalysis cpa, CFANode mainFunction, Configuration singleConfig, LogManager singleLogger) throws InvalidConfigurationException, InterruptedException { singleLogger.log(Level.FINE, "Creating initial reached set"); ReachedSetFactory reachedSetFactory = new ReachedSetFactory(singleConfig); AbstractState initialState = cpa.getInitialState(mainFunction, StateSpacePartition.getDefaultPartition()); Precision initialPrecision = cpa.getInitialPrecision(mainFunction, StateSpacePartition.getDefaultPartition()); ReachedSet reached = reachedSetFactory.create(); reached.add(initialState, initialPrecision); return reached; }