Научная статья на тему 'Об алгебраической модели компьютерной программы'

Об алгебраической модели компьютерной программы Текст научной статьи по специальности «Математика»

CC BY
129
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ДИНАМИЧЕСКИЕ СИСТЕМЫ / МОДЕЛИРОВАНИЕ / МАТЕМАТИЧЕСКАЯ МОДЕЛЬ ЯЗЫКА / УНИВЕРСАЛЬНАЯ АЛГЕБРА / КОНТЕКСТНО-СВОБОДНАЯ ГРАММАТИКА / ОПЕРАТОР ПРИСВАИВАНИЯ / ДОПУСТИМОЕ СОСТОЯНИЕ ПАМЯТИ / СЕМАНТИКА / DYNAMIC SYSTEMS / MODELING / MATHEMATICAL MODEL OF LANGUAGE / UNIVERSAL ALGEBRA / ASSIGNMENT OPERATOR / VALID MEMORY STATE / SEMANTICS / CONTEXT-FREE GRAMMAR

Аннотация научной статьи по математике, автор научной работы — Николаева Дарима Доржиевна, Ширапов Дашадондок Шагдарович

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

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

ON ALGEBRAIC MODELING OF COMPUTER PROGRAMS

The article considers functional grammar in terms of algorithmic algebras. As a result, we have identified the simplest invariant basis (name value pair), which can later serve as a unified basis for building more complex structures in computer memory when implementing declarations of complex objects in computer programs. It is obtained a lemma on commutativity of assignment operator transfer and valid state of program memory, which returns a value by the name of variable. The logical connection between the homomorphism of multibase data algebras and the homomorphism of valid memory states is established by the theorem of diagrams commutativity in Cartesian closed categories and expressed by an assignment operator. An example of computer modeling of classical dynamic system using functional grammars is presented as a system of ordinary differential equations with given initial conditions. To demonstrate the application of functional grammars we have used an algorithm that generates a solution to an ordinary differential equation.

Текст научной работы на тему «Об алгебраической модели компьютерной программы»

ИНФОРМАЦИОННЫЕ СИСТЕМЫ И ТЕХНОЛОГИИ

УДК 519.6

DOI: 10.18101/2304-5728-2019-2-28-43

ОБ АЛГЕБРАИЧЕСКОЙ МОДЕЛИ КОМПЬЮТЕРНОЙ ПРОГРАММЫ

© Николаева Дарима Доржиевна

научный сотрудник,

Бурятский государственный университет имени Доржи Банзарова Россия, 670000, г. Улан-Удэ, ул. Смолина, 24а E-mail: darisha89@yandex.ru

© Ширапов Дашадондок Шагдарович

доктор физико-математических наук, профессор, Бурятский государственный университет имени Доржи Банзарова Россия, 670000, г. Улан-Удэ, ул. Смолина, 24а E-mail: shir48@mail.ru

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

Для цитирования:

Николаева Д. Д., Ширапов Д. Ш. Об алгебраической модели компьютерной программы // Вестник Бурятского государственного университета. Математика, информатика. 2019. № 2. С. 28-43.

Введение

В настоящее время имеется большое количество работ по системному программированию, которые посвящены применению и развитию понятий формальных грамматик и многоосновных универсальных алгоритмических алгебр [2; 4]. Последние, в свою очередь, образуют теоретические основания системного программирования и глубоко проработаны. Многоосновные универсальные алгоритмические алгебры и формальные грамматики нашли широкое применение в практических работах по реализации приложений системного программирования и тем самым накопили достаточно большой практический опыт в разработках больших комплексов программ. Однако существует в задачах компьютерного моделирования динамических систем свободная ниша, где можно было бы применить логически мощный аппарат формальных грамматик, а также гибкий выразительный аппарат многоосновных универсальных алгоритмических алгебр. Любую компьютерную программу, которая порождает вычислительный процесс, можно рассматривать как пример динамической системы. Для этого в качестве пространства состояний динамической системы можно выбрать номер оператора программы и состояние памяти:

S = {(т, Ь) | т — номер оператора программы, Ь — состояние памяти} , где S — пространство состояний.

С другой стороны, существуют теоретические исследования по математическому моделированию динамических систем, где особенно выделяются работы по позитивно-образованным формулам [1] своей универсальностью при построении математических моделей динамических систем. В статье делается попытка поиска логических связей между алгоритмическими алгебрами, формальными грамматиками (основаниями компьютерных наук) и теорией динамических систем, основанной на позитивно образованных формулах.

1 Постановка задачи

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

а : х0 ®Х. Подмножество X0 является сигнатурой типов без именования. Содержательно отображение а соответствует операции разыменования или является операцией получения значений, используя имя переменной или константы. Тогда а 1 обратное отображение соответствует операции именования или операции адресования. Отметим, что семанти-

ку языка программирования, в частности языка, предназначенного для компьютерного моделирования динамических систем, можно представить в виде многоосновной алгебры А [2; 4], где любая программа х семантически представляет собой терм этой алгебры, построенной в соответствии с синтаксической грамматикой (или синтаксической алгеброй). При пошаговом исполнении на компьютере программы х происходит преобразование состояния памяти компьютера. Если обозначить состояние памяти через , то это преобразование означает переход из состояния в

новое состояние Ь., которое осуществляется при выполнении одного

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

2 Область допустимых состояний памяти

Точное определение понятия допустимого состояния памяти основывается на формальной грамматике G_1, которая является точной моделью памяти. Любое допустимое состояние памяти принадлежит множеству слов, которое порождается грамматикой G_1. Такой подход позволяет более точно определить границы между семантикой языка и прагматикой, последняя порождается программой х, которая решает какую-либо прикладную задачу. Для выяснения содержания отображений а и а 1, а также множества типов X0 приведем два примера: если в тексте программы объявлена переменная «цел г », то фактический тип переменной г равен « имя цел », так как в памяти компьютера зарезервировано место для хранения целого значения переменной, упомянутое место должно адресоваться (указываться) или именоваться. Схематически это можно изобразить в виде следующей диаграммы:

Рис. 1

На диаграмме (рис. 1) через V обозначено множество имен всех переменных, имеющих тип X = имя цел, где цел е X 0. Через обозначено множество всех значений, которые соответствуют именам из V , где сопоставление именам их значений представляется через отображение Ь : V ® Оа—х . Отображение Ь , с одной стороны, выражает операцию чтения значения по имени или возвращение значения Ь(г), с другой стороны, Ь описывает состояние памяти. В нашем случае отображение Ь

является сужением более общего отображения Ь е О, где V — множество всех имен объектов, имеющих значения во множестве всех возможных значений. Необходимо обратить внимание на нижние индексы V и

Оа-1 , где а - X при означает множество разыменованных значе-

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

непосредственным значением имени г . С этой точки зрения объект г по своим свойствам совпадает с константой, так как адрес аёг г неизменно связан с именем г . Отметим, что мы рассматриваем статическое объявление переменной г . При исполнении объявления записи «цел г » в некоторой программе происходит выделение места т по адресу аёг г для хранения динамического значения переменной г . Однако для указанного динамического значения переменной г генерируется условное имя г1. Значением г1 будет динамическое значение dz переменной г . Таким

образом, выделенное место т представляет собой пару (г1, dz). Статическое значение переменной г будет adr г . Для рис. 1 dz = 13 . Отметим,

что операция извлечения содержимого по адресу «adr г » возвращает нам пару, где именующую часть г1 вполне естественным образом можно отождествить с адресом «adr г ». Для этой пары (г1, <значение>), принадлежащей декартовому произведению ^ х О, отметим отображение

Ь : V ® , которое описывает состояние памяти. Здесь V — множе-

аХХ аХ

ство всех имен объектов, имеющих тип аХ , О — множество значений,

имеющих тип X . На диаграмме (рис. 1) операция а обозначает операцию

разыменования, а а 1 обозначает операцию именования, а0 = 1 является тождественным отображением.

Перейдем к рассмотрению объявлений «имя цел и» и «имя3 цел V». Для объектов и и v диаграммы представляются аналогичным образом, в связи с этим мы представим только основные обозначения, которые могут применяться на диаграмме без приведения рисунка. На самом верхнем

четвертом уровне переменная v принадлежит множеству V -з,, которое

a %

3

обозначает множество всех переменных уровня « имя % », где % — простейший тип без косвенного именования. Через Da-4% обозначено множество всех адресов, которые являются значениями переменных из множества Va-3%. Между множествами и Da-4% существует отображение-

вложение b : V-з ® Da-4%, которое отождествляет имя переменной с его значением. В функциональном программировании аналогом b служит отображение-вложение * : Va-3% ® Da-4% . Отметим, что свойство тройки

(b,Va-3%, Da-4%) для переменной v во многом совпадает со свойством

тройки (b, V , D%), относящейся к константе. Однако отличие заключается в том, что исполнение отображения b для константы происходит при статической фазе работы компилятора, тогда как для тройки

(b, Va-n%, Da-n-i) при n > 0 исполнение функции b происходит в процессе исполнения программы моделирования (динамическая фаза работы программы). Через v обозначено имя переменной, где v е V-з. . В функцио-

a %

нальной грамматике переменной v соответствует нетерминальный сим-

*

вол X, из которого порождается множество имен {v }, то есть X ^ v . Через adrv1 обозначено значение переменной v на рассматриваемом уровне, мы получаем тождественную пару (v, adr v1), где v — имя и adrv1 = b(v) — его значение. С точки зрения функциональных грамматик *(v) =< адрес v > 1 ° adrv1 есть адрес выделенного для переменной v места. Содержимое выделенного места должно содержать пару

(v1, adrv1), где v1 — новое имя переменной v и v1 е V_2X на уровне ни-

a %

же рассматриваемого, adrv1 есть значение переменной v1. Таким обра-

n V

зом, исходя из концепции косвенного именования «имя тип X », можно построить многоуровневые алгебраические модели прикладных задач, что существенно облегчает проектирование программных комплексов. На верхнем уровне происходит разработка математической модели проектируемого комплекса программ в виде многоосновной алгебраической системы, которая освобождена от рассмотрения мелких деталей задачи. Такой подход значительно облегчает логическое представление прикладной задачи. Связь между смежными уровнями математических моделей мож-

но выразить через структурно согласованные грамматики видов и памяти, в терминах которых можно описать логическую модель проектируемой программы. Приведем пример структурно согласованных грамматик видов G1, с(1), которые логически связывают алгебраические модели смежных уровней [3]:

Грамматика ^ = (Ут 1, VN1, Р1, ПРАВИД) - структура видов. ПРАВИД : : = ВИД | ничто ; ВИД : := АВИД | АБСТР ВИД ; АВИД : := лог | цел ; АБСТР : := £ | АБСТР имя ; Упорядоченность на М1 : £1(1) = ( имя ВИД ) ВИД . Пара структурно согласованных нетерминалов АБСТР из грамматики G1 и ЦЕПЬ из грамматики G2(1) моделируют концепцию косвенного именования. ЦЕПЬ является конкретизацией АБСТР. G21) Грамматика

= V2, VN2, Р2, ПРАЗНАЧ) - структура значений. ПРАЗНАЧ : := ЗНАЧ | неопр ; ЗНАЧ : := АЗНАЧ | ЦЕПЬ АЗНАЧ ;

АЗНАЧ : := ЛОГ | ЦЕЛ ; ЦЕПЬ : : = £ | ЦЕПЬ ХН # ХН * ; ЦЕЛ : := 111111 | неопр ; ЛОГ : := истина | ложь | неопр ; Н : := £ | Ц | ЦЦ | ЦЕЛ ; Ц : := 0 | 1 | 2 . . . | 9 . Упорядоченность на М_;:

£(2) = ( конт г, знач х ) знач : (М# ХН*Р М(1) ю ХН ) Р.

Из представленных грамматик видно, что существует квазиизоморфизм, то есть некоторое подобие изоморфизма, а именно:

ПРАВИД ® ПРАЗНАЧ ; ВИД ® ЗНАЧ; АВИД ® АЗНАЧ; АБСТР ® ЦЕПЬ; имя ® Н # ХН * ;

лог ® ЛОГ : : = истина | ложь | неопр ; цел ® ЦЕЛ : : = ЦЦЦ .

Из вышесказанного видно, что грамматика G21) является продолжением грамматики G1 : терминальные символы грамматики G1 находят дальнейшую конкретизацию. Грамматику G21) назовем продолжением грамматики G1 по терминалам имя, лог, цел.

Из приведенного примера структурно согласованных грамматик G— , G1 и G2 следует идея выразительного построения логической связи между алгебраическими системами смежных уровней. Под структурной согласованностью понимается логические и смысловые связи между нетерминальными символами и терминальными строками, которые задают математические структуры семантико-прагматических отображений

33

(1) (2) 1 2 {Ф. },{Ф.. },{§^/}. Характерным частичным свойством межуровне-

вой структурной согласованности является Ук п Ум п Ум ф 0, Ут_1 п Ут 1 п 2 ф 0 . Где У^ р Ук 2 — множества нетерминальных символов и Ут_15 Ут Ут множества терминальных символов грамматик G_1, G1, G2. Следующим важным достижением формального описания структуры типов, значений и состояния памяти (грамматика G ) является

точное формальное описание множества допустимых состояний памяти. Множество слов, порождаемых этими грамматиками, в точности описывает структуру приведенных диаграмм.

Перейдем к рассмотрению операции присваивания v :=u . Тип объекта ы равен а X , он задает контекстные условия для определения значения переменной V. Контекстный тип £ переменной V должен быть равным £ = а 3X , то есть иметь вид имя а 2 X . Формула уа!( (^, Ь) для вычисления значения V при операции присваивания должна быть следующей:

Дадим определение терма:

1. Любой символ переменной типа X или символ нульарной операции типа (X ) есть терм типа X .

2. Если со есть символ операции со схемой (X1,...,XИ X), а (1,..., термы типов Л1,...,ЛИ соответственно, то ...,t) есть терм типа X.

3. Других термов нет.

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

Если t (V ...,vп) есть терм из переменных V ...,vn е У, а

Ь ^),..., Ь (у ) е О значения этих переменных соответственно, где Ь является допустимым состоянием памяти из множества допустимых со-

ча1 (V,Ь) = Ь (V),

пг

где т вычисляется из соотношения

^ т _ 1 = 1; т = 2. val (V, Ь) = Ьт (V) = Ь2 (V) = ас!г v2.

стояний В, то определено значение терма г, которое равно выражению г(Ь (у ),..., Ь (уп )). То есть имеем равенство:

Отметим, что в некоторых случаях могут оказаться неопределенными некоторые значения Ь (у ) и, несмотря на это, можно будет вычислить

значение терма г(Ь (у1),...,Ь (у )) (например, случай с термом «если-то-иначе»). Новое состояние Ь (г(у,...,уп)) = г(Ь (у1),...,Ь (уп)) будет допустимым состоянием памяти, если исходные значения принадлежали множеству допустимых состояний.

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

Для любого допустимого состояния памяти Ь терма г , имеющего тип

г, определим функцию уа!( (г,г, Ь) — значение терма г относительно типа £ при состоянии памяти Ь . Для этого необходимо рассмотреть два случая:

1. Если г = у е V) и существует т > 0 , такое, что ат 1 о г = £ , то уа1£ (г,г,Ь) = Ьт (г), где т — минимально.

2. Пусть г = а(г ...,гп), операция <а имеет тип (£,...,£„,г) и существует т > 0, такое, что атг =£ . Тогда уа1£ (г,г, Ь) = Ьт (а^^..., dm)), где d. = уа1£ (г., Ь) (/ = 1,п), т берется минимальным.

Пусть у1,...,Уп — переменные, г ...,гп е Т(О) — термы, V — множество всех переменных, Т(О) — множество всех термов сигнатуры О, В — множество всех допустимых состояний памяти и у = (у1 := г ...,Уп := гп) является операцией присваивания. Естественным

является рассмотрение вопроса о преобразовании операцией присваивания у множества допустимых состояний памяти В , то есть у : В ® В, и вопроса о преобразовании термов у : Т(О) ® Т (О). Приступим к рассмотрению преобразования у : В ® В . Если Ь е В, то, обозначив через Ь преобразованное состояние памяти у (Ь), мы получим следующие соотношения для Ь1

Ь (г (у1,..., уп)) = г (Ь (у),..., Ь у)).

Ь(г.), если у=у1, ¡е1,п, Ь(у), если у, 7е1,п.

(1)

Если подробно рассмотреть соотношение (1), то

Ь .(V,) = (у ) = Ь(1г) = Ь(с, ()) = с (Ь( Ь( )), где t . = с() и $!,...,е т(О).

Пример 1. Пусть состояние памяти Ь равно Ь = ((^,5); 6); ^,7)^,13); (^,11)) и у = V := V * Vз; V4 := 9). Вычислим новое состояние

Ь = у(Ь) = ((Vl,5); (V2,35); (Vз,7); ^,9); (V5,11)). При переходе состояния памяти из Ь в новое состояние Ь1 = у(Ь) изменяются значения переменных v2 (с 6 на 35) и v4 (с 13 на 9). Остальные переменные V v3, v5 не изменяют своего значения.

Каждый оператор присваивания у = (v1 := tl,v2 := t2) определяет преобразование термов т(О), то есть у : т(О) ® т (О), если положить Ц, если t=v,, ,=1,п, у^) = ^ V, если t^Фv/, ,=1,п, (2)

с( у ( sl),..., у (-т Л если t = с(sl,..., Ят X ^...Ат ет (О)

Из формул (1) и (2) вытекает следующая лемма.

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

Лемма 1. Справедливо следующее соотношение (у(Ь))^) = Ь(у(V)).

Пример 2. Пусть у = (V := t1,v2 := t2,v3 := t3), t = а(я1,-2), где - = V

и я2 = V, сеО , t1, t2, t3, t, Я1, я2 е т (О).

Вычислим у^) = у(а(я1,я2)) = у(а^,V)) = а(у(^),у(V)) = V) .

Таким образом, V) е т (О).

Пример 3. Пусть у = (^ := t1, v2 := t2), t = с1(я1,с2(я1, -3)), где Я = v1, -2 = V -3 = V, t1, t t все являются термами, принадлежащими множеству т(О). Вычислим у(^) и убедимся, что он принадлежит т(О).

у^) = у(с1(Я1,с2(^ «3)) =с1(у(у(а2(Я2, ^3))) =с1(у(Vl), с2(у(у(^3))) =

с (^, а (у^2), у(V))) = с (^, а ^2, V)), у(t) = а 1 (tl, а2 (t2, V)) е т(О).

Пример 4. Пусть у = (^ := v2 := t2), t = с1(v1,с2(v2,V,-)) е т(О), где - е т (О). Вычислим

у^) = у (а (vl,ю2 V, V, -))) = а (у(^), а 2 (у (V2), у (V), у (-))) =

С у (-))),

которое также принадлежит т(О).

Рассмотрим и докажем теорему, которая является полезной при разработке структур данных при проектировании комплексов программ. Если имеется типизированный базис (и(V, О, П, X), У(V, О, П, X)) для схем программ над типизированной памятью, то можно рассматривать стандартные схемы программ над памятью и стандартные интерпретации. Поясним обозначения: V — множество переменных, О — сигнатура операций, П — сигнатура предикатов, X — типы или сорта несущих множеств многоосновной алгебры, и(V, О, П, X) есть алгебра условий, а

У(V, О, П, X) есть алгебра операторов. Допустим, В = и В и

ХеЯ х

В1 = и В1Х — две однотипные (О, П, X) -алгебры данных с основами

несущих множеств (В^ )ге= и (В )ге= . Тогда гомоморфизмом у': В ® В1

называется семейство у = (у( )|е= отображений, такое, что для любых

X еX, у( : ® В1? для любой операции а еО , который имеет схему

(Х1, . ,Хп,Х), и любого предиката л со схемой (Х1,...,Хп) выполняются следующие соотношения:

Ух (а (dx,..., dn)) = а у (dl),..., у^ (dn)), ^й^..^<) =1» л(уй (dl),...,ухп(dn)).

Для строгого гомоморфизма выполняется необходимое и достаточное условие, а для обычного гомоморфизма выполняется только условие необходимости. Пусть В и В1 — две многоосновные однотипные О — П -

алгебры данных, В = В и В1 = В1 — непустые множества допустимых состояний памяти. Тогда гомоморфизм у : В ® В порождает отображение у': В ® В1, определенное равенством (у'(Ь))(у) = ух (Ь(у)) для любого у е Vx. В связи с этим сформулируем и докажем теорему.

Теорема 1. Для многоосновных О - П - X -алгебр данных

В = (В х) и В1 = (В коммутативна следующая диаграмма (рис. 2)

из декартово-замкнутой категории и справедливо следующее соотноше -ние

(у'(Ь))( у (у)) = у(( у (Ь))(у)).

D' y,V-

ev

D.

vxJ_

л; хк-

х у

Рис. 2

D. xV

Доказательство. Разъясним обозначения:

I, : V ® V

ID : Dj ® Dj — тождественные отображения, j х IV, g'х IV и х j — декартовые произведения двух отображений. Пусть (b, v) е DV х V . Тогда суперпозиция отображений j х IV, ev и gx, начинающая с элемента (b, v), дает результат g x ((j(b)(v)). Опираясь на лемму 1 и на определение отображения g', получаем gx ((j(b)(v)) = gx (b( j(v))) = (g'(b))( j(v)) е D1x. Суперпозиция отображений g' х IV , Id х j и ev, начинающаяся с элемента (b, v) е DV х V , дает результат (g'(b))(j(v)) е D1x. Что и требовалось доказать.

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

Пусть задана динамическая система, где заданными являются: f, Xq , .

X = f (x, t); x(to) = Xq; f (Xq, to) = fo . (3)

Для моделирования данной классической динамической системы рассмотрим общеизвестные конечно-разностные приближения для уравнения (3).

x(tj) -x(to) = f (x(to),to)-At;

x(t,+j) = x(tj) + f (x(t,), t,) -At; (4)

x(ti+j) - x(t,) = f (x(t,),t,) - At, i = 0,1,...

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

Из (4) получим программу, которая моделирует динамическую систему.

tQ - starting moment; xQ - initial state;

и

x = preceding state; xn - next state; t - current tine; tn - finish time.

1. Program DinSystem;

2. var xn, x, x, dt, x0, t0, t: real; n: integer;

3. begin

4. read (xft t0, deltat, tn);

5. t:=to; x:=Xo; Xn:=Xo

6. while t<tn do begin

7. xn : = x + f(x,t)*deltat;

8. t := t+deltat;

9. writeln (" t= ", t, " xn= ", xn );

10. x := xn

11. end

12. end.

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

Вычислительный процесс, моделирующий динамическую систему (3),

начинается со строки 5 программы DimSystem: t = to, xn = xo. Функция

цикла Ф10 (строка 6 - строка 11) включена в процесс моделирования Ф10 (<сравнение>, <операторы>) или Ф10 (L,Q), где L - это сравнение, а Q -операторы.

<сравнение> : := " t < tn" t tn Ф16 <операторы> : :=

" xn := x + deltat *f(x,t) Ф7 t := t + deltat Ф7

вывод (t, xn) Ф12

x := xn " Ф7

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

t Ф16 х ёвНм х t / * + хп Ф7

J ^__— ;

L^ Y (5)

t deltat + t Ф7 t xn Ф12 xn x Ф7 Ф10

V_.._) \_.._)

Y Y

вывод x := xn while

Приведенную запись следует читать слева направо, так как это постфиксная запись функции. При этом переменные t, t0, x, deltat, t — одноместные функции, где аргументом является имя переменной, а результатом будет значение переменной. Ф16 — базисная функция <сравнение>, результат возвращает логический true или false. Если обозначить логическое выражение t tn Ф16 (<сравнение>) через L, а остальную часть последовательности (5) — через Q (без Ф10), то имеем терм L Q Ф10. Функция Ф10 представляет собой цикл, в нотации алгоритмических алгебр записывается в виде {Q} и называется L-итерацией. С точки зрения алгоритмических алгебр L Q Ф10 = {Q} L-итерация дает в качестве результата оператор R, такой, что для любого состояния памяти b, bR принимается равным первому из состояний ряда b, bQ, (bQ)Q = bQ2, bQ3, ... , для которого истинно условие bQmL. Если же такого состояния в указанном ряду не окажется, то результат применения оператора R к состоянию b считается неопределенным. Рассмотрим терм L Q Ф10 с точки зрения функциональных грамматик. Для этого необходимо привести из синтаксиса языка программирования две нотации:

1. <операторы> : := <операторы> <оператор> Ф4

2. <цикл> : := пока <сравнение> выполнить <операторы > конец Ф10

Из синтаксиса видно, что у функции цикла Ф10 два аргумента: <сравнение> обозначим через L и <операторы> обозначим через Q. Приведем алгоритм работы базисных функций Ф10:

Ф10 = (функ x, y) знач: (x, y) r1(x, x, y)

Г = ( знач x, функ y, z) знач: ( ( истина, y, z) f4(z, r (y, y, z)) | (ложь,

У,z,) e);

В алгоритм ri входит базисная функция Ф4, которая представляется в виде

Ф4 = ( знач x, y) знач: (ЗНАЧ, ЗНАЧ(1)) ЗНАЧ(1). Заметим, что аргументы x и y у функции Ф4 вызываются по значениям.

Сформулируем следующую теорему об эквивалентности операции L-итерации алгоритмических алгебр и базисной функции цикла Ф10.

Теорема 2. Результаты ¿-итерации ^} и терма L Q Ф10 совпадают. Доказательство. Пусть состояние памяти находится в Ь. Подставляем вместо аргументов х и у, L и Q соответственно в базисную функцию Ф10 и получим следущее: Ф10 (Ь, Q) = (Ь, Q) п(Ь, Ь, Q) ;

г,(Ь, Ь, Q) = ( ( ЬЬ = истина, Ь, Q) Ф4(ЬQ, г,(Ь, Ь, Q) ) | (ЬЬ = ложь, Ь, Q)

е), т

е означает, что память находится в состоянии ЬQm. Из рекурсии видно, что функция Ф10 порождает ряд Ь, ЬQ, (ЬQ)Q = ЬQ2, ЬQ3, ... . Указанный ряд обрывается на каком-то члене ряда, скажем, на номере = 0, 1, 2,... при условии ЬQmL= ложь, и дает в качестве результата состояние памяти ЬQm. Если т = ¥ , то функция Ф10 дает неопределенность (происходит зацикливание). Теорема доказана.

Замечание. Из теоремы видно, что моделирование динамической системы (3) является адекватной.

Введем обозначения: обыкновенное дифференциальное уравнение (ОДУ) обозначим через и0; множество конечно-разностных уравнений

(КРУ) через и^ ; множество алгоритмов на Паскале через Р ; множество

суперпозиций семантических функций через Р; гладкое решение ОДУ через Я ; множество ломаных кривых через Ь; обозначим через Т множество малых вещественных чисел. Итак, имеем шестер -

ку < и 0, и к, Р, Р, Я, Ь >. В данной шестерке множество ик определяется как и к = {и к [ Д ] | Д? е Т} , для каждого зафиксированного числа Д? имеем конкретное конечно-разностное уравнение ик [ Д?]. Также определя-ются в этой шестерке и другие множества: Р = {Р[Д?] | Д? е Т} — множество программ, где Р[д?] е Р ; Р = {Р[Д?] | Д? е Т} — множество суперпозиций функций, где Р[д?] е Р ; Ь = {Ь[Д?]| Д? е Т} — множество аппроксимирующихся ломаных к гладкому решению Я обыкновенно-дифференциального уравнения, где Ь[д?] е Ь . В данном случае величина д? не является параметром программы, а считается составной частью программы Р[д?], которая входит в тело программы Р[д?].

Целью всех построений < и0, ик, Р, Р, Я, Ь > и рассуждений является следующее: при д? ® 0 имеется фундаментальная сходимость последовательности Р[д?] ® Рк (Рк — конечная), где Рк порождает ломаную Ьк

(Ьк -конечная), такую, что для "е > 0 | Ь[д?г- ] — Ь[д?г-+1] | < е . В данном случае имеем практическую (прагматическую) цель, которая является построением конечной программы, дающей заданную точность.

Каждая конкретная программа ] принадлежит некоторому классу эквивалентных программ, каждый из которых может порождать одну и ту же ломаную L:\_vt]. Среди этих программ могут быть и «хорошие» программы, и «плохие». Вопрос выбора хорошей программы Рх из класса эквивалентности относится к задаче оптимизации программы ]. В данной работе этот вопрос не затрагивается.

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

Заключение

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

Литература

1. Интеллектное управление динамическими системами / С. Н. Васильев [и др.]. М.: Физико-математическая литература, 2000. 352 с.

2. Капитонова Ю. В., Летичевский А. А. Математическая теория проектирования вычислительных систем. М.: Наука, 1988. 296 с.

3. Николаева Д. Д., Ширапов Д. Ш., Антонов В. И. Об одном подходе к моделированию динамических систем // Вестник Бурятского государственного университета. Математика, информатика. 2018. № 2. С. 95-109.

4. Тузов В. А. Математическая модель языка. Л.: ЛГУ, 1984. 176 с.

ON ALGEBRAIC MODELING OF COMPUTER PROGRAMS

Darima D. Nikolaeva Researcher,

Dorzhi Banzarov Buryat State University 24a Smolina St., Ulan-Ude 670000, Russia E-mail: darisha89@yandex.ru

Dashadondok Sh. Shirapov Dr. Sci. (Phys. and Math.), Prof., Dorzhi Banzarov Buryat State University 24a Smolina St., Ulan-Ude 670000, Russia E-mail: shir48@mail.ru

The article considers functional grammar in terms of algorithmic algebras. As a result, we have identified the simplest invariant basis (name — value pair), which can later serve as a unified basis for building more complex structures in computer memory when implementing declarations of complex objects in computer programs. It is obtained a lemma on commutativity of assignment operator transfer and valid state of program memory, which returns a value by the name of variable.

The logical connection between the homomorphism of multibase data algebras and the homomorphism of valid memory states is established by the theorem of diagrams commutativity in Cartesian closed categories and expressed by an assignment operator. An example of computer modeling of classical dynamic system using functional grammars is presented as a system of ordinary differential equations with given initial conditions. To demonstrate the application of functional grammars we have used an algorithm that generates a solution to an ordinary differential equation.

Keywords: dynamic systems; modeling; mathematical model of language; universal algebra, context-free grammar; assignment operator; valid memory state; semantics.

References

1. Vasilyev S. N., Zherlov A. K., Fedosov E. A., Fedunov B. E. Intellektnoe uprav-lenie dinamicheskimi sistemami [Intellectual Control of Dynamic Systems]. Moscow: Fiziko-matematicheskaya literatura Publ., 2000. 352 p.

2. Kapitonova Yu. V., Letichevskii A. A. Matematicheskaya teoriya proektiro-vaniya vychislitelnykh sistem [Mathematical Theory of Computer Systems Design]. Moscow: Nauka Publ., 1988. 296 p.

3. Nikolaeva D. D., Shirapov D. Sh., Antonov V. I. Ob odnom podkhode k modeli-rovaniyu dinamicheskikh system [On One Approach to Modeling Dynamic Systems]. Vestnik Buryatskogo gosudarstvennogo universiteta. Matematika, informatika. 2018. No. 2. Pp. 95-109.

4. Tuzov V. A. Matematicheskaya model yazyka [A Mathematical Model of Language]. Leningrad: Leningrad State University Publ., 1984. 176 p.

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