iSpin LTL свойство оценки только с активированными "нарушениями утверждения"?

Я пытаюсь привыкнуть к iSpin/Promela. Я использую:

Версия Spin 6.4.3 - 16 декабря 2014 года, версия iSpin 1.1.4 - 27 ноября 2014 года, версия 8cl /8.6 TclTk, Windows 8.1.

Вот пример, где я пытаюсь использовать LTL. Проверка свойства LTL должна привести к ошибке, если два шага в цикле for неатомарны:

1   #define ten ((n !=10) && (finished == 2))
2   
3   int n = 0;
4   int finished = 0;
5   active [2] proctype P() {
6       //assert(_pid == 0 || _pid == 1);
7       
8           int t = 0;
9           byte j;
10          for (j : 1 .. 5) {
11              atomic {
12                  t = n;
13                  n = t+1;
14              }
15          }
16      finished = finished+1;
17  }
18  
19  ltl alwaysten {[] ! ten }

В проверочном касании я просто хочу проверить свойство LTL, поэтому я отключаю все свойства безопасности и активирую "заявку на использование". Название претензии "всегда".

Конфигурация вкладки подтверждения

Но кажется, что свойство LTL только что оценивается, если я активирую "нарушения утверждения". Зачем? Коллега использует iSpin v1.1.0 и ему не нужно это активировать? Что я делаю неправильно? Я хочу доказать утверждения и свойства LTL независимо...

Вот след:

pan: elapsed time 0.002 seconds
To replay the error-trail, goto Simulate/Replay and select "Run"
spin -a  1_2_ConcurrentCounters_8.pml
ltl alwaysten: [] (! (((n!=10)) && ((finished==2))))
C:/cygwin/bin/gcc -DMEMLIM=1024 -O2 -DXUSAFE -w -o pan pan.c
./pan -m10000  -E -a -N alwaysten
Pid: 6980
warning: only one claim defined, -N ignored

(Spin Version 6.4.3 -- 16 December 2014)
    + Partial Order Reduction

Full statespace search for:
    never claim             + (alwaysten)
    assertion violations    + (if within scope of claim)
    acceptance   cycles     + (fairness disabled)
    invalid end states  - (disabled by -E flag)

State-vector 36 byte, depth reached 57, errors: 0
      475 states, stored
      162 states, matched
      637 transitions (= stored+matched)
        0 atomic steps
hash conflicts:         0 (resolved)

Stats on memory usage (in Megabytes):
    0.024   equivalent memory usage for states (stored*(State-vector + overhead))
    0.291   actual memory usage for states
   64.000   memory used for hash table (-w24)
    0.343   memory used for DFS stack (-m10000)
   64.539   total actual memory usage


unreached in proctype P
    (0 of 13 states)
unreached in claim alwaysten
    _spin_nvr.tmp:8, state 10, "-end-"
    (1 of 10 states)

pan: elapsed time 0.001 seconds
No errors found -- did you verify all claims?

1 ответ

Решение

Это потому, что ваш LTL переведен в претензию с assert заявление. Смотрите следующий автомат.

введите описание изображения здесь

Таким образом, без проверки нарушений утверждений, ошибки не могут быть найдены.

(Возможное объяснение различного поведения: предыдущие версии Spin могли бы перевести это по-другому, возможно, используя accept вместо assert.)

Другие вопросы по тегам