
- •Введение
- •Вводные замечания
- •Спецификации (Specifications)
- •Объявления (Declarations)
- •3.3.1. Определение абстрактных типов (Sort Definitions)
- •3.3.2. Определение вариантов (Variant Definitions)
- •3.3.3. Определение объединений (Union Definitions)
- •3.3.4. Определение сокращенной записи (Short Record Definitions)
- •3.3.5. Определение абревиатур (Abbreviation Definitions)
- •3.4.1. Прокомментированное указание типа (Commented Typing)
- •3.4.2. Явное определение констант (Explicit Value Definitions)
- •3.4.3. Неявное определение констант (Implicit Value Definitions)
- •3.4.4. Явное определение функций (Explicit Function Definitions)
- •3.4.5. Неявное определение функций (Implicit Function Definitions)
- •Variable
- •Описание классов (Class Expressions)
- •Описание типов (Type Expressions)
- •Value Expressions (выражения)
- •6.7.1. Множества, заданные диапазоном (Ranged Set Expressions)
- •6.7.2. Множества, заданные перечислением (Enumerated Set Expressions)
- •6.7.3. Сокращенные множественные выражения (Comprehended Set Expressions)
- •6.8.1. Списки, заданные диапазоном (Ranged List Expressions)
- •6.8.2. Списки, заданные перечислением (Enumerated List Expressions)
- •6.8.3. Сокращенные выражения для списков (Comprehended List Expressions)
- •6.9.1. Отображения, заданные перечислением (Enumerated Map Expressions)
- •6.9.2. Сокращенные выражения для отображений (Comprehended Map Expressions)
- •6.16.1. Операторные инфиксные выражения (Statement Infix Expressions)
- •6.16.2. Аксиоматические инфиксные выражения (Axiom Infix Expressions)
- •6.16.3. Инфиксные выражения (Value Infix Expressions)
- •6.17.1. Аксиоматические префиксные выражения (Axiom Prefix Expressions)
- •6.17.2. Универсальные префиксные выражения (Universal Prefix Expressions)
- •6.17.3. Префиксные выражения (Value Prefix Expressions)
- •Initialise
- •6.23.1. Локальные выражения (Local Expressions)
- •6.23.2. Let-выражения (Let Expressions)
- •6.23.3. If- выражения (If Expressions)
- •6.23.4. Case-выражения (Case Expressions)
- •6.23.5. While-выражения (While Expressions)
- •6.23.6. Until-выражения (Until Expressions)
- •6.23.7. For-выражения (For Expressions)
- •Связывания (Bindings)
- •Указания типа (Typings)
- •Patterns (образцы)
- •9.7.1. Образцы списки, заданные перечислением (Enumerated List Patterns)
- •9.7.2. Образцы списки, заданные конкатенацией (Concatenated List Patterns)
- •9.8.1. Идентификаторы или операции (Identifiers or Operators)
- •9.8.2. Образцы равенства (Equality Patterns)
- •Идентификаторы и операции
- •Инфиксные комбинаторы (Infix Combinators)
- •Interlocked-композиция (Interlocked composition):
- •Литература для дополнительного чтения
- •Приложение 1. Приоритет операций
- •Приложение 2. Таблица соответствия rsl символов и их ascii представления
- •Приложение 3. Ключевые слова rsl
Interlocked-композиция (Interlocked composition):
value_expr1 ╫ value_expr2
Два указанных выражения value_exprвыполняются, блокируя друг друга по отношению к внешним взаимодействиям (т.е. взаимодействиям с другими какими-то выражениями), до тех пор, пока одно из них не завершится, в то время как другое будет продолжать свое выполнение. Эти выражения могут предложить осуществить взаимодействие посредством каналов, в частности они могут предложить взаимодействие друг с другом (если одно из них производит ввод по какому-то каналу, а другое вывод по тому же каналу). Если выражения будут в состоянии взаимодействовать друг с другом, они выполнят это взаимодействие. Если выражения будут в состоянии взаимодействовать с другими параллельно выполняющимися выражениями, но только не друг с другом, они попадут в тупиковую ситуацию, где и будут пребывать, пока одно из них не сможет завершиться.
Единицей interlocked-композиции является skip, нулем — chaos. Interlocked-композиция обладает свойствами коммутативности и дистрибутивности по отношению к внутреннему выбору:
value_expr ╫ skip º value_expr
value_expr ╫ chaos º chaos
value_expr1 ╫ value_expr2 º value_expr2 ╫ value_expr1
value_expr1 ╫ ( value_expr2 úù value_expr3 ) º
( value_expr1 ╫ value_expr2 ) úù ( value_expr1 ╫ value_expr3)
Заметим, что в отличие от параллельной композиции ║interlocked-композиция╫не является ассоциативной.
Если выражение value_exprсходится и не вызывает взаимодействия и еслиc1c2, то справедливы следующие две эквивалентности:
x := c1? ╫ c2! value_expr º stop
x := c? ╫ c! value_expr x := value_expr
Комбинатор interlocked-композиции иллюстрирует различие между внешним и внутренним выборами. Если выраженияvalue_expr1иvalue_expr2сходятся и не вызывают взаимодействия и еслиc1¹c2, то имеют место следующие две эквивалентности:
(x := c1? ▌ c2! value_expr2) ╫ c1! value_expr1 º x := value_expr1
(x := c1? ▌ c2! value_expr2) ╫ c1! value_expr1 º (x := value_expr1) úù stop
Последовательная композиция:
value_expr1 ; value_expr2
Второе выражение value_exprпринуждается к выполнению после выполнения первого выраженияvalue_expr. В качестве результата выполнения последовательной композиции возвращается значение второго выраженияvalue_expr.
Единицей последовательной композиции является skip, кроме того, данная композиция ассоциативна и обладает свойством дистрибутивности по первому аргументу по отношению к внутреннему выбору:
value_expr ; skip º value_expr
skip ; value_expr º value_expr
value_expr1 ; (value_expr2 ; value_expr3) º
(value_expr1 ; value_expr2) ; value_expr3
(value_expr1 úù value_expr2) ; value_expr3 º
(value_expr1 ; value_expr3) úù ( value_expr2 ; value_expr3)
Литература для дополнительного чтения
[ADL]http://www.sun.com/960201/cover/language.html
[Eiffel] http://www.eiffel.com
[iContract] R.Kramer. iContract – The Java Design by Contract Tool. Fourth conference on OO technology and systems (COOTS), 1998.
[IFAD] http://www.ifad.dk
[ISPRAS] http://www.ispras.ru/
[Jones] C.B. Jones. Systematic Software Development Using VDM. Prentice Hall International, 1986.
[Larch] J.Guttag et al. The Larch Family of Specification Languages. IEEE Software, Vol. 2, No.5, September 1985, pp.24-36.
[OMG] http://www.omg.org
[RAISE-language] The RAISE Language Group. The RAISE Specification Language. Prentice Hall Europe, 1992.
[RAISE-method] ftp://ftp.iist.unu.edu/pub/RAISE/method_book
[RUP] http://www.rational.com
[VDM_SL] N.Plat, P.G.Larsen. An Overview of the ISO/VDM-SL Standard. SIGPLAN Notes, Vol. 27, No. 8, August 1992.
[VDM++] http://www.csr.ncl.ac.uk/vdm/
[MSC] Message Sequence Charts. ITU recommendation Z.120.
[SDL] Specification and Design Language. ITU recommendation Z.100.
[Z] J.M.Spivey. The Z Notation: A Reference Manual. Prentice Hall, 2nd edition, 1992.