Главная » Просмотр файлов » Языки и методы формальной спецификации

Языки и методы формальной спецификации (1158803), страница 4

Файл №1158803 Языки и методы формальной спецификации (Языки и методы формальной спецификации) 4 страницаЯзыки и методы формальной спецификации (1158803) страница 42019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

explicit_function_def ::=

opt-comment-string single_typing

formal_function_application  value_expr opt-pre_condition

formal_function_application ::=

id_application │

prefix_application │

infix_application

id_application ::=

value-id formal_function_parameter-string

formal_function_parameter ::=

( opt-binding-list )

prefix_application ::=

prefix_op id

infix_application ::=

id infix_op id

Терминология. Телом явно определяемой функции является выражение, указанное в определении этой функции.

Контекст и правила видимости. В определении explicit_function_def контекстом конструкции formal_function_application является выражение value_expr и необязательное предусловие opt-pre_condition.

Контекстные условия. Связывание binding в указании типа single_typing должно быть именем или операцией id_or_op (т.е. декартово произведение product_binding не допускается).

Если метапеременная id_or_op в указании типа single_typing является идентификатором id, то в качестве значения метапеременной formal_function_application должна использоваться конструкция id_application этого идентификатора id. Если id_or_op в single_typing является префиксной операцией prefix_op, то в качестве значения метапеременной formal_function_application должна использоваться конструкция prefix_application этой операции prefix_op. И наконец, если id_or_op в single_typing является инфиксной операцией infix_op, то в качестве значения метапеременной formal_function_application должна использоваться конструкция infix_application этой операции infix_op.

Максимальный тип конструкции single_typing должен быть функциональным типом. Если значением метапеременной formal_function_application является infix_application, то параметрическая часть соответствующего функционального типа должна представлять собой декартово произведение двух типов. Если значением метапеременной formal_function_application является id_application, то соответствующий функциональный тип должен быть сформирован с использованием по крайней мере такого количества типов (каждый тип указывается перед функциональной стрелкой или ), сколько формальных параметров formal_function_parameter указано в определении данной функции.

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

id : type_expr1 opt-access_desc-string1 type_expr2

opt-access_desc-stringn type_exprn+1

id(opt-binding-list1)(opt-binding-list2)…(opt-binding-listm) 

value_expr opt-pre_condition

prefix_op : type_expr1 opt-access_desc-string type_expr2

prefix_op id  value_expr opt-pre_condition

infix_op : type_expr1  type_expr2 opt-access_desc-string type_expr3

id1 infix_op id2  value_expr opt-pre_condition

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

В первой из приведенных выше форм максимальный тип выражения value_expr должен быть меньше или равен максимальному типу выражения type_exprn+1 при m = n или конструкции:

type_exprm+1 opt-access_desc-stringn type_exprn+1

при m  n.

Во второй форме максимальный тип выражения value_expr должен быть меньше или равен максимальному типу выражения type_expr2.

В третьей форме максимальный тип выражения value_expr должен быть меньше или равен максимальному типу выражения type_expr3.

Выражение value_expr и предусловие opt-pre_condition могут только статически обращаться к тем переменным и каналам, которые указаны в описаниях статического доступа opt-access_desc-string1optaccess_descstringm в первой из вышеприведенных форм и в описаниях статического доступа optaccess_descstring в двух последних формах.

Контекстно-зависимые расширения. Определение функции explicit_function_def является краткой формой для определения значения и аксиомы, причем конкретный вид этой формы зависит от вида конструкции formal_function_application.

Пусть метафункция maximal преобразует тип в соответствующий ему максимальный тип, и пусть метафункция express определена так же, как в разделе 3.4.2. Тогда если в качестве значения метапеременной formal_function_application используется id_application с единственным формальным параметром formal_function_parameter, то явное определение функции explicit_function_def вида:

value

id : type_expr1  …  type_exprn opt-access_desc-string type_exprn+1

id(binding1,…,bindingn)  value_expr opt-pre_condition

где n  1, является краткой формой следующих определений:

value

id : type_expr1  …  type_exprn opt-access_desc-string type_exprn+1

axiom

 binding1 : maximal(type_expr1),…, bindingn : maximal(type_exprn) •

id(express(binding1),…,express(bindingn))  value_expr opt-pre_condition

При этом если список связываний binding1,…,bindingn пуст, то выражение type_expr1  …  type_exprn должно быть Unit и использовать квантор не нужно.

Заметим, что диапазон значений каждого формального параметра bindingi шире максимального типа соответствующего формального параметра type_expri .

Аналогичное расширение имеет место, если функциональную стрелку заменить функциональной стрелкой .

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

Если в качестве значения метапеременной formal_function_application используется prefix_application, то явное определение функции explicit_function_def вида:

value

prefix_op : type_expr1 opt-access_desc-string type_expr2

prefix_op id  value_expr opt-pre_condition

является краткой формой для определений:

value

prefix_op : type_expr1 opt-access_desc-string type_expr2

axiom

 id : maximal(type_expr1) •

prefix_op id  value_expr opt-pre_condition

В данном случае следует обратить внимание на то, что формальный параметр id диапазоном своих значений превосходит максимальный тип соответствующего формального параметра type_expr1.

Аналогичное расширение справедливо, если в качестве функциональной стрелки используется символ .

Если в качестве значения метапеременной formal_function_application используется infix_application, то явное определение функции explicit_function_def вида:

value

infix_op : type_expr1  type_expr2 opt-access_desc-string type_expr3

id1 infix_op id2  value_expr opt-pre_condition

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

value

infix_op : type_expr1  type_expr2 opt-access_desc-string type_expr3

axiom

 id1 : maximal(type_expr1),id2 : maximal(type_expr2)•

id1 infix_op id2  value_expr opt-pre_condition

Здесь также каждый формальный параметр idi диапазоном своих значений превосходит максимальный тип соответствующего формального параметра type_expri.

Аналогичное расширение имеет место для случая функциональной стрелки .

3.4.5. Неявное определение функций (Implicit Function Definitions)

Синтаксис:

implicit_function_def ::=

opt-comment-string single_typing formal_function_application

post_condition opt-pre_condition

Контекст и правила видимости. В определении implicit_function_def контекстом конструкции formal_function_application является постусловие post_condition и необязательное предусловие opt-pre_condition.

Контекстные условия. Связывание binding в указании типа single_typing должно быть идентификатором или операцией id_or_op (т.е. декартово произведение product_binding не допускается).

Если метапеременная id_or_op в конструкции single_typing является идентификатором id, то в качестве значения метапеременной formal_function_application должно использоваться id_application этого идентификатора id. Если id_or_op в single_typing является префиксной операцией prefix_op, то в качестве значения метапеременной formal_function_application должно использоваться prefix_application этой операции prefix_op. И наконец, если id_or_op в single_typing является инфиксной операцией infix_op, то значением метапеременной formal_function_application должно быть infix_application этой операции infix_op.

Максимальным типом конструкции single_typing должен быть функциональный тип. Если значением метапеременной formal_function_application является infix_application, то параметрическая часть функционального типа должна представлять собой декартово произведение двух типов. Если значением метапеременной formal_function_application является id_application, то функциональный тип должен быть сформирован с использованием по крайней мере такого количества типов (все эти типы указываются перед функциональной стрелкой или ), сколько формальных параметров formal_function_parameter указано в определении данной функции.

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

id : type_expr1 opt-access_desc-string1 type_expr2

opt-access_desc-stringn type_exprn+1

id(opt-binding-list1)(opt-binding-list2)…(opt-binding-listm)

post_condition opt-pre_condition (m  n)

prefix_op : type_expr1 opt-access_desc-string type_expr2

prefix_op id post_condition opt-pre_condition

infix_op : type_expr1  type_expr2 opt-access_desc-string type_expr3

id1 infix_op id2 post_condition opt-pre_condition

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

Конструкции post_condition и opt-pre_condition могут только статически обращаться по чтению к тем переменным и каналам, которые указаны в описаниях статического доступа optaccess_desc-string1optaccess_descstringm в первой из вышеприведенных форм и в описаниях статического доступа optaccess_descstring в двух последних формах.

Контекстно-зависимые расширения. Неявное определение функции implicit_function_def является краткой формой для определения значения и аксиомы, причем конкретный вид этой формы зависит от вида конструкции formal_function_application.

Пусть метафункции maximal и express определены так же, как в предыдущем разделе. Тогда если в качестве значения метапеременной formal_function_application используется id_application с единственным формальным параметром formal_function_parameter, то неявное определение функции implicit_function_def вида:

value

Характеристики

Тип файла
Документ
Размер
776,5 Kb
Тип материала
Высшее учебное заведение

Список файлов книги

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