예제 #1
0
        private void InitializeFromSerializedModel()
        {
            var modelWithFormula = SimpleModelSerializer.DeserializeFromByteArray(SerializedModel);

            Model    = modelWithFormula.Item1;
            Formulas = modelWithFormula.Item2;

            var atomarPropositionVisitor = new CollectAtomarPropositionFormulasVisitor();

            foreach (var stateFormula in Formulas)
            {
                atomarPropositionVisitor.Visit(stateFormula);
            }
            _atomarPropositionFormulas = atomarPropositionVisitor.AtomarPropositionFormulas.ToArray();

            StateConstraints = new Func <bool> [0];

            Faults = Model.Faults;
            UpdateFaultSets();

            _deserialize    = SimpleModelSerializer.CreateFastInPlaceDeserializer(Model);
            _serialize      = SimpleModelSerializer.CreateFastInPlaceSerializer(Model);
            _restrictRanges = () => { };

            InitializeConstructionState();
            CheckConsistencyAfterInitialization();
        }
예제 #2
0
        public static CoupledExecutableModelCreator <SimpleExecutableModel> CreateExecutedModelCreator(SimpleModelBase inputModel, params Formula[] formulasToCheckInBaseModel)
        {
            Requires.NotNull(inputModel, nameof(inputModel));
            Requires.NotNull(formulasToCheckInBaseModel, nameof(formulasToCheckInBaseModel));


            Func <int, SimpleExecutableModel> creatorFunc = (reservedBytes) =>
            {
                // Each model checking thread gets its own SimpleExecutableModel.
                // Thus, we serialize the C# model and load this file again.
                // The serialization can also be used for saving counter examples
                var serializedModelWithFormulas = SimpleModelSerializer.SerializeToByteArray(inputModel, formulasToCheckInBaseModel);
                var simpleExecutableModel       = new SimpleExecutableModel(serializedModelWithFormulas);
                return(simpleExecutableModel);
            };
            Action <TextWriter> writeOptimizedStateVectorLayout = (textWriter) =>
            {
                textWriter.WriteLine("bytes[0-4] state: int");
                textWriter.WriteLine("bytes[5-12] permanent faults: long");
            };

            var faults = inputModel.Faults;

            return(new CoupledExecutableModelCreator <SimpleExecutableModel>(creatorFunc, writeOptimizedStateVectorLayout, inputModel, formulasToCheckInBaseModel, faults));
        }
예제 #3
0
        public static CoupledExecutableModelCreator <SimpleExecutableModel> CreateExecutedModelCreator(SimpleModelBase inputModel, params Formula[] formulasToCheckInBaseModel)
        {
            Requires.NotNull(inputModel, nameof(inputModel));
            Requires.NotNull(formulasToCheckInBaseModel, nameof(formulasToCheckInBaseModel));


            Func <int, SimpleExecutableModel> creatorFunc = (reservedBytes) =>
            {
                // Each model checking thread gets its own SimpleExecutableModel.
                // Thus, we serialize the C# model and load this file again.
                // The serialization can also be used for saving counter examples
                var serializedModelWithFormulas = SimpleModelSerializer.SerializeToByteArray(inputModel, formulasToCheckInBaseModel);
                var simpleExecutableModel       = new SimpleExecutableModel(serializedModelWithFormulas);
                return(simpleExecutableModel);
            };

            var faults = inputModel.Faults;

            return(new CoupledExecutableModelCreator <SimpleExecutableModel>(creatorFunc, inputModel, formulasToCheckInBaseModel, faults));
        }