/// <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)); }
/// <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)); }
/// <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()); }
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); }