Научная статья на тему 'Расширение языка машин абстрактных состояний Гуревича рациональным временем'

Расширение языка машин абстрактных состояний Гуревича рациональным временем Текст научной статьи по специальности «Математика»

CC BY
165
32
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по математике, автор научной работы — Васильев П. К.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Васильев П. К.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Extending the Gurevitch abstract stat-e machine language with rational time

An extension of the Gurevitch abstract state machine language is proposed. Syntax and two variants of semantics are described. The semantics with delays and without delays between updates are considered. Time constraints are defined by linear inequalities. A simulator is implemented which will be used for on-the-fly verification of formulas in FOTL language.

Текст научной работы на тему «Расширение языка машин абстрактных состояний Гуревича рациональным временем»

2007 ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА. Сер. 10. Вып. 4

ИНФОРМАТИКА

УДК 004.436.4+004.414.23+004.414.28 П. К. Васильев

РАСШИРЕНИЕ ЯЗЫКА МАШИН АБСТРАКТНЫХ СОСТОЯНИЙ ГУРЕВИЧА РАЦИОНАЛЬНЫМ ВРЕМЕНЕМ

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

Язык машин абстрактных состояний (ASM [1]), который используется нами в качестве основы для предлагаемого языка спецификации, обладает большой выразительной мощыо. Даже его подмножество, описывающее простейшие ASM (basic ASMs [2]), позволяет описать любую алгоритмическую машину состояний. Формализм ASM помогает понять и специфицировать задачу с точки зрения как программирования, так и математической логики. Методология ASM нашла свое применение в таких практических задачах как спецификация семантики языков VHDL, С, С+ + , Prolog, спецификация протоколов и других прикладных задач (см. [3, 4]). Из более поздних работ, в которых был применен язык ASM, упомянем спецификацию формальной семантики языков Java [5] и С# [6], а также последней версии языка SDL - SDL 2000 [7].

В связи с тем, что системы реального времени накладывают определенные ограничения на использование временных ресурсов, необходимо реализовать подходящий механизм работы с временными значениями и переменными. Изначально формализм ASM не предусматривает встроенной временной модели, но существует ряд работ, предлагающих варианты решения этой задачи. Впервые решение проблемы предложили Гуревич и Хаггинс [8], которые представили вычисления в виде отображения из области временных значений в область состояний ASM. Затем последовали исследования [9, 10], в которых проблема верификации временных алгоритмов сводится к верификации формализованных спецификаций и требований в виде формул специальной логики с временем. В некоторых статьях предлагается явное использование функции времени, например в [11, 12]. Кроме того, вводятся временные задержки на выполнение либо отдельных вычислений, либо целых замещений [10, 13]. В перечисленных работах содержится множество идей и предложений по использованию и уточнению языка ASM, но, несмотря на это, в них не сформулирована явная методика спецификации с последующей верификацией. Также не были обнаружены программные разработки, реализующие интерпретацию расширений языка на практике.

© П. К. Васильев, 2007

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

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

Для формулировки ограничений, накладываемых на спецификации, будем использовать язык First Order Timed Logic (FOTL) [9, 14, 15], поскольку он позволяет оперировать временем как рациональной переменной. Известно, что данная логика неразрешима, но существуют разрешимые классы формул, имеющие практическое значение.

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

• рассматриваются системы реального времени с непрерывным или дискретным временем;

• временные ограничения охраняющих условий и требований пользователя выражены неравенствами с линейной зависимостью от времени;

• спецификации программ выражены на языке ASM;

• условия требований выражены на языке FOTL.

2. ASM с временем. Остановимся более подробно на описании уточненного формализма ASM. Полную спецификацию реактивной системы реального времени можно задать парой < ENV,ASMSPEC >.

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

ASM SPEC - спецификация машины абстрактных состояний Гуревича с временем. ASM с временем, в свою очередь, можно задать тройкой < VOC,INIT,PROG >, где VOC - словарь, IN IT - описание начального состояния и PROG - программа. Словарь ASM состоит из множества сортов, множества функциональных символов и множества предикатных символов. Некоторые из них имеют фиксированную интерпретацию: Л -сорт вещественных чисел, Z - сорт целых чисел, 7V - сорт натуральных чисел, BOOL -сорт булевых значений: true и false, Т = 1Z+ - выделенный сорт значений времени, UNDEF = {undef} - специальный сорт, содержащий одно значение.

Функции ASM можно разделить на две категории: внутренние и внешние. Интерпретация внутренней функции может быть изменена программой ASM, а интерпретация внешней функции меняется независимо от вычислений, производимых программой.

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

ASM с временем использует дополнительный сорт Т для временных значений и функцию СТ : —> Т, которая интерпретируется как текущее значение времени ASM. Для работы с временем можно использовать арифметические операции: сложение, вычитание, умножение на константу, а также сравнения и равенство.

В данной работе рассматриваются только кусочно-линейные внешние функции, заданные на интервалах. Необходимо, чтобы интерпретация функций была определена на всем временном интервале работы ASM, поэтому внешние функции заданы на интервалах, замкнутых слева и открытых справа: [ijt,i/t+i), где tk - момент времени, а к - индекс. Внутренние функции меняют интерпретацию в ходе вычислений сразу после выполнения замещения, поэтому определены на интервалах, открытых слева и замкнутых справа: (ijt,i/t+i]. Функции меняют интерпретации в ходе выполнения программы, а временные точки, в которых происходят изменения состояния, делят множество временных значений на интервалы. На каждом из данных временных интервалов интерпретации всех функций постоянны. Результатом выполнения спецификации ASM является отображение из множества времени во множество состояний. Каждое состояние ASM является некоторой интерпретацией словаря.

2.1. Синтаксис ASM с временем. Приведем краткий обзор основных синтаксических конструкций предлагаемого языка ASM с временем.

2.1.1. Операция (правило) замещения. Правило замещения является одной из главных операций языка ASM, так как именно оно меняет состояния машины.

• Одиночное правило замещения в виде операции присваивания: f(x\,..., Xk) '■= О, изменяющее интерпретацию функции в одной точке.

• Блок параллельных правил замещения, которые выполняются одновременно: [Ai ... Ат], где Ai - вариант правила замещения.

• Блок последовательных правил замещения, выполнение которых происходит последовательно: {Лх... Ат}, где Ai - вариант правила замещения.

• Охраняемое правило замещения, здесь Guardi,i € 1,... ,п, - охраняющие условия, аЛ{,гб1,...,п + 1,- замещения:

if Guardi then А\ elseif Guard2 then A2 ... else An+\.

2.1.2. Блоки инструкций. Блоком последовательных инструкций называется обычная последовательность инструкций языка, которые выполняются по очереди в прямом порядке. В языках ASM предлагались разные способы описания последовательных блоков. Мы остановили выбор на привычных для разработчиков фигурных скобках: { Р Q }.

Блоком параллельных инструкций называется набор инструкций, которые выполняются одновременно и для которых порядок выполнения не важен. Подразумевается, что все инструкции в параллельном блоке начинают свое выполнение одновременно. Был выбран следующий вариант записи: [ Р Q ].

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

type new_typel = other_type;

type new_type2 = {vail, val2, ... valN};

type new_type3 = typel, type2, ... typeN -> result_type;

2.1.4- Функции. Все функции (внутренние и внешние) задаются с помощью ключевого слова var, для нульместных функций можно задать ее начальное значение:

var variable_name [= initial_value] : variable_type;

var function_namel : defined_function_type;

var function_name2 : typel, type2, ... typeN -> result_type;

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

2.1.5. Итератор, оператор выбора и логические форму-

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

foreach х in У where В(х) do S; choose х in Y where B(x) do S;

Для записи логических формул с квантором будем применять привычные конструкции. В приведенных примерах х принадлежит типу Y, В(х) обозначает предикатную формулу, a S - блок правил замещения:

forall х in Y holds B(x); exists x in Y where B(x);

2.2. Пример использования ASM с временем. В качестве примера спецификации предложим ASM, заданную несколькими вложенными охраняемыми замещениями в цикле. На вход подается номер процесса, которому надо передать управление. Если охраняющее условие выполняется, то меняется номер текущего активного процесса. Текущий процесс помечается маркером Токеп(р), где р - номер процесса. Значение времени автоматически изменяется после выполнения каждой операции. Автоматически отслеживаются изменения интерпретации внешних функций до тех пор, пока охраняющие условия принимают значение true. В любом случае работа алгоритма должна заканчиваться в момент времени не позже 10, что отслеживается условием цикла while:

type ProcessNo = {1..3}; // множество процессов

type Proc = ProcessNo -> Boolean; // тип для маркера

var Token: Proc; // маркер текущего процесса

var Last: Float; // момент последнего выполнения замещения

var Pass: ProcessNo; // внешняя функция: номер следующего процесса

var a, dl, d2: Float; // внешние функции: ограничительные параметры

MainO { [ Last := 0;

Token(l) := true;

Token(2) := false;

Token(3) := false; ] // блок, задающий начальное состояние

while ( СТ <= 10 ) do [

if ( Token(1) and (Pass != 1) ) then

[

if ( (a*Last+dl <= CT) and (CT <= a*Last+d2) )

then [ Token(Pass):=true; Token(l):=false; ] Last := CT;

]

if ( Token(2) and (Pass != 2) ) then

[

if ( (a*Last+dl <= CT) and (CT <= a*Last+d2) )

then [ Token(Pass):=true; Token(2):=false; ] Last := CT;

]

if ( Token(3) and (Pass != 3) ) then

[

if ( (a*Last+dl <= CT) and (CT <= a*Last+d2) )

then [ Token(Pass):=true; Token(3):=false; ] Last := CT;

]

]

3. Задание внешних функций. Как уже ранее упоминалось, внешние функции ASM представляют собой входные данные системы и параметры, определяющие выполнение спецификации. Рассмотрим внешнюю функцию / : X —> У и обозначим соответствующую ей функцию с временным параметром /° : Т х X —>• У, где / - имя функции; X - абстрактный сорт или прямое произведение двух абстрактных сортов; Т - временной сорт; У - абстрактный сорт или сорт Л. Вариант функции с временным параметром /° не используется непосредственно в программе ASM, чтобы не усложнять семантику языка. Такие функции предназначены только для описания требований.

Возьмем интерпретацию некоторого абстрактного конечного сорта X и пронумеруем множество его значений натуральными числами. Тогда можно задать значения некоторой функции / с помощью индексов: f(i) :— (t\, f[\... ; t\, ...), где i £ 1 ,...,n; n мощность сорта X\ t\,t\, ■ ■ ■, t\,... - начальные точки интервалов; /ii /г> • • • > • ■ • ~ значения функции, определенные на интервалах. Также поддерживается спецификация функций от двух переменных, т. е. функция задана на прямом произведении двух абстрактных сортов X' х X". Тогда определение функции принимает вид f(i,j) := {t\'3,fl ^¡ty, ft'1 ■,...; fy3, fI'3 ;...), где г £ 1 ,...,n,j £ 1 ,...,ш;

п - мощность сорта Л"; m - мощность сорта X"; остальные обозначения аналогичны описанию одноместной функции.

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

Pass := (0, 1; 1, 3; 2, 1; 3, 2; 4, 1; 5, 3) dl := (0, 0.3; 1, 0.7; 2, 0.2; 3, 0.4; 4, 0.1) d2 := (0, 1.2; 1, 1.3; 2, 1.5; 3, 1.4; 4, 1.7) а := (0, 1; 2, 1.1; 4, 1.2; 5, 0.7)

Из данного примера видно, что внешние функции меняют интерпретацию в моменты времени 0, 1, 2, 3, 4, 5. Вслед за изменениями внешних функций выполняются охраняющие условия и соответствующие им замещения. Таким образом, в случае малых задержек функция текущего времени будет принимать значения 1, 2, 3, 4, 5. После момента времени 5 выполнится последнее замещение, но дальнейших изменений интерпретации внешних функций не последует. Замещения выполняться не будут, поэтому работа машины остановится раньше, чем функция текущего времени достигнет момента времени 10, указанного в условии цикла.

4. Задание задержек. Все замещения классической ASM [1] выполняются мгновенно. Но в реальности выполнение каждой операции занимает некоторое время. Некоторые идеи введения времени в язык ASM уже упоминались, например в [10, 16]. В предлагаемом подходе данное явление моделируется с помощью временных задержек. Численные значения задержек зависят от типа и степени вложенности конструкций, использованных при описании ASM. Для вычисления задержек можно ввести функцию S. Пусть S - множество всевозможных предложений языка. Тогда определение функции задержки будет выглядеть следующим образом: S : S —> Т. Для каждой базовой операции или конструкции значение функции <5 должно быть явно задано пользователем и будет использоваться для расчета задержек более сложных предложений. Чтобы получить задержку суперпозиции синтаксических конструкций /х и /2, например последовательного блока {/1/2}, необходимо просуммировать значения задержек всех его составляющих замещений: <5({/1 /2}) = ¿(Л) + <^(/2)- Исключением является случай параллельного замещения, к примеру [/1/2]. В данном случае задержка вычисляется как максимальная задержка среди замещений в параллельном блоке, т. е. ¿([/1/2]) = max{<5(/i),¿(/2)}. Перечислим основные варианты задания задержек для различных операций:

• определены две задержки Sext (операции с внешними функциями) и 6jnt (операции с внутренними функциями), 5ext > 0, 5int > 0;

• аналогично предыдущему варианту, но операции с внутренними функциями мгно-венны: 6ext > 0, Sint = 0;

• вырожденный случай -- нет никаких задержек: 5ext = <5,nf = 0, т. е. мы имеем дело с классическим вариантом ASM;

• общий случай: задержка задается пользователем для каждой операции языка.

5. Раскрытие недетерминизмов. Основным примером возникновения недетерминизма в предлагаемом языке является оператор выбора choose, который выбирает некоторый элемент из множества возможных значений. В данной работе рассматриваются следующие варинты базовых способов выбора:

• первый (последний) элемент списка;

• минимальный (максимальный) элемент списка, если для элементов определен порядок;

• элементы списка перебираются в цикле с некоторым шагом;

• элемент выбирается из списка псевдо-случайным образом с помощью генератора

случайных чисел языка реализации симулятора.

6. Свойства ASM. Для описания свойств ASM требуется достаточно выразительный язык логики. В данной работе для формулирования требований будем использовать FOTL [9, 14]. Существует несколько реализаций языков ASM, в которых можно явно описывать ограничения и свойства алгоритмов, такие как предусловия, постусловия и инварианты. Приведем пример свойства на языке FOTL, которое относится к ранее предложенному примеру спецификации:

Liveness : Vi G Time Зр G ProcessNo (Token0 (t,p)),

Safety : Vi G Time Vp, q G ProcessNo{p / q A Token0 (t,p) -iToken°(t, q)).

6.1. Логика первого порядка с временем или FOTL. Основная идея логики FOTL - это выбрать разрешимую теорию для работы с арифметикой и математическими функциями, а также добавить абстрактные функции от времени, необходимые для спецификации наших задач. В каком-то смысле теория должна быть и минимальна, и достаточно выразительна. Для рассматриваемых задач мы берем теорию со сложением и умножением на рациональные константы. Известно, что данная теория является разрешимой [17]. Для представления значений времени используются неотрицательные рациональные числа.

6.1.1. Синтаксис FOTL. Словарь FOTL состоит из конечного числа сортов, функциональных и предикатных символов. Каждая переменная привязана к некоторому сорту. Некоторые из сортов имеют фиксированную интерпретацию. Среди них вещественные числа 1Z и временной сорт Т. Таким образом, имеем тот же набор сортов, что и в определении ASM с временем. Остальные сорта являются конечными. Как и в случае ASM с временем, некоторые функции и предикаты зарезервированы для обозначения сложения, вычитания, умножения на константу, сравнения и т. д. Функция СТ° отражает текущее значение времени системы. Определение абстрактной функции выглядит следующим образом: Т х X У, где X - конечный сорт или прямое произведение двух конечных сортов, а У - конечный сорт или предопределенный сорт 1Z. Абстрактный предикат задается аналогично: Т х X —> Bool.

6.1.2. Семантика FOTL. Для логики FOTL понятия интерпретация, модель, выполнимость и истинность имеют то же значение, что и для логики предикатов первого порядка. Исключение составляют несколько символов словаря, имеющие фиксированную интерпретацию. Пусть М - интерпретация, F - некоторая формула. Тогда М \= F, М. F и \= F обозначают соответственно, что Л4 - модель F, М - не модель F и F истинна.

7. Семантика ASM с временем. Определим семантику ASM с временем как выполнение спецификации некоторым симулятором. Результатом выполнения будет последовательность интерпретаций символов алфавита ASM.

7.1. Общее описание семантики. Процесс выполнения спецификации можно разделить на несколько основных этапов, работающих в цикле до завершения выполнения спецификации:

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

условий истинно;

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

• изменение состояния, осуществляемое блоком замещений;

• вычисление новых значений свойств и охраняющих условий.

Как ранее уже упоминалось, функцию текущего времени можно только прочитать и использовать в вычислениях. Формулы охраняющих условий могут содержать арифметические операции (+, —, *, /, %), равенство, неравенство, логические операции (not,, and, or, хог) и функцию времени СТ. При каждом замещении величина функции времени увеличивается на величину задержки выполненного блока замещений. Таким образом, в зависимости от величин задержек могут получаться принципиально разные результаты выполнения.

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

7.3. Параллельные инструкции. Все инструкции в параллельном блоке должны выполняться одновременно. В данной работе такой блок представляется в виде набора под-машин абстрактных состояний, которые работают аналогично глобальной ASM, только со своей собственной интерпретацией функций. Таким образом, под-машины работают независимо друг от друга. Начальные состояния у под-машин одного блока всегда одинаковы, но каждая из них выполняет собственные операции. В итоге, после окончания работы каждой из них, мы получаем набор измененных состояний, которые следует обработать, чтобы вычислить изменение состояния глобальной ASM.

Рассмотрим параллельный блок с N инструкциями. Пусть SCi - окончательное изменение состояния для каждой из инструкций, i £ {1,... ,N}. Тогда полное изменение

N

состояния после выполнения всего блока равно (J SCi. Причем, если |J SCiCiSCj = 0,

¿=i i^j т. е. множества изменений состояний не пересекаются, считаем, что ситуация корректна. В противном случае имеют место противоречивые замещения, о чем будет сообщено пользователю. При определенной настройке симуляции выполнение может быть продолжено, а конфликт изменений состояния будет устранен по аналогии с методом раскрытия недетерминизмов, который упоминался в п. 6. После вычисления всех изменений определяется общая задержка блока параллельных инструкций, на которую увеличивается значение функции времени.

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

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

{ [ х := 2; у := 0; ]

[ { у : = 7; х := у; > // у == 7, х == 7 {х:=3;у:=х;> // х == 3, у == 3

]

}

Во втором примере недетерминизмы не возникают, можно корректно выполнить замещения, например, осуществить обмен значениями двух переменных. Однако в обеих параллельных ветках значение выражения у * х различно:

{ [ х := 2; у := 0; ] [ { у := 2; у := у*х; } { х := 3; х := х*у; }

]

7-4■ Параллельный блок в цикле. Если параллельный блок находится в цикле, то симуляция становится более сложной. Цикл может быть бесконечным или ограничен по времени, тогда может возникнуть состояние, из которого перейти к следующему невозможно, так как функции примут необходимые значения только через некоторый момент времени, а в данный момент времени ни одно из охраняющих условий не выполняется. Требуется вычислить ближайшую конечную временную точку, в которой хотя бы одно из охраняющих условий будет истинно. Если такую точку найти не получается, симулятор останавливается и информирует пользователя о возникшей проблеме. После вычисления ближайшей точки определяются значения всех условий, включая условие выхода из цикла, и принимается решение о дальнейшем выполнении инструкций. Если в вычисленный момент времени выполняется более одного условия, то охраняемые конструкции обрабатываются в параллельном режиме. После выполнения витка цикла изменяется значение функции времени, и процесс нахождения ближайшего момента времени повторяется. В случае нулевых задержек пользователю выдается предупредительное сообщение, так как возможно зацикливание. Приведем пример параллельного блока в цикле:

[ X : = 0; у := 0\ т. \ := 0; ]

иМ1е (СТ < 16) с!о

[ if (СТ >= 12) -Ыгеп х : = X + 1

(СТ >= 8) "Ышп У = = У + 1

х! (СТ >= 17) гЬеп г : = г + 1

]

В нем третье охраняемое замещение вообще ни разу не выполнится. Остальные будут выполняться до тех пор, пока значение функции времени не достигнет значения 16. Соответственно первое замещение будет выполняться на интервале (12, 16), а второе -на интервале (8, 16). Причем количество замещений напрямую будет зависеть от заданных временных задержек на операцию присваивания, сложения и чтения значения

переменной. В зависимости от значения функции времени до входа в цикл произойдет переход к моменту времени СТ = 8.

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

Автор благодарит доцента кафедры информатики СПбГУ И. П. Соловьева за помощь в проверке текста и ценные советы.

Summary

Vasilyev Р. К. ЁхЬепс1п^ the Gurevitch abstract state machine language with rational time.

An extension of the Gurevitch abstract state machine language is proposed. Syntax and two variants of semantics are described. The semantics with delays and without delays between updates are considered. Time constraints are defined by linear inequalities. A simulator is implemented which will be used for on-the-fly verification of formulas in FOTL language.

Литература

1. Gurevich Y. Evolving algebras 1993: Lipari Guide // Specification and Validation Methods / Ed. by B. Egon. Oxford: Oxford University Press, 1995. P. 9-36.

2. Gurevich Y. Sequential abstract-state machines capturc sequential algorithms // ACM Transactions on Computational Logic. 2000. July. Vol. 1, N 1. P. 77-111.

3. University of Michigan, ASM homepage, http://www.eecs.umich.edu/gasm/.

4. Borger E., Stark R. Abstract State Machines: A Method for High-Level System Design and Analysis. Berlin: Springer-Verlag, 2003. 440 p.

5. Stark R. Java and the Java Virtual Machine: Definition, Verification, Validation. Berlin: Springer-Verlag, 2001. 392 p.

6. A high-level modular definition of the semantics of C# / E. Borger, N. G. Fruja, V. Gervasi, R. F. Stark // Theor. Comput. Sci. 2005. Vol. 336, N 2-3. P. 235-284.

7. Glasser U. The formal semantics of SDL-2000: Status and perspectives // Computer Networks (Amsterdam, Netherlands, 1999). 2003. June. Vol. 42, N 3. P. 343-358.

8. Gurevich Y. The railroad crossing problem: An experiment with instantaneous actions and immediate reactions 11 Proc. of CSL'95 (Computer Science Logic). Vol. 1092 of LNCS. 1996. P. 266-290.

9. Deauquier D. A first order logic for specification of timed algorithms: Basic properties and a decidable class // Annals of Pure and Applied Logic. 2002. Vol. 113, N 1-3. P. 13-52.

10. Cohen J. On verification of refinements of timed distributed algorithms // Proc. of the Intern. Workshop on Abstract State Machines (ASM'2000), March 20-24, 2000. Switzerland, Monte Verita, Ticino. Lect. Notes in Comput. Sci., vol. 1912 / Eds.: Y. Gurevich, P. Kutter, M. Odersky, L. Thiele. 2000. P. 34-49.

11. Graf S. Time in abstract state machines // Fundamentae Informatice. Special issue on ASM 2005. Paris, 2006. P. 217-232.

12. Foundations of Software Engineering - Microsoft Research, Microsoft Corporation. AsmL: The Abstract State Machine Language, 2002. October, http://research.microsoft.com/fse/asinl/.

13. Ouimet M. Timed abstract state machines: An executable specification language for reactive real-time systems: Tech. Rep. Cambridge: Massachusetts Institute of Technology, 2006. 11 p.

14. Beauquier D. Periodicity based decidable classes in a first order timed logic // ANNALSPAL: Annals of Pure and Applied Logic. 2006. Vol. 139. P. 43-73.

15. Beauquier D. Automatic parametric verification of a root contention protocol based on abstract state machines and first order timed logic // Tools and Algorithms for the Construction and Analysis of Systems: 10th Intern. Conference, TACAS 2004. Barcelona, Spain, March 29-April 2, 2004. Lect. Notes in Comput. Sci., vol. 2988 / Eds.: K. Jensen, A. Podelski. Heidelberg: Springer-Verlag, 2004. P. 372-387.

16. Borger E., Gurevich Y. The bakery algorithm: yet another specification and verification // Specification and Validation Methods / Ed. by E. Borger. Oxford: Oxford University Press, 1995. P. 231-243.

17. Weispfenning V. Mixed real-integer linear quantifier elimination // Proc. of the 1999 Intern. Symp. on Symbolic and Algebraic Computations (ISSAC'99). New York: ACM Press, 1999. P. 129-136.

Статья рекомендована к печати членом редколлегии проф. Л. А. Петросяном.

Статья принята к печати 24 мая 2007 г.

i Надоели баннеры? Вы всегда можете отключить рекламу.