protected void GenerateStateSpace(params IComponent[] components)
        {
            _modelCreator = SafetySharpRuntimeModel.CreateExecutedModelCreator(TestModel.InitializeModel(components), new ExecutableStateFormula(() => true));

            var configuration = AnalysisConfiguration.Default;

            configuration.ModelCapacity      = ModelCapacityByMemorySize.Small;
            configuration.StackCapacity      = 10000;
            configuration.CpuCount           = 1;
            configuration.DefaultTraceOutput = Output.TextWriterAdapter();
            configuration.AllowFaultsOnInitialTransitions = AllowFaultsOnInitialTransitions;

            var analysisModelCreator = new AnalysisModelCreator(() => new ActivationMinimalExecutedModel <SafetySharpRuntimeModel>(_modelCreator, 0, configuration));

            var checker = new InvariantChecker(analysisModelCreator,
                                               configuration,
                                               formulaIndex: 0);

            _result = checker.Check();
            CounterExample.ShouldBe(null);

            Output.Log($"States: {_result.StateCount}");
            Output.Log($"Actual Transitions: {_result.TransitionCount}");
            Output.Log($"Computed Transitions: {_result.ComputedTransitionCount}");
        }
Exemplo n.º 2
0
        protected OrderAnalysisResults <SafetySharpRuntimeModel> AnalyzeOrder(Formula hazard, params IComponent[] components)
        {
            var configuration = AnalysisConfiguration.Default;

            configuration.ModelCapacity          = ModelCapacityByMemorySize.Tiny;
            configuration.GenerateCounterExample = !SuppressCounterExampleGeneration;
            configuration.ProgressReportsOnly    = true;
            configuration.DefaultTraceOutput     = Output.TextWriterAdapter();

            var analysis = new SafetySharpOrderAnalysis(DccaWithMaxCardinality(hazard, Int32.MaxValue, components), configuration);

            var result = analysis.ComputeOrderRelationships();

            Output.Log("{0}", result);

            return(result);
        }
Exemplo n.º 3
0
        protected SafetyAnalysisResults <SafetySharpRuntimeModel> DccaWithMaxCardinality(ModelBase model, Formula hazard, int maxCardinality, ModelCapacity capacity)
        {
            var analysis = new SafetySharpSafetyAnalysis
            {
                Backend       = (SafetyAnalysisBackend)Arguments[0],
                Configuration =
                {
                    ModelCapacity          = capacity,
                    GenerateCounterExample = !SuppressCounterExampleGeneration,
                    DefaultTraceOutput     = Output.TextWriterAdapter()
                }
            };

            if (Heuristics != null)
            {
                analysis.Heuristics.AddRange(Heuristics);
            }

            var result = analysis.ComputeMinimalCriticalSets(model, hazard, maxCardinality);

            Output.Log("{0}", result);

            return(result);
        }
Exemplo n.º 4
0
        protected bool CheckInvariant(Formula invariant, params IComponent[] components)
        {
            var analysisTestsVariant = (AnalysisTestsVariant)Arguments[0];

            analysisTestsVariant.SetModelCheckerParameter(SuppressCounterExampleGeneration, Output.TextWriterAdapter());
            analysisTestsVariant.SetExecutionParameter(AllowFaultsOnInitialTransitions);

            var modelCreator = SafetySharpRuntimeModel.CreateExecutedModelCreator(TestModel.InitializeModel(components), invariant);

            var useCheckInvariantsInsteadOfCheckInvariant = Arguments.Length > 1 && (bool)Arguments[1];


            if (useCheckInvariantsInsteadOfCheckInvariant)
            {
                var results = analysisTestsVariant.CheckInvariants(modelCreator, invariant);
                CounterExample = results[0].ExecutableCounterExample(modelCreator);
                return(results[0].FormulaHolds);
            }

            Result         = analysisTestsVariant.CheckInvariant(modelCreator, invariant);
            CounterExample = Result.ExecutableCounterExample(modelCreator);
            return(Result.FormulaHolds);
        }
Exemplo n.º 5
0
        protected bool Check(Formula formula, params IComponent[] components)
        {
            var analysisTestsVariant = (AnalysisTestsVariant)Arguments[0];

            var modelCreator = SafetySharpRuntimeModel.CreateExecutedModelCreator(TestModel.InitializeModel(components), formula);

            analysisTestsVariant.SetModelCheckerParameter(SuppressCounterExampleGeneration, Output.TextWriterAdapter());
            analysisTestsVariant.SetExecutionParameter(AllowFaultsOnInitialTransitions);

            var result = analysisTestsVariant.Check(modelCreator, formula);

            CounterExample = result.ExecutableCounterExample(modelCreator);
            return(result.FormulaHolds);
        }
Exemplo n.º 6
0
        protected bool[] CheckInvariants(IComponent component, params Formula[] invariants)
        {
            var analysisTestsVariant = (AnalysisTestsVariant)Arguments[0];

            var modelCreator = SafetySharpRuntimeModel.CreateExecutedModelCreator(TestModel.InitializeModel(component), invariants);

            analysisTestsVariant.SetModelCheckerParameter(SuppressCounterExampleGeneration, Output.TextWriterAdapter());
            analysisTestsVariant.SetExecutionParameter(AllowFaultsOnInitialTransitions);

            var results = analysisTestsVariant.CheckInvariants(modelCreator, invariants);

            CounterExamples = results.Select(result => result.ExecutableCounterExample(modelCreator)).ToArray();
            return(results.Select(result => result.FormulaHolds).ToArray());
        }