static ExplorationStage <T> AnalyzeExampleSpace( IExampleSpace <T> exampleSpace, IEnumerable <int> path, AnalyzeExploration <T> analyze) { return(analyze(exampleSpace.Current).Match( onSuccess: () => ExplorationStage <T> .Factory.NonCounterexample(exampleSpace, path), onDiscard: () => ExplorationStage <T> .Factory.Discard(exampleSpace), onFail: exception => ExplorationStage <T> .Factory.Counterexample(exampleSpace, path, exception))); }
public static IEnumerable <ExplorationStage <T> > Explore <T>( this IExampleSpace <T> exampleSpace, AnalyzeExploration <T> analyze) {
static SubspaceExploration <T> GetSubspaceExploration(AnalyzeExploration <T> analyze, IExampleSpace <T> exampleSpace) => exampleSpace.Subspace .Select((exampleSpace, subspaceIndex) =>