Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » 7. Обзор средства SPIN - синтаксис, трансляция базовых конструкций в модели Крипке

7. Обзор средства SPIN - синтаксис, трансляция базовых конструкций в модели Крипке

PDF-файл 7. Обзор средства SPIN - синтаксис, трансляция базовых конструкций в модели Крипке Математические методы верификации схем и программ (64147): Лекции - 11 семестр (3 семестр магистратуры)7. Обзор средства SPIN - синтаксис, трансляция базовых конструкций в модели Крипке: Математические методы верификации схем и программ - PDF (64147) -2020-08-25СтудИзба

Описание файла

PDF-файл из архива "7. Обзор средства SPIN - синтаксис, трансляция базовых конструкций в модели Крипке", который расположен в категории "". Всё это находится в предмете "математические методы верификации схем и программ" из 11 семестр (3 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Математические методыверификации схем ипрограммЛекторы:Захаров Владимир АнатольевичПодымов Владислав Васильевичe-mail рассказчика:valdus@yandex.ruОсень 2017Семинар 7Spin(обзор средства)Рассматриваемая ЗАДАЧАДаныIнеформальное описание системыIсодержательное описание требований к системеТребуется проверить,удовлетворяет ли система набору требованийСистемаТребованияСхема решения ЗАДАЧИсистематребованияформализациямодель Крипке Mформула ϕалгоритм model checking?ответ на вопрос M |= ϕСхема решения ЗАДАЧИсистематребованияформализациямодель Крипке MLTL-формула ϕалгоритм model checking для LTL?ответ на вопрос M |= ϕНа ближайших семинарах будет рассматриваться логикалинейного времениСхема решения ЗАДАЧИмодель Крипке MLTL-формула ϕалгоритм model checking для LTL?ответ на вопрос M |= ϕВам известно (как минимум) два алгоритма проверкиLTL-формул:I табличный алгоритмIIIIнаглядный, хотя и не такой понятный, как для CTLлежит в основе всех других алгоритмовкрайне неэффективныйавтоматный алгоритмIIболее сложно устроенныйнамного эффективнее табличного (?)Схема решения ЗАДАЧИмодель Крипке MLTL-формула ϕавтоматный алгоритм model checking для LTL?ответ на вопрос M |= ϕЭффективность автоматного алгоритма model checking для LTLобеспечивается двумя составляющими:1.

эффективно работающее представление автоматов Бюхи2. эффективный алгоритм поиска компонент сильнойсвязности, достижимых из входов автоматаВ программном средстве LTL-верификации, как правило,эффективно реализована вариация автоматного алгоритмаСхема решения ЗАДАЧИсистематребованияформализациямодель Крипке Mформула ϕЭтап формализации модели и требований по-прежнемуостаётся и мало чем отличается от того, что происходило насеминарах, посвящённых CTLА может, никто так не делает,и вообще верификация LTL никому не нужна?Схема решения ЗАДАЧИВот список программных средств, способных проверятьвыполнимость LTL-формул в каких-то моделях:(на случай если захотите их использовать)BANDERACADENCE SMVLTSALTSminNuSMVPATProBSALSATMCSPINSpot...Disclaimer: список неполный, и я не знаю большинства этих средств;информация взята из соответствующей страницы в википедииНекоторые из этих средств работают и с CTLВ курсе сосредоточим внимание на средстве Spin:Iоно открытое и бесплатноеIоно довольно популярноIего язык (Promela: Process meta language) достаточнопрост для понимания(и намного более приятен, чем язык NuSMV )(S) Hello, World!На этом примере можно разобрать основы того,Iкак описывать желаемые модели Крипке на языке PromelaIкак применять средство средство Spin для верификацииLTL-формулМногие конструкции языка Promela схожи с такими жеконструкциями C/C++ и/или NuSMV как по синтаксису, так ипо семантике (вплоть до того, что некоторые части C/C++-кодаможно особенным образом вставлять в модель Promela, но этивозможности в обзоре не обсуждаются)(S) Модель Крипке: состоянияВ примере объявлена одна глобальная переменная b типа boolЭта переменнаяIможет принимать два значения: 0 и 1, они же false иtrue соответственноIинициализируется значением 0(S) Модель Крипке: состоянияВ примере описан один тип процесса (~объект/функция вC/C++, ~модуль в NuSMV)Описание типа процесса имеет следующий вид:proctype тип_процесса (аргументы ) {тело_процесса }(S) Модель Крипке: состоянияСистема на каждом шаге работы содержит некоторое числозапущенных процессовКаждый процессIзаданным образом последовательно изменяетпеременные системы согласно описанию в теле типапроцессаIна каждом шаге работы системы имеет текущее состояниеуправления: значение счётчика команд, указывающее накоманду, которая должна выполниться следующей(S) Модель Крипке: состоянияКлючевое слово active перед типом процесса означает, что вначале работы запускается один процесс этого типаСостояние управления запускаемого процесса — это перваякоманда в теле процессаСостояние модели Крипке, соответствующей системе на языкеPromela, в числе прочего содержитIтекущие значения всех глобальных переменныхIтекущие состояния управления всех запущенных процессов(S) Модель Крипке: состоянияМодель Крипке для этого примера имеет два состояния, средикоторых ровно одно начальное:b/0b/1Состояния управления процессов будут опускаться виллюстрациях моделей для краткости и наглядности(S) Модель Крипке: переходыПеременные изменяются совокупностью параллельноработающих процессов согласно семантике чередующихсявычисленийВ частности, если в системе запущен один процесс, то онIв рамках перехода выполняет следующую командуIесли выполнил все команды, то может завершиться(исчезнуть из системы)(S) Модель Крипке: переходыЕдинственный процесс, запущенный в примере,Iвыполняет безусловный бесконечный цикл do-odIна каждом витке цикла выполняет присваивание значения!b в переменную bCемантика языка устроена так, что в данном примере одинвиток цикла выполняется за один переход в модели Крипке, тоесть после каждого перехода счётчик команд указывает наначало цикла(S) Модель Крипке: переходыМодель Крипке для этого примера выглядит так:b/0b/1(S) Язык LTL-формулОписание системы включает в себя список проверяемыхLTL-свойствОписание свойства располагается вне тел всех процессов ивыглядит так:IIltl имя_свойства { тело_свойства } — дляименованных свойствltl { тело_свойства } — для безымянных свойствIбезымянное свойство рекомендуется использовать только втом случае, если оно одно во всей системе(S) Язык LTL-формулБНФ, описывающая синтаксис LTL-свойств (ϕ):ϕ::=булево_выражение | ϕ && ϕ | “ϕ || ϕ” | !ϕ |ϕ -> ϕ | ϕ implies ϕ | ϕ <-> ϕ | ϕ equivalent ϕ[] ϕ | always ϕ | <> ϕ | eventually ϕ |ϕ U ϕ | ϕ until ϕОперацияимпликацияGUВ БНФ->, eventually[], alwaysU, untilОперацияравносильностьFXВ БНФ<->, equivalent<>, eventuallyотсутствуетИспользование средства SpinСпособ 1: консоль Linux1.

По исходному тексту модели получить исполняемый файлверификатораИспользование средства SpinСпособ 1: консоль Linux2а. Запустить верификатор с флагом “проверь это свойство” иубедиться, что свойство выполненоИспользование средства SpinСпособ 1: консоль Linux2б. Запустить верификатор с флагом “проверь это свойство” иубедиться, что свойство не выполненоИспользование средства SpinСпособ 2: GUI ispinispin — это графическая оболочка от разработчиков Spin,написанная на tcl/tkИспользование средства SpinСпособ 2: GUI ispinispin — это графическая оболочка от разработчиков Spin,написанная на tcl/tkИспользование средства SpinСпособ 3: GUI jspinjspin — это сторонняя графическая оболочка, написанная наJavaИспользование средства SpinСпособ 3: GUI jspinjspin — это сторонняя графическая оболочка, написанная наJava(S) Простые типы данныхМногие встроенные типы данных, имеющиеся в Promela,аналогичны типам с теми же названиями в CIbool: значения 0 и 1, они же false и trueIbit: синоним boolIbyte: значения — целые числа от 0 до 255Ishort: значения — целые числа от −215 − 1 до 215 − 1Iint: значения — целые числа от −231 − 1 до 231 − 1unsigned: беззнаковые числа, хранящиеся в заданномчисле бит, явно указываемом при объявленииIIunsigned x : 5 = 2; — объявление беззнаковогопятибитового числа x с начальным значением 2(S) Непростые типы данныхIразрешено объявление одномерных массивов, и выглядитэто так же, как и в C, с поправкой на инициализацию:IIbyte state[4] = 1; — объявление массива state из 4-хэлементов типа byte, каждый из которыхинициализируется числом 1typedef — это ключевое слово, аналогичное struct в C:IItypedef T {bool a; int b;}; — тип T с двумя полямиtypedef onedim {bool a[4];}; — “костыль”,позволяющий работать с многомерными массивами(S) Непростые типы данныхIперечисление: mtype = {имена_через_запятую }IIаналогично enum в C с некоторыми поправкамитип перечисления всегда один, и это тип mtypeIIImtype x; — объявление перечисляемой переменной xнесколько перечислений “сливаются” в одно записьюперечисляемых имён в порядке следования в текстенумерация перечисляемых объектов начинается с 1, тоесть перечисляемая переменная инициализируетсязначением 0, отличающимся от всех числовыхэквивалентов перечисляемых имёнРемарка: “mtype” = “message type”; изначальное назначение типа mtype —перечисление типов сообщений в каналах связи между процессами; но mtypeможно использовать и в других целях, а о каналах будет рассказано дальше(S) Непростые типы данныхПримерmtype = {A, B, C};typedef T {bool a[5];};mtype = {D, E, F};T twodim[3];mtype symvar;Здесь объявленыIIпеременная symvar, которой можно присаивать значенияA, B, C, D, E, Fмассив twodim, содержащий три элемента типа T:Iкаждый элемент содержит массив a из пяти булевыхзначений(S) Композиция процессовКаждая команда в теле процесса описываетнедетерминированный способ изменения состояния системы:выполнение команды соответствует одному, нескольким или ниодному переходу в модели КрипкеВ последнем случае команда и процесс, содержащий этукоманду, считаются заблокированными в текущем состоянии, аиначе — активнымиШаг выполнения системы (переход в модели Крипке) выглядиттак:Iнедетерминированно выбирается активный процессIнедетерминированно выполняется следующая командапроцессаЕсли Spin применяется согласно инструкции, то в случае, когдавсе процессы заблокированы, в систему добавляется переход,при выполнении которого состояние системы не изменяется(S) Композиция процессовМодель Крипке в примере выглядит так:b1/0, b2/0b1/1, b2/0b1/0, b2/1b1/1, b2/1(S) Тело процессаКак и в C, каждая команда может быть предварена меткой:имя_метки : командаТело процесса содержит последовательность команд,разделённых “;”, включающуюIприсваиванияIусловияIветвленияIциклыIкоманду goto(S) Тело процесса: присваиваниеПрисваивания выглядят примерно так же, как и в C с сильноограниченным синтаксисом:имя = выражениеимя ++имя --(S) Тело процесса: присваиваниеВ выражениях используются переменные, константы (целыечисла, true, false, имена перечисления) и многие операторы,аналогичные C, например:I+, -, *, /I<<, >>, ~, &, ^, |I<, >, <=, >=, ==, !=I!, &&, ||I->: (аналог ?:), [] (индексирование массивов),.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее