/// <summary> /// Initializes a new instance. /// </summary> /// <param name="createModel">Creates the model that should be checked.</param> /// <param name="output">The callback that should be used to output messages.</param> /// <param name="configuration">The analysis configuration that should be used.</param> /// <param name="stateFormula">The analyzed stateFormula.</param> internal InvariantChecker(AnalysisModelCreator <TExecutableModel> createModel, Action <string> output, AnalysisConfiguration configuration, Formula stateFormula) : base(createModel, output, configuration, 0) { var formulasToCheck = AnalyzedModels.First().RuntimeModel.Formulas; Context.TraversalParameters.TransitionActions.Add(() => new InvariantViolationAction <TExecutableModel>(formulasToCheck, stateFormula)); }
/// <summary> /// Initializes a new instance. /// </summary> /// <param name="createModel">Creates the model that should be checked.</param> /// <param name="output">The callback that should be used to output messages.</param> /// <param name="configuration">The analysis configuration that should be used.</param> internal StateGraphGenerator(AnalysisModelCreator <TExecutableModel> createModel, Action <string> output, AnalysisConfiguration configuration) : base(createModel, output, configuration, DeriveTransitionSizeFromModel) { var analyzedModel = AnalyzedModels.First(); _stateGraph = new StateGraph <TExecutableModel>( Context, analyzedModel.TransitionSize, analyzedModel.RuntimeModel, analyzedModel.RuntimeModelCreator); Context.TraversalParameters.BatchedTransitionActions.Add(() => new StateGraphBuilder <TExecutableModel>(_stateGraph)); }