예제 #1
0
        protected override void Check()
        {
            var         c = new C();
            Probability probabilityOfFinal2;
            Probability probabilityOfFinal3;

            Formula valueIs2 = c.Value == 2;
            Formula valueIs3 = c.Value == 3;
            var     final2   = new UnaryFormula(valueIs2, UnaryOperator.Finally);
            var     final3   = new UnaryFormula(valueIs3, UnaryOperator.Finally);

            var markovChainGenerator = new SafetySharpMarkovChainFromExecutableModelGenerator(TestModel.InitializeModel(c));

            markovChainGenerator.Configuration.ModelCapacity    = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.LtmcModelChecker = (ISSE.SafetyChecking.LtmcModelChecker)Arguments[0];
            markovChainGenerator.AddFormulaToCheck(final2);
            markovChainGenerator.AddFormulaToCheck(final3);
            var ltmc         = markovChainGenerator.GenerateLabeledMarkovChain();
            var modelChecker = new ConfigurationDependentLtmcModelChecker(markovChainGenerator.Configuration, ltmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfFinal2 = modelChecker.CalculateProbability(final2);
                probabilityOfFinal3 = modelChecker.CalculateProbability(final3);
            }

            probabilityOfFinal2.Is(0.3, tolerance: 0.0001).ShouldBe(true);
            probabilityOfFinal3.Is(0.6, tolerance: 0.0001).ShouldBe(true);
        }
예제 #2
0
        protected override void Check()
        {
            var         c = new C();
            Probability probabilityOfFinal1;

            var final1Formula = new UnaryFormula(c.InA(), UnaryOperator.Finally);

            var markovChainGenerator = new SafetySharpMarkovChainFromExecutableModelGenerator(TestModel.InitializeModel(c));

            markovChainGenerator.Configuration.ModelCapacity          = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.WriteGraphvizModels    = true;
            markovChainGenerator.Configuration.UseCompactStateStorage = true;
            markovChainGenerator.Configuration.DefaultTraceOutput     = Output.TextWriterAdapter();
            markovChainGenerator.Configuration.LtmcModelChecker       = (ISSE.SafetyChecking.LtmcModelChecker)Arguments[0];
            markovChainGenerator.AddFormulaToCheck(final1Formula);
            var ltmc         = markovChainGenerator.GenerateLabeledMarkovChain();
            var modelChecker = new ConfigurationDependentLtmcModelChecker(markovChainGenerator.Configuration, ltmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfFinal1 = modelChecker.CalculateProbability(final1Formula);
            }

            probabilityOfFinal1.Between(0.3, 0.4).ShouldBe(true);
        }
        protected override void Check()
        {
            var         c = new C();
            Probability probabilityOfStep11FrozenValue2AndInvariantViolated;
            Probability probabilityOfStep11FrozenValue3AndInvariantViolated;
            Probability probabilityOfStep11FrozenValue2AndInvariantNotViolated;
            Probability probabilityOfStep11FrozenValue3AndInvariantNotViolated;


            Formula formulaProbabilityOfStep11FrozenValue2AndInvariantViolated    = c._timestep == 11 && c._frozenValue == 2 && c.ViolateInvariant;
            Formula formulaProbabilityOfStep11FrozenValue3AndInvariantViolated    = c._timestep == 11 && c._frozenValue == 3 && c.ViolateInvariant;
            Formula formulaProbabilityOfStep11FrozenValue2AndInvariantNotViolated = c._timestep == 11 && c._frozenValue == 2 && !c.ViolateInvariant;
            Formula formulaProbabilityOfStep11FrozenValue3AndInvariantNotViolated = c._timestep == 11 && c._frozenValue == 3 && !c.ViolateInvariant;

            var finallyFormulaProbabilityOfStep11FrozenValue2AndInvariantViolated    = new UnaryFormula(formulaProbabilityOfStep11FrozenValue2AndInvariantViolated, UnaryOperator.Finally);
            var finallyFormulaProbabilityOfStep11FrozenValue3AndInvariantViolated    = new UnaryFormula(formulaProbabilityOfStep11FrozenValue3AndInvariantViolated, UnaryOperator.Finally);
            var finallyFormulaProbabilityOfStep11FrozenValue2AndInvariantNotViolated = new UnaryFormula(formulaProbabilityOfStep11FrozenValue2AndInvariantNotViolated, UnaryOperator.Finally);
            var finallyFormulaProbabilityOfStep11FrozenValue3AndInvariantNotViolated = new UnaryFormula(formulaProbabilityOfStep11FrozenValue3AndInvariantNotViolated, UnaryOperator.Finally);

            var markovChainGenerator = new SafetySharpMarkovChainFromExecutableModelGenerator(TestModel.InitializeModel(c));

            markovChainGenerator.Configuration.ModelCapacity    = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.LtmcModelChecker = (ISSE.SafetyChecking.LtmcModelChecker)Arguments[0];
            markovChainGenerator.AddFormulaToCheck(finallyFormulaProbabilityOfStep11FrozenValue2AndInvariantViolated);
            markovChainGenerator.AddFormulaToCheck(finallyFormulaProbabilityOfStep11FrozenValue3AndInvariantViolated);
            markovChainGenerator.AddFormulaToCheck(finallyFormulaProbabilityOfStep11FrozenValue2AndInvariantNotViolated);
            markovChainGenerator.AddFormulaToCheck(finallyFormulaProbabilityOfStep11FrozenValue3AndInvariantNotViolated);
            var ltmc         = markovChainGenerator.GenerateLabeledMarkovChain();
            var modelChecker = new ConfigurationDependentLtmcModelChecker(markovChainGenerator.Configuration, ltmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfStep11FrozenValue2AndInvariantViolated    = modelChecker.CalculateProbability(finallyFormulaProbabilityOfStep11FrozenValue2AndInvariantViolated);
                probabilityOfStep11FrozenValue3AndInvariantViolated    = modelChecker.CalculateProbability(finallyFormulaProbabilityOfStep11FrozenValue3AndInvariantViolated);
                probabilityOfStep11FrozenValue2AndInvariantNotViolated = modelChecker.CalculateProbability(finallyFormulaProbabilityOfStep11FrozenValue2AndInvariantNotViolated);
                probabilityOfStep11FrozenValue3AndInvariantNotViolated = modelChecker.CalculateProbability(finallyFormulaProbabilityOfStep11FrozenValue3AndInvariantNotViolated);
            }

            var probabilitiesSummedUp =
                probabilityOfStep11FrozenValue2AndInvariantViolated +
                probabilityOfStep11FrozenValue3AndInvariantViolated +
                probabilityOfStep11FrozenValue2AndInvariantNotViolated +
                probabilityOfStep11FrozenValue3AndInvariantNotViolated;

            probabilitiesSummedUp.Is(1.0, 0.000001).ShouldBe(true);
        }
예제 #4
0
        protected override void Check()
        {
            var         c = new C();
            Probability probabilityOfFinal1;

            var final1Formula = new BoundedBinaryFormula(c.IsPhi(), BinaryOperator.Until, c.IsPsi(), 10);

            var markovChainGenerator = new SafetySharpMarkovChainFromExecutableModelGenerator(TestModel.InitializeModel(c));

            markovChainGenerator.Configuration.ModelCapacity    = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.LtmcModelChecker = (ISSE.SafetyChecking.LtmcModelChecker)Arguments[0];
            markovChainGenerator.AddFormulaToCheck(final1Formula);
            var ltmc         = markovChainGenerator.GenerateLabeledMarkovChain();
            var modelChecker = new ConfigurationDependentLtmcModelChecker(markovChainGenerator.Configuration, ltmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfFinal1 = modelChecker.CalculateProbability(final1Formula);
            }

            probabilityOfFinal1.Is(0.2, 0.000001).ShouldBe(true);
        }
예제 #5
0
        protected override void Check()
        {
            var         c = new C();
            Probability probabilityOfInvariantViolation;

            Formula invariantViolated        = c.ViolateInvariant;
            var     finallyInvariantViolated = new UnaryFormula(invariantViolated, UnaryOperator.Finally);

            var markovChainGenerator = new SafetySharpMarkovChainFromExecutableModelGenerator(TestModel.InitializeModel(c));

            markovChainGenerator.Configuration.ModelCapacity    = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.LtmcModelChecker = (ISSE.SafetyChecking.LtmcModelChecker)Arguments[0];
            markovChainGenerator.AddFormulaToCheck(finallyInvariantViolated);
            var ltmc         = markovChainGenerator.GenerateLabeledMarkovChain();
            var modelChecker = new ConfigurationDependentLtmcModelChecker(markovChainGenerator.Configuration, ltmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfInvariantViolation = modelChecker.CalculateProbability(finallyInvariantViolated);
            }

            probabilityOfInvariantViolation.Is(0.01, 0.0001).ShouldBe(true);
        }