示例#1
0
        public void CreateMarkovChainWithHazardsRetraversal2()
        {
            var model = new Model();

            SetProbabilities(model);

            var createModel = SafetySharpRuntimeModel.CreateExecutedModelFromFormulasCreator(model);

            var markovChainGenerator = new MarkovChainFromExecutableModelGenerator <SafetySharpRuntimeModel>(createModel)
            {
                Configuration = SafetySharpModelChecker.TraversalConfiguration
            };

            markovChainGenerator.Configuration.SuccessorCapacity *= 2;
            markovChainGenerator.AddFormulaToCheck(model.PossibleCollision);
            markovChainGenerator.Configuration.UseCompactStateStorage             = true;
            markovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = false;
            var markovChain = markovChainGenerator.GenerateLabeledMarkovChain();

            var retraversalMarkovChainGenerator = new MarkovChainFromMarkovChainGenerator(markovChain);

            retraversalMarkovChainGenerator.Configuration.SuccessorCapacity *= 2;
            retraversalMarkovChainGenerator.AddFormulaToCheck(model.PossibleCollision);
            retraversalMarkovChainGenerator.Configuration.UseCompactStateStorage             = true;
            retraversalMarkovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = false;
            retraversalMarkovChainGenerator.GenerateLabeledMarkovChain();
        }
示例#2
0
        public void CreateMarkovChainWithHazardRetraversal1()
        {
            var model = new DegradedModeModel();

            var createModel = SafetySharpRuntimeModel.CreateExecutedModelFromFormulasCreator(model);

            var markovChainGenerator = new MarkovChainFromExecutableModelGenerator <SafetySharpRuntimeModel>(createModel)
            {
                Configuration = SafetySharpModelChecker.TraversalConfiguration
            };

            markovChainGenerator.Configuration.SuccessorCapacity *= 2;
            markovChainGenerator.AddFormulaToCheck(model.System.HazardActive);
            markovChainGenerator.Configuration.UseCompactStateStorage             = true;
            markovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = true;
            var markovChain = markovChainGenerator.GenerateLabeledMarkovChain();

            var retraversalMarkovChainGenerator = new MarkovChainFromMarkovChainGenerator(markovChain);

            retraversalMarkovChainGenerator.Configuration.SuccessorCapacity *= 2;
            retraversalMarkovChainGenerator.AddFormulaToCheck(model.System.HazardActive);
            retraversalMarkovChainGenerator.Configuration.UseCompactStateStorage             = true;
            retraversalMarkovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = true;
            retraversalMarkovChainGenerator.GenerateLabeledMarkovChain();
        }
示例#3
0
        public void CreateMarkovChainWithBothHazardsRetraversal2()
        {
            var model = new Model();

            SetProbabilities(model);

            var createModel = SafetySharpRuntimeModel.CreateExecutedModelFromFormulasCreator(model);

            var markovChainGenerator = new MarkovChainFromExecutableModelGenerator <SafetySharpRuntimeModel>(createModel)
            {
                Configuration = SafetySharpModelChecker.TraversalConfiguration
            };

            markovChainGenerator.Configuration.SuccessorCapacity *= 2;
            markovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.BloodNotCleanedAndDialyzingFinished, UnaryOperator.Finally, 6));
            markovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.IncomingBloodWasNotOk, UnaryOperator.Finally, 6));
            markovChainGenerator.Configuration.UseCompactStateStorage             = true;
            markovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = false;
            markovChainGenerator.Configuration.EnableEarlyTermination             = false;
            var markovChain = markovChainGenerator.GenerateLabeledMarkovChain();

            var retraversalMarkovChainGenerator = new MarkovChainFromMarkovChainGenerator(markovChain);

            retraversalMarkovChainGenerator.Configuration.SuccessorCapacity *= 2;
            retraversalMarkovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.BloodNotCleanedAndDialyzingFinished, UnaryOperator.Finally, 6));
            retraversalMarkovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.IncomingBloodWasNotOk, UnaryOperator.Finally, 6));
            retraversalMarkovChainGenerator.Configuration.UseCompactStateStorage             = true;
            retraversalMarkovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = false;
            markovChainGenerator.Configuration.EnableEarlyTermination = false;
            retraversalMarkovChainGenerator.GenerateLabeledMarkovChain();
        }
示例#4
0
        public void CreateMarkovChainWithBothHazardsRetraversal1()
        {
            var model = Model.CreateOriginal();

            SetProbabilities(model);

            var createModel = SafetySharpRuntimeModel.CreateExecutedModelFromFormulasCreator(model);

            var markovChainGenerator = new MarkovChainFromExecutableModelGenerator <SafetySharpRuntimeModel>(createModel)
            {
                Configuration = SafetySharpModelChecker.TraversalConfiguration
            };

            markovChainGenerator.Configuration.SuccessorCapacity *= 2;
            markovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.Collision, UnaryOperator.Finally, 50));
            markovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.FalseAlarm, UnaryOperator.Finally, 50));
            markovChainGenerator.Configuration.UseCompactStateStorage             = true;
            markovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = true;
            markovChainGenerator.Configuration.EnableEarlyTermination             = false;
            var markovChain = markovChainGenerator.GenerateLabeledMarkovChain();

            var retraversalMarkovChainGenerator = new MarkovChainFromMarkovChainGenerator(markovChain);

            retraversalMarkovChainGenerator.Configuration.SuccessorCapacity *= 2;
            retraversalMarkovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.Collision, UnaryOperator.Finally, 50));
            retraversalMarkovChainGenerator.AddFormulaToCheck(new BoundedUnaryFormula(model.FalseAlarm, UnaryOperator.Finally, 50));
            retraversalMarkovChainGenerator.Configuration.UseCompactStateStorage             = true;
            retraversalMarkovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = true;
            markovChainGenerator.Configuration.EnableEarlyTermination = false;
            retraversalMarkovChainGenerator.GenerateLabeledMarkovChain();
        }
示例#5
0
        public void RetraverseMarkovChainWithNewFormula(LabeledTransitionMarkovChainExample example)
        {
            var markovChainGenerator = new MarkovChainFromMarkovChainGenerator(example.Ltmc);

            markovChainGenerator.Configuration.ModelCapacity          = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.UseCompactStateStorage = true;

            markovChainGenerator.AddFormulaToCheck(example.ExampleFormula2);

            var newMarkovChain = markovChainGenerator.GenerateLabeledMarkovChain();

            newMarkovChain.ExportToGv(Output.TextWriterAdapter());

            Assert.Equal(example.Ltmc.SourceStates.Count, newMarkovChain.SourceStates.Count);
            Assert.Equal(example.Ltmc.Transitions, newMarkovChain.Transitions);
        }
示例#6
0
        public void CreateMarkovChainWithHazardRetraversal1()
        {
            var markovChainGenerator = new MarkovChainFromExecutableModelGenerator <LustreExecutableModel>(_createModel)
            {
                Configuration = LustreModelChecker.TraversalConfiguration
            };

            markovChainGenerator.Configuration.ModelCapacity      = new ModelCapacityByModelSize(10000, 1000000);
            markovChainGenerator.Configuration.SuccessorCapacity *= 2;
            markovChainGenerator.AddFormulaToCheck(_hazard);
            markovChainGenerator.Configuration.UseCompactStateStorage             = true;
            markovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = true;
            var markovChain = markovChainGenerator.GenerateLabeledMarkovChain();

            var retraversalMarkovChainGenerator = new MarkovChainFromMarkovChainGenerator(markovChain);

            retraversalMarkovChainGenerator.Configuration.SuccessorCapacity *= 2;
            retraversalMarkovChainGenerator.AddFormulaToCheck(_hazard);
            retraversalMarkovChainGenerator.Configuration.UseCompactStateStorage             = true;
            retraversalMarkovChainGenerator.Configuration.UseAtomarPropositionsAsStateLabels = true;
            retraversalMarkovChainGenerator.GenerateLabeledMarkovChain();
        }