public override void WriteInternalStateStructure(ExecutableCounterExample <SimpleExecutableModel> counterExample, BinaryWriter writer)
 {
     // write meta data to validate that the right model was loaded
     writer.Write(counterExample.RuntimeModel.Model.Faults.Length);
     writer.Write(counterExample.RuntimeModel.Model.LocalBools.Length);
     writer.Write(counterExample.RuntimeModel.Model.LocalInts.Length);
 }
Ejemplo n.º 2
0
        private bool CheckSet(FaultSet set, Fault[] allFaults, bool isHeuristicSuggestion, Activation activationMode)
        {
            try
            {
                var result = _backend.CheckCriticality(set, activationMode);

                if (Configuration.CollectFaultSets)
                {
                    if (!result.FormulaHolds)
                    {
                        if (!isHeuristicSuggestion)
                        {
                            ConsoleHelpers.WriteLine($"    critical:  {{ {set.ToString(allFaults)} }}", ConsoleColor.DarkRed);
                        }

                        _criticalSets.Add(set);
                    }
                    else if (isHeuristicSuggestion)
                    {
                        ConsoleHelpers.WriteLine($"    safe:      {{ {set.ToString(allFaults)} }}  [heuristic]", ConsoleColor.Blue);
                    }

                    _checkedSets.Add(set);
                }

                _checkedSetCount++;

                if (result.CounterExample != null)
                {
                    var executableCounterExample = new ExecutableCounterExample <TExecutableModel>(_backend.RuntimeModelCreator.Create(0), result.CounterExample);
                    _counterExamples.Add(set, executableCounterExample);
                }

                return(result.FormulaHolds);
            }
            catch (AnalysisException e)
            {
                var heuristic = isHeuristicSuggestion ? " [heuristic]" : string.Empty;
                ConsoleHelpers.WriteLine($"    critical:  {{ {set.ToString(allFaults)} }} {heuristic} [exception thrown]", ConsoleColor.DarkRed);
                Console.WriteLine(e.InnerException);

                if (Configuration.CollectFaultSets)
                {
                    _checkedSets.Add(set);
                }
                _checkedSetCount++;
                _criticalSets.Add(set);
                _exceptions.Add(set, e.InnerException);

                if (e.CounterExample != null)
                {
                    var executableCounterExample = new ExecutableCounterExample <TExecutableModel>(_backend.RuntimeModelCreator.Create(0), e.CounterExample);
                    _counterExamples.Add(set, executableCounterExample);
                }

                return(false);
            }
        }
 /// <summary>
 ///   Initializes a new instance.
 /// </summary>
 /// <param name="exception">The unhandled exception that was thrown during model checkinig.</param>
 /// <param name="counterExample">The path through the model that leads to the <paramref name="exception" /> being thrown.</param>
 public InvariantAnalysisException(Exception exception, TExecutableModel executableModel, CounterExample counterExample)
     : base($"Error: An unhandled exception of type '{exception.GetType().FullName}' was " +
            $"thrown during model checking: {exception.Message}", exception)
 {
     Requires.NotNull(exception, nameof(exception));
     ExecutableModel          = executableModel;
     ExecutableCounterExample = new ExecutableCounterExample <TExecutableModel>(executableModel, counterExample);
     CounterExample           = counterExample;
 }
Ejemplo n.º 4
0
        /// <summary>
        ///   Initializes a new instance.
        /// </summary>
        /// <param name="counterExample">The counter example that should be simulated.</param>
        public Simulator(CoupledExecutableModelCreator <TExecutableModel> modelCreator, CounterExample counterExample)
        {
            Requires.NotNull(counterExample, nameof(counterExample));

            RuntimeModel    = modelCreator.Create(0);
            _counterExample = new ExecutableCounterExample <TExecutableModel>(RuntimeModel, counterExample);

            Reset();
        }
Ejemplo n.º 5
0
        public Simulator(ExecutableCounterExample <TExecutableModel> counterExample)
        {
            Requires.NotNull(counterExample, nameof(counterExample));

            RuntimeModel    = counterExample.RuntimeModel;
            _counterExample = counterExample;

            Reset();
        }
        public override void WriteInternalStateStructure(ExecutableCounterExample <SafetySharpRuntimeModel> counterExample, BinaryWriter writer)
        {
            var formatter    = new BinaryFormatter();
            var memoryStream = new MemoryStream();

            formatter.Serialize(memoryStream, counterExample.RuntimeModel.StateVectorLayout.ToArray());

            var metadata = memoryStream.ToArray();

            writer.Write(metadata.Length);
            writer.Write(metadata);
        }
Ejemplo n.º 7
0
        protected void SimulateCounterExample(ExecutableCounterExample <SafetySharpRuntimeModel> counterExample, Action <SafetySharpSimulator> action)
        {
            // Test directly
            action(new SafetySharpSimulator(counterExample));

            // Test persisted
            using (var file = new TemporaryFile(".ssharp"))
            {
                counterExample.Save(file.FilePath);
                var counterExampleSerialization = new SafetySharpCounterExampleSerialization();
                action(new SafetySharpSimulator(counterExampleSerialization.Load(file.FilePath)));
            }
        }
Ejemplo n.º 8
0
 public LustreSimulator(ExecutableCounterExample <LustreExecutableModel> counterExample)
     : base(counterExample)
 {
 }
Ejemplo n.º 9
0
 public SafetySharpSimulator(ExecutableCounterExample <SafetySharpRuntimeModel> counterExample)
     : base(counterExample)
 {
 }
Ejemplo n.º 10
0
 public SimpleSimulator(ExecutableCounterExample <SimpleExecutableModel> counterExample)
     : base(counterExample)
 {
 }
Ejemplo n.º 11
0
 public override void WriteInternalStateStructure(ExecutableCounterExample <LustreExecutableModel> counterExample, BinaryWriter writer)
 {
 }