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

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

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

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

Для задания классов используются классовые выражения (class expressions).

Некоторые классы называются максимальными. Классовое выражение представляет максимальный класс тогда и только тогда, когда все определения, заданные этим выражением, являются максимальными.

Определение схемы является максимальным, если его классовое выражение является максимальным.

Определение типа является максимальным, если заданный с помощью этого определения идентификатор типа представляет максимальный тип.

Определение функции (value definition) является максимальным, если представляет собой указание типа, в котором типовое выражение является максимальным.

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

Определение канала является максимальным, если представляет собой определение одного отдельного канала, типовое выражение которого является максимальным.

Определение аксиомы не является максимальным.

Атрибуты. С каждым выражением для задания класса ассоциируется некоторый максимальный класс. Конкретный максимальный класс для каждого вида классовых выражений определяется в соответствующем разделе данного пособия.

Класс, представленный некоторым классовым выражением, является подклассом ассоциируемого с данным выражением максимального класса.

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

4.2. Базисные классы (Basic Class Expressions)

Синтаксис:

basic_class_expr ::=

class opt-decl-string end

Контекст и правила видимости. Непосредственным контекстом конструкции opt-decl-string является сама opt-decl-string. Это означает, что порядок следования определений в конструкции opt-decl-string несущественен.

Контекстные условия. Все входящие в данное выражение объявления decl должны быть совместимы.

Атрибуты. Максимальный класс выражения basic_class_expr задается выражением class_expr, состоящим из максимальных определений, полученных из не аксиоматических определений, входящих в состав объявлений указанного выражения basic_class_expr.

Значение. Выражение basic_class_expr употребляется для обозначения определений, появляющихся в объявлениях decls.

4.3. Расширяющие классы (Extending Class Expressions)

Синтаксис:

extending_class_expr ::=

extend class_expr with class_expr

Контекст и правила видимости. Контекст первого классового выражения class_expr расширяется до второго классового выражения class_expr.

Контекстные условия. Выражения class_expr должны быть совместимы.

Атрибуты. Максимальный класс представляется выражением, формируемым из исходного выражения extending_class_expr, путем замены входящих в него выражений class_expr максимальными.

Семантика. Классовое выражение extending_class_expr используется для обозначения тех определений, которые обозначаются выражениями class_expr.

4.4. Определяемые операции (Defined Items)

Синтаксис:

defined_item ::=

id_or_op │

disambiguated_item

disambiguated_item ::=

id_or_op : type_expr

Контекстные условия. В конструкции disambiguated_item метапеременная id_or_op должна представлять некоторую функцию, причем ее максимальный тип должен совпадать с максимальным типом выражения type_expr.

Семантика. Типовое выражение type_expr внутри конструкции disambiguated_item требуется в тех случаях, когда id_or_op за счет перегрузки имен (overloading) представляет несколько значений с различными максимальными типами. В таких случаях выражение type_expr идентифицирует в точности одно из этих значений.

  1. Описание типов (Type Expressions)

5.1. Общие положения

Синтаксис:

type_expr ::=

type_literal │

type-name │

product_type_expr │

set_type_expr │

list_type_expr │

map_type_expr │

function_type_expr │

subtype_type_expr │

bracketed_type_expr

Терминология. Тип представляет собой набор значений. Различаются три вида типов:

  • предопределенные типы представлены встроенными в язык литералами. Такие типы включают, например, целые числа или булевские значения. Подробнее см. раздел 5.2.

  • абстрактные типы представлены идентификаторами, которые вводятся в определениях абстрактных типов (sort definitions, см. раздел 3.3.1.), вариантов (variant definitions, см. раздел 3.3.2.), объединений (union definitions, см. раздел 3.3.3.) и сокращенных записей (short record definitions, см. раздел 3.3.4.).

  • составные типы построены из других типов путем применения типового оператора (type operator) к одному или более типов.

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

Тип t1 является подтипом типа t2, если все значения, принадлежащие типу t1, принадлежат также типу t2 .

Некоторые типы называются максимальными. Тип является максимальным, если он может быть представлен максимальным типовым выражением.

Типовое выражение является максимальным тогда и только тогда, когда оно является одним из следующих:

  • Unit, Bool, Int, Real или Char (т.е. любым типом, состоящим из литералов, за исключением Nat и Text).

  • именем, соответствующее определение которого представляет собой определение абстрактного типа, варианта, объединения или сокращенной записи.

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

  • типовым выражением, построенным из максимальных типовых выражений и описаний статического доступа путем применения одного из типовых операторов  , -infset, ω, или (т.е. любых типовых операторов за исключением -set, * и ).

  • выражением для задания подтипа, если входящее в его состав типовое выражение является максимальным и ограничение, с помощью которого задается подтип, сохраняется для всех значений этого (максимального) типа, представленного данным максимальным типовым выражением.

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

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

Два максимальных типа считаются различимыми тогда и только тогда, когда они не являются неразличимыми.

Использование в спецификации определений объединений (union definitions) вызывает потенциальное приведение типов, которое является частичной функцией между максимальными типами.

Будем говорить, что имеет место потенциальное приведение (potential coercion) максимального типа t1 к максимальному типу t2 тогда и только тогда, когда выполняются следующие условия:

  1. t1 идентичен с t2, в этом случае потенциальное приведение типа t1 к t2 представляет собой тождественную функцию.

  2. задано определение объединения вида:

id2 = …  id1  …

в котором id1 имеет максимальный тип t1 и id2 имеет максимальный тип t2, в этом случае потенциальное приведение типа t1 к типу t2 представляет собой функцию id2_from_id1.

  1. заданы типы t11, t12, t21, t22 и описание статического доступа opt‑access_desc-string такие, что имеется потенциальное приведение типов t11 к t21 и t12 к t22, кроме того, типы t1 и t2 построены одним из перечисленных ниже способов. В этом случае потенциальное приведение типа t1 к типу t2 выводится из других потенциальных приведений очевидным образом.

    1. t1 есть …´ t11  … и t2 есть … ´ t21 ´ …

    2. t1 есть t11infset и t2 есть t21-infset.

    3. t1 есть t11 и t2 есть t21.

    4. t1 есть t11 t12 и t2 есть t21 t22.

    5. t1 есть t11 opt-access_desc-string t12 и

t2 есть t21 opt-access_desc-string t22.

4. задан тип t3 такой, что f13 является потенциальным приведением типа t1 к t3 и f32 соответствующим приведением t3 к t2; в этом случае потенциальным приведением типа t1 к t2 является f32f13.

Максимальный тип t1 называется приводимым к максимальному типу t2, если существует одно и только одно потенциальное приведение типа t1 к t2.

Максимальный тип t1 меньше или равен максимального типа t2, если он приводим к подтипу типа t2.

Максимальный тип t называется верхней границей набора максимальных типов, если все максимальные типы данного набора меньше или равны t.

Максимальный тип называется наименьшей верхней границей набора максимальных типов, если он является верхней границей данного набора и меньше или равен всех остальных верхних границ этого набора.

Атрибуты. С любым типовым выражением type_expr ассоциируется некоторый максимальный тип. Тип, представленный типовым выражением type_expr, является подтипом ассоциируемого с ним максимального типа. В ниже следующих разделах для каждого конкретного случая типового выражения определяется соответствующий максимальный тип.

Семантика. Типовое выражение type_expr представляет некоторый тип. Конкретные типы для каждой разновидности типовых выражений определяются в следующих разделах.

5.2. Предопределенные типы (Type Literals)

Синтаксис.

type_literal ::=

Unit

Bool

Int

Nat

Real

Text

Char

Атрибуты. Максимальным типом Unit является Unit.

Максимальным типом Bool является Bool.

Максимальным типом Int является Int.

Максимальным типом Nat является Int.

Максимальным типом Real является Real.

Максимальным типом Text является Char.

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

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

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

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