методичка (Кузьменкова Е. А., Петренко А. К. Практикум по формальной спецификации программ на языке RSL), страница 6

2020-08-21СтудИзба

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

Документ из архива "Кузьменкова Е. А., Петренко А. К. Практикум по формальной спецификации программ на языке RSL", который расположен в категории "". Всё это находится в предмете "формальная спецификация и верификация программ" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "методичка"

Текст 6 страницы из документа "методичка"

[3 +> true,3 +> false].

Способы определения отображений

Для определения отображений в RSL используются те же способы, что и для множеств и списков, а именно: непосредственное перечисление элементов и сокращенное выражение. Первый способ может применяться для конечных отображений, в этом случае отображение задается выражением вида:

[v1 +> w1,…,vn +> wn],

где n  0 (в частности, при n  0 имеем пустое отображение []). Здесь выражения vi задают значения ключей и wi – сопоставляемых им значений. Именно этот способ был использован во всех рассмотренных ранее примерах.

Сокращенное выражение (comprehended map expression) используется для определения значений как конечных, так и бесконечных отображений и имеет вид:

[ value_expr_pair  set_limitation ],

где выражение value_expr_pair задает общую формулу для определения входящих в отображение пар, set_limitation задает возможные ограничения на домен отображения. Например, значением сокращенного выражения:

[ n +> 2n  n : Nat :- n <= 2 ]

является конечное отображение [0 +> 0,1 +> 2,2 +> 4].

Выражение:

[ n +> 2n  n : Nat ] 

определяет бесконечное отображение [0 +> 0,1 +> 2,2 +> 4,…].

Значение отображения для какого-либо конкретного элемента из его домена (применение отображения) задается с помощью выражения  value_expr1(value_expr2),  где  value_expr1 является выражением, определяющим данное отображение, value_expr2 – выражение для вычисления значения некоторого элемента из домена отображения. Например:

[Klaus +> 7, John +> 2, Mary +> 7](John)  2,

[1 +> [Per +> 5, Jan +> 7], 2 +> [ ]](1)(Jan) 

 [Per +> 5, Jan +> 7] (Jan)  7,

или для недетерминированного отображения:

[3 +> true,3 +> false](3)  true ^ false,

где символ ^ означает недетерминированный (внутренний) выбор из двух указанных значений. Для значений, не принадлежащих домену отображения, эффект применения отображения не определен, т.е. соответствующее выражение возвращает chaos:

[1 +> 2, 2 +> 3](5) = chaos

Операции над отображениями

Над отображениями определены следующие операции:

dom : (T1 –m-> T2) -> T1-infset

rng : (T1 –m-> T2) -> T2-infset

!! : (T1 –m-> T2) >< (T1 –m-> T2) -> (T1 –m-> T2

union : (T1 –m-> T2) >< (T1 –m-> T2) -> (T1 –m-> T2)

\ : (T1 –m-> T2) >< T1-infset -> (T1 –m-> T2)

/ : (T1 –m-> T2) >< T1-infset -> (T1 –m-> T2)

# : (T2 –m-> T3) >< (T1 –m-> T2) -> (T1 –m-> T3)

Кроме того для отображений определены операции = и ~=.

Операции domи rng возвращают в качестве результата соответственно домен и область значений отображения, причем в зависимости от вида отображения эти множества могут быть конечными или бесконечными. Для любого отображения m верно соотношение:

rng m is {m(x) | x : T1 :- x isin dom m}

Примеры:

dom [3 +> true, 5 +> false]  {3, 5}

rng [3 +> true, 5 +> false]  {true, false}

dom [ ]  { }

rng [ ]  { }

dom [ n +> 2n  n : Nat ]  { n  n : Nat }

rng [ n +> 2n  n : Nat ]  { 2*n  n : Nat }

Результатом операции !! (переопределение отображения) является набор пар, полученный объединением наборов пар первого и второго отображений, причем в случае пересечения доменов предпочтение отдается парам из второго отображения, т.е. для элементов, попавших в пересечение доменов отображений, второе отображение переопределяет первое. Определение этой операции имеет вид:

x !! y is [v +> w | v : T1, w : T2 :- w = y(v) \/ v ~isin dom y /\ w = x(v)]

Эффект выполнения данной операции иллюстрируют следующие примеры:

[3 +> true, 5 +> false] !! [5 +> true]  [3 +> true, 5 +> true]

[3 +> true] !! [5 +> false]  [3 +> true, 5 +> false]

[3 +> true] !! [ ]  [3 +> true]

Операция union просто объединяет наборы пар двух заданных отображений, например:

[3 +> true, 5 +> false] union [5 +> true]  [3 +> true, 5 +> false, 5 +> true]

Эта операция может привести к недетерминизму (как в рассмотренном выше примере), поэтому во избежание возникновения недетерминизма обычно применяется к отображениям с непересекающимися доменами.

Операции ограничения отображений \ и / позволяют изменять домены отображений, а именно: \ удаляет из домена отображения указанное множество, / , напротив, оставляет в домене только те элементы, которые входят в указанное множество. Более точно определение этих операций выглядит следующим образом:

m \ s  [v +> m(v)  v : T1 :- v isin (dom m) \ s]

m / s  [v +> m(v)  v : T1 :- v isin (dom m) inter s]

Некоторые примеры:

[3 +> true, 5 +> false] \ {5, 7}  [3 +> true]

[3 +> true, 5 +> false] / {5, 7}  [5 +> false]

[3 +> true, 5 +> false] \ {3, 5, 7}  []

[3 +> true, 5 +> false] / {3, 5, 7}  [3 +> true, 5 +> false]

Операция # позволяет осуществлять композицию двух отображений, т.е. для отображений m1 и m2 она определяется так:

m1 # m2  [v +> m1(m2(v))  v : T1 :- v isin dom m2 /\ m2(v) isin dom m1]

Например:

[3 +> true, 5 +> false] # [Klaus +> 3, John +> 7]  [Klaus +> true]

[3 +> true] # [Klaus +> 5]  [ ]

Упражнения

  1. Определить отображение, сопоставляющее:

(a) каждому нечетному натуральному числу, не превосходящему 30, его остаток от деления на 3,

  1. каждой паре натуральных чисел остаток от деления первого числа на второе (первое число должно быть меньше 50),

  2. каждому натуральному числу, не превосходящему 20, все его делители,

  3. каждому натуральному числу ближайшее, не превосходящее его, число, являющееся полным квадратом,

  4. каждому натуральному числу n, не превосходящему 30, все простые числа из диапазона [2, n]; применить построенное отображение к n = 1, 10, 50.

Указания: используйте сокращенное выражение для определения отображений.

  1. Пример использования абстракции отображений в моделе-ориентированной спецификации. Пусть база данных университета описана следующим образом:

scheme

MAP_UNIVERSITY_SYSTEM =

class

type

Student,

Course,

CourseInfos = Course ‑m‑> Student-set,

University = Student-set >< CourseInfos

value

/* hasStudent проверяет, учится ли данный студент в указанном университете */

hasStudent : Student >< University -> Bool,

 hasCourse проверяет, читается ли данный курс в указанном университете */

hasCourse : Course >< University -> Bool,

 studOf возвращает множество студентов заданного университета, посещающих указанный курс 

studOf : Course >< University -~-> Student-set,

 attending возвращает множество курсов, которые посещает данный студент в указанном университете 

attending : Student >< University -~-> Course-set,

 newStud добавляет нового студента к числу студентов заданного университета 

newStud : Student >< University -~-> University,

 dropStud исключает указанного студента из числа студентов заданного университета 

dropStud : Student >< University -~-> University,

 newCourse добавляет новый курс с пустым множеством студентов к числу курсов заданного университета 

newCourse : Course >< University -~-> University,

 delCourse удаляет указанный курс из числа курсов заданного университета 

delCourse : Course >< University -~-> University

end

Определите функции, сигнатура которых приведена в данном описании.

Указания:

  • воспользуйтесь явным стилем описания функций и операциями над отображениями,

  • обратите внимание на тот факт, что использование в данной спецификации детерминированного отображения для типа CourseInfos автоматически обеспечивает свойство уникальности курса в предложенной моделе‑ориентированной спецификации и, следовательно, отпадает необходимость введения ограничения подтипа.

ГЛАВА 6. АЛГЕБРАИЧЕСКИЕ СПЕЦИФИКАЦИИ

Понятие алгебраической спецификации. Классификация функций модели на генераторы, модификаторы и обсерверы. Методика построения алгебраической спецификации. RAISE метод разработки программ. Понятие уточнения моделей. Проверка согласованности моделей. Упражнения.

Понятие алгебраической спецификации

Алгебраическая спецификация представляет собой частный случай аксиоматической спецификации, когда с помощью аксиом описываются свойства не какой-либо отдельной функции, а некоторой цепочки определяемых функций. В общем случае такие аксиомы имеют вид:

id(value_expr1, ..., value_exprn) is value_expr,

где выражения value_expri сами, как правило, содержат вызовы функций. Например, f(g(x),x) is h(g(x)).

При разработке спецификаций программной системы алгебраические спецификации используются на самом верхнем уровне абстракции, т.к., описывая свойства цепочек функций в терминах самих определяемых функций, не требуют уточнения типов и ограничиваются использованием только абстрактных типов.

Построение алгебраической спецификации системы начинается со спецификации сигнатур, где объявляются типы данных (используются абстрактные типы без конкретизации внутренней структуры) и сигнатуры функций. При этом среди объявленных типов особо выделяется тип, с помощью которого моделируется реализация целевой системы, - целевой тип.

В качестве примера рассмотрим разработку алгебраической спецификации простейшей СУБД со следующей функциональностью. База данных представляет собой набор записей, имеющих ключ и значение, причем каждое значение ключа должно встречаться в базе не более одного раза (свойство уникальности ключа). Система должна обеспечивать возможность добавления записи, удаления записи по ключу, проверки наличия в базе записи с заданным значением ключа, а также поиска значения по ключу, если запись с таким ключом имеется в базе.

Можно предложить следующую спецификацию сигнатур для данной системы:

DATABASE =

class

type Database, Key, Data

value

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