Exemplo n.º 1
0
        /// <summary>
        ///   Checks whether the <paramref name="formula" /> holds in all states of the <paramref name="model" />. The appropriate model
        ///   checker is chosen automatically.
        /// </summary>
        /// <param name="model">The model that should be checked.</param>
        /// <param name="formula">The formula that should be checked.</param>
        public static SafetySharpInvariantAnalysisResult Check(ModelBase model, Formula formula)
        {
            var createModel = SafetySharpRuntimeModel.CreateExecutedModelCreator(model, formula);
            var result      = new LtsMin().Check(createModel, formula);

            return(SafetySharpInvariantAnalysisResult.FromInvariantAnalysisResult(result, createModel));
        }
Exemplo n.º 2
0
        /// <summary>
        ///   Checks whether the <paramref name="invariant" /> holds in all states of the <paramref name="model" />. The appropriate
        ///   model checker is chosen automatically.
        /// </summary>
        /// <param name="model">The model that should be checked.</param>
        /// <param name="invariant">The invariant that should be checked.</param>
        public static SafetySharpInvariantAnalysisResult CheckInvariant(ModelBase model, Formula invariant)
        {
            var createModel        = SafetySharpRuntimeModel.CreateExecutedModelCreator(model, invariant);
            var qualitativeChecker = new QualitativeChecker <SafetySharpRuntimeModel>(createModel)
            {
                Configuration = TraversalConfiguration
            };
            var result = qualitativeChecker.CheckInvariant(formulaIndex: 0);

            return(SafetySharpInvariantAnalysisResult.FromInvariantAnalysisResult(result, createModel));
        }
Exemplo n.º 3
0
        /// <summary>
        ///   Checks whether the <paramref name="invariants" /> hold in all states of the <paramref name="model" />. The appropriate
        ///   model checker is chosen automatically.
        /// </summary>
        /// <param name="model">The model that should be checked.</param>
        /// <param name="invariants">The invariants that should be checked.</param>
        public static SafetySharpInvariantAnalysisResult[] CheckInvariants(ModelBase model, params Formula[] invariants)
        {
            var createModel        = SafetySharpRuntimeModel.CreateExecutedModelCreator(model, invariants);
            var qualitativeChecker = new QualitativeChecker <SafetySharpRuntimeModel>(createModel)
            {
                Configuration = TraversalConfiguration
            };
            var results    = qualitativeChecker.CheckInvariants(invariants);
            var newResults = results.Select(result => SafetySharpInvariantAnalysisResult.FromInvariantAnalysisResult(result, createModel));

            return(newResults.ToArray());
        }
Exemplo n.º 4
0
        public static SafetySharpInvariantAnalysisResult FromInvariantAnalysisResult(InvariantAnalysisResult result, CoupledExecutableModelCreator <SafetySharpRuntimeModel> modelCreator)
        {
            var executableModel          = modelCreator?.Create(0);
            var executableCounterExample = executableModel != null && result.CounterExample != null
                                ? new ExecutableCounterExample <SafetySharpRuntimeModel>(executableModel, result.CounterExample)
                                : null;
            var enhancedResult = new SafetySharpInvariantAnalysisResult
            {
                CounterExample           = result.CounterExample,
                ExecutableCounterExample = executableCounterExample,
                FormulaHolds             = result.FormulaHolds,
                StateCount              = result.StateCount,
                TransitionCount         = result.TransitionCount,
                ComputedTransitionCount = result.TransitionCount,
                LevelCount              = result.LevelCount,
            };

            return(enhancedResult);
        }