/// <summary> /// Checks the invariant encoded into the model created by <paramref name="createModel" />. /// </summary> public InvariantAnalysisResult CheckInvariant(int formulaIndex) { // We have to track the state vector layout here; this will nondeterministically store some model instance of // one of the workers; but since all state vectors are the same, we don't care ExecutedModel <TExecutableModel> model = null; Func <AnalysisModel> createAnalysisModelFunc = () => model = new ActivationMinimalExecutedModel <TExecutableModel>(ModelCreator, 0, Configuration); var createAnalysisModel = new AnalysisModelCreator(createAnalysisModelFunc); using (var checker = new InvariantChecker(createAnalysisModel, Configuration, formulaIndex)) { var result = checker.Check(); return(result); } }
/// <summary> /// Generates a <see cref="StateGraph{TExecutableModel}" /> for the model created by <paramref name="createModel" />. /// </summary> internal StateGraph <TExecutableModel> GenerateStateGraph() { // We have to track the state vector layout here; this will nondeterministically store some model instance of // one of the workers; but since all state vectors are the same, we don't care ExecutedModel <TExecutableModel> model = null; Func <AnalysisModel> createAnalysisModelFunc = () => model = new ActivationMinimalExecutedModel <TExecutableModel>(ModelCreator, 0, Configuration); var createAnalysisModel = new AnalysisModelCreator(createAnalysisModelFunc); using (var checker = new StateGraphGenerator <TExecutableModel>(createAnalysisModel, Configuration)) { var stateGraph = checker.GenerateStateGraph(); return(stateGraph); } }
/// <summary> /// Checks the invariant encoded into the model created by <paramref name="createModel" />. /// </summary> public AnalysisResult <TExecutableModel> CheckInvariant(CoupledExecutableModelCreator <TExecutableModel> createModel, Formula formula) { // We have to track the state vector layout here; this will nondeterministically store some model instance of // one of the workers; but since all state vectors are the same, we don't care ExecutedModel <TExecutableModel> model = null; Func <AnalysisModel <TExecutableModel> > createAnalysisModelFunc = () => model = new ActivationMinimalExecutedModel <TExecutableModel>(createModel, 0, Configuration.SuccessorCapacity); var createAnalysisModel = new AnalysisModelCreator <TExecutableModel>(createAnalysisModelFunc); using (var checker = new InvariantChecker <TExecutableModel>(createAnalysisModel, OutputWritten, Configuration, formula)) { var result = checker.Check(); return(result); } }