Exemple #1
0
        public void CheckTerminateEarly()
        {
            var         m = new Model();
            Probability probabilityOfFinally2;

            var stateIs2 = new SimpleStateInRangeFormula(2);
            var finally2 = new UnaryFormula(stateIs2, UnaryOperator.Finally);

            var markovChainGenerator = new SimpleDtmcFromExecutableModelGenerator(m);

            markovChainGenerator.Configuration.ModelCapacity = ModelCapacityByMemorySize.Small;
            markovChainGenerator.AddFormulaToCheck(finally2);
            var dtmc = markovChainGenerator.GenerateMarkovChain(stateIs2);

            dtmc.ExportToGv(Output.TextWriterAdapter());
            var typeOfModelChecker = typeof(BuiltinDtmcModelChecker);
            var modelChecker       = (DtmcModelChecker)Activator.CreateInstance(typeOfModelChecker, dtmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfFinally2 = modelChecker.CalculateProbability(finally2);
            }

            probabilityOfFinally2.Between(0.33, 0.34).ShouldBe(true);
        }
Exemple #2
0
        public void CheckWithEarlyTermination()
        {
            var         m = new Model();
            Probability probabilityOfFinally3;

            var stateIs3 = new SimpleStateInRangeFormula(3);
            var finally3 = new UnaryFormula(stateIs3, UnaryOperator.Finally);

            var markovChainGenerator = new SimpleMarkovChainFromExecutableModelGenerator(m);

            markovChainGenerator.Configuration.ModelCapacity          = ModelCapacityByMemorySize.Small;
            markovChainGenerator.Configuration.EnableEarlyTermination = true;
            markovChainGenerator.AddFormulaToCheck(finally3);
            var dtmc = markovChainGenerator.GenerateMarkovChain();

            dtmc.ExportToGv(Output.TextWriterAdapter());
            var typeOfModelChecker = typeof(BuiltinDtmcModelChecker);
            var modelChecker       = (DtmcModelChecker)Activator.CreateInstance(typeOfModelChecker, dtmc, Output.TextWriterAdapter());

            using (modelChecker)
            {
                probabilityOfFinally3 = modelChecker.CalculateProbability(finally3);
            }
            Assert.Equal(5, dtmc.States);
            Assert.Equal(5, dtmc.Transitions);
            probabilityOfFinally3.Between(0.66, 0.67).ShouldBe(true);
        }