Редактирование: ВПнМ, примеры задач/Задача 5
Материал из eSyr's wiki.
Внимание: Вы не представились системе. Ваш IP-адрес будет записан в историю изменений этой страницы.
Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия | Ваш текст | ||
Строка 58: | Строка 58: | ||
событие 'процесс q находится на метке received' наступает ровно один раз | событие 'процесс q находится на метке received' наступает ровно один раз | ||
- | #define | + | #define S "state == enter_critical" |
- | #define | + | #define Q Q@received |
- | []( | + | [](S -> (<>Q && [](Q -> X([]!Q)))) |
+ | |||
+ | al-indigo: | ||
+ | меня мучают особые сомнения, но кажется, так? | ||
+ | !S | [](<>S -> (Q -> X([]!Q))) | ||
+ | |||
+ | Авварон: | ||
+ | Нет, оригинал был правильный. 2я формула вообще инвертированная по-моему + напрягает !S в начале | ||
+ | |||
+ | al-indigo: | ||
+ | !S в начале -- я имел в виду случай, когда state==enter_critical вообще не наступает. В самой формуле я, может, ошибся, но вообще я вот сейчас смотрю, и вроде, мне кажется, что правильно. Ну то есть так примерно: "Либо S не наступает никогда, либо, если S когда-нибудь наступает, то всегда выполняется то, что Q наступает, и если оно наступает, что начиная со следующего состояния всегда !Q". Или я не так это читаю? | ||
+ | |||
+ | Авварон: | ||
+ | !S напрягло, ибо нет квантора времени. Если написать []!S, то этот случай будет включен в S-> | ||
+ | у тебя формула проверяет ДО наступления S (ибо <>S возвращает True независимо от того, есть ли сейчас S (а от того, что оно будет). Это я подразумевал под инвертированностью. <> Надо убрать и думать дальше. Без <> импликация теряет свойство "продолжительности" - значит надо пофиксить это добавлением [] в правую ее часть. Плюс у тебя не учтено что Q наступит. | ||
+ | |||
+ | Итого: | ||
+ | #define A "state == enter_critical" | ||
+ | #define B Q@received | ||
+ | |||
+ | []( A -> ( <>B && [](B -> X[]!B) ) ) | ||
Если в условие задачи добавить инвариантность к прореживанию, то решение будет выглядеть так: | Если в условие задачи добавить инвариантность к прореживанию, то решение будет выглядеть так: |