О технологиях построения и обработки математических моделей программ

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

Full description

Saved in:
Bibliographic Details
Date:2007
Main Author: Львов, С.М.
Format: Article
Language:Russian
Published: Інститут програмних систем, журнал "Проблеми програмування" 2007
Subjects:
Online Access:https://nasplib.isofts.kiev.ua/handle/123456789/299
Tags: Add Tag
No Tags, Be the first to tag this record!
Journal Title:Digital Library of Periodicals of National Academy of Sciences of Ukraine
Cite this:О технологиях построения и обработки математических моделей программ / С.М. Львов // Пробл. програмув. — 2007. — N 3. — С. 41-48. — Библиогр.: 6 назв. — рус.

Institution

Digital Library of Periodicals of National Academy of Sciences of Ukraine
_version_ 1859702086965395456
author Львов, С.М.
author_facet Львов, С.М.
citation_txt О технологиях построения и обработки математических моделей программ / С.М. Львов // Пробл. програмув. — 2007. — N 3. — С. 41-48. — Библиогр.: 6 назв. — рус.
collection DSpace DC
description Показаны проблемы, связанные с построением математических моделей программ, предназначенных для использования в системах автоматизации решения задач анализа и преобразования программ. В качестве такой системы рассмотрена система автоматического поиска и доказательства инвариантных равенств в программах. Методы поиска программных инвариантов основаны на анализе свойств предметной области. Определена основная функциональность программного модуля Транслятор этой системы.
first_indexed 2025-12-01T01:38:59Z
format Article
fulltext Формальні методи програмування © С.М. Львов, 2007 ISSN 1727-4907. Проблеми програмування. 2007. № 3 41 УДК 51.681.3 С.М. Львов О ТЕХНОЛОГИЯХ ПОСТРОЕНИЯ И ОБРАБОТКИ МАТЕМАТИ- ЧЕСКИХ МОДЕЛЕЙ ПРОГРАММ В работе рассматриваются проблемы, связанные с построением математических моделей программ, предназначенных для использования в системах автоматизации решения задач анализа и преобразова- ния программ. В качестве такой системы рассматривается система автоматического поиска и доказа- тельства инвариантных равенств в программах. Методы поиска программных инвариантов основаны на анализе свойств предметной области. Определена основная функциональность программного модуля Транслятор этой системы. Введение В теоретических исследованиях, посвященных задачам анализа и преобра- зования программ, объект исследования, как правило, представлен математической моделью программы. При этом использу- ются либо графовые модели программ (пример: U-Y схема программы), либо ал- гебраические модели программ (пример: выражение в алгоритмической алгебре В.М.Глушкова). Программные системы, проектируемые для решения задач анализа и преобразования программ с целью про- ведения вычислительных экспериментов или для производственных целей, должны оперировать с исходными текстами про- грамм, написанных на одном из языков программирования высокого уровня. Та- ким образом, такие системы должны со- держать специальные программные моду- ли, осуществляющие трансляцию исходно- го текста программы в математическую модель. Во многих задачах преобразования и синтеза программ важной является также задача обратной трансляции – преобразо- вания математической модели в исходный код программы. С точки зрения теории программирования задачи трансляции исходный код программы �� математи- ческая модель программы не являются существенно важными, их решение предполагается полученным «по умолчанию». Однако, с точки зрения Soft- ware Engineering, т.е. проектных решений и технологий реализации соответствую- щих программных систем здесь есть про- блемы и темы для обсуждения. Основные из них: • выбор исходного языка про- граммирования и вычислительной плат- формы; • выбор математической модели (класса математических моделей); • методы и технологии транс- ляции; • функциональные требования к программному модулю; • выбор стратегии развития про- граммного модуля. В работе описан наш первоначаль- ный опыт решения этих проблем, полу- ченный при проектировании и реализации программного модуля Транслятор системы автоматической генерации инвариантов программ. Достаточно полная постановка задачи, решаемой этой системой, дана в [4]. 1. Выбор исходного языка программи- рования и вычислительной платформы Как правило, в первой версии тако- го программного модуля, как Транслятор , решается та конкретная задача трансляции, которая необходима для постановки соот- ветствующего вычислительного экспери- мента. Поэтому выбор объектного языка программирования и вычислительной сре- ды играет подчиненную роль. Наш выбор языка Паскаль обусловлен: • близостью средств управления вычислениями языка к сигнатуре выбран- ной нами теоретической модели (формулы программной динамической логики); Формальні методи програмування 42 • наличием описания языка в БНФ-нотации, что позволило использовать технологии автоматизации процедур син- таксического анализа. Первая версия ПМ Транслятор реа- лизована в среде Win32, хотя нет практи- чески никаких препятствий для переноса ее в Linux/Unix. Требования к коммерческой версии значительно шире: ПМ Транслятор дол- жен поддерживать, кроме языков с паска- левским синтаксисом (Паскаль, Модула), еще и языки с С-подобным синтаксисом (С, С++, С#, Java). В некоторых экспериментах нужно иметь дело со специализированными язы- ками (например, с языком охраняемых ко- манд Дейкстры, языком Лисп и т.п.). По- этому коммерческий программный модуль Транслятор в идеале должен поддерживать описание синтаксиса исходного языка про- граммирования самим пользователем. 2. Выбор математической модели В теоретических работах, посвя- щенных задаче автоматической генерации инвариантов программ, на которые мы опираемся, используются как графовые модели программ [1, 2], так и алгебраиче- ские модели программ [3]. Общими понятиями для этих моде- лей являются: • понятие памяти X программы P как конечного множества (вектора) пе- ременных ( nxx ,...,1 ). ),...,( 1 nxxX = ; • понятие алгебры данных D как области определения всех переменных (памяти) программы. Алгебра данных оп- ределяет множество операций над данны- ми, допустимыми при программировании. Вообще, D следует рассматривать как многосортную алгебру. Мы полагаем, что одним из сортов D является Boolean. В наших задачах, кроме Boolean, определен еще только один сорт – сорт, над которым с помощью операторов присваивания оп- ределены вычисления; • понятие состояния d памяти программы P как вектора ),...,( 1 nddd = . Если память программы находится в состоянии d , это означает, что nn dxdx == ,...,11 . Таким образом, мы гово- рим о пространстве состояний памяти как о множестве XD ; • операторы присваивания в на- ших задачах интерпретируются как векторные. Оператор === :),...,(:( 11 nxXFxy ))(: XFn= преобразует пространство со- стояний памяти: y: XD � XD . Это озна- чает, что их компоненты выполняются од- новременно (параллельно). Множество операторов присваивания обозначим Y. Отметим, что в некоторых задачах анализа программ следует рассматривать последо- вательное выполнение компонент; • условия преобразуют терм F ал- гебры D в (True, False). Множество усло- вий обозначим U. 2.1. Определение U-Y – программы U-Y – схемой программы над памя- тью (U-Y – программой) называют иници- альный связный граф P с выделенным подмножеством заключительных вершин (состояний), дуги которого отмечены па- рами (условие-оператор). ).,(:,,,, * 0 YUESsESP →><= δδ Вершины графа Р – суть контроль- ные точки программы. Переход от одной точки к другой сопровождается выполне- нием оператора y, если u в текущем со- стоянии памяти программы принимает значение True (рис.1). Рис.1 Выполнение программы Р начина- ется в состоянии s0 , осуществляется неде- терминировано и заканчивается в одном из заключительных состояний S*. 2.2. Алгебраические модели программ Алгебраические модели императив- ных структурированных программ исполь- s 1 s 2 u, y Формальні методи програмування 43 зуют представление программ формулами специальной программной алгебры, опе- рациями которой являются операторы управления: последовательное выполне- ние, ветвление, повторение. Например: QP; – последовательное выполнение; QP u ∨ – ветвление с условием; }{P u – по- вторение с предусловием; u P}{ – повторе- ние с постусловием. Пример программы и ее алгебраической модели Рассмотрим в качестве примера программы и ее алгебраической модели расширенный алгоритм Евклида, который находит b = GCD(x, y) и такие числа c, d, что c*x + d*y = b. Для задач анализа программ из тек- ста программы нужно сформировать: ),,,,( dcbyxE = – множество вход- ных параметров программы; ),,,,,,,,,( yxvurqdcbaX = – память программы; ),( 21 uuU = – множество условий программы; )(1 bru >== ; )0(2 <>= ru ; ),,( 321 yyyY = – множество опера- торов присваивания программы; x);:r 0,:q 0,: v1,:u 1,:d 0,:c y,:b x,:a(1 == =======y 1)q:q b,-r:r(2 +===y ; ).b:r 0,:q d,: vc,:u d,*q-v:d c,*q-u:c r,:b b,:a(3 ==== =====y Алгебраическая модель программы теперь определяется формулой }}.{;{};{; 2321 121 yyyyP uuu = 2.3. Инварианты программ Поскольку программный модуль Транслятор в первой версии разрабатыва- ется для реализации алгоритмов поиска инвариантов некоторого класса программ, сформулируем понятие программного ин- варианта более точно. Procedure ExtGCD(x, y: Integer; var b, c, d: Integer); Var a, u, v, q, r : Integer; Begin a:=x; b:=y; c:=0; d:=1; u:=1; v:=0; q:=0; r:=x While r >= b do begin r:=r-b; q:=q+1 End; While r<>0 do begin a:=b; b:=r; c:=u-q*c; d:=v-q*d; u:=c; v:=d; q:=0; r:=b While r >= b do begin r:=r-b; q:=q+1 End End End; Формальні методи програмування 44 Алгеброй данных анализируемых программ является поле F. Если все пра- вые части операторов присваивания про- граммы – многочлены, т.е. не содержат операции деления на выражения, завися- щие от переменных, такую программу на- зывают интерпретированной над полино- миальным кольцом F[X]. Если же опера- ции деления на выражения, зависящие от переменных, в программе используются, такую программу называют интерпретиро- ванной над полем F(X). Многочлен і(X) ∈ F[X] называется полиномиальным инвариантом программы P, если □ {True} P {і(X)=0}. Это означает, что при любом на- чальном состоянии памяти a = (a1, …, an), если программа P завершает работу, для заключительного состояния b ( т.е. такого, что a{P}b) выполняется равенство i(b) = 0. Множество всех полиномиальных инвариантов программ, интерпретирован- ных либо над кольцом F[X], либо над по- лем F(X), образует радикальный идеал это- го кольца, который будем обозначать Ip. В дальнейшем будем рассматривать множе- ство всех элементов Ip , степени которых ограничены некоторой константой M. Множество таких многочленов образует векторное пространство, которое обозна- чается )( M pI . Понятно, что p M p II ⊂)( . Основные задачи исследования – построение и вычислительные экспери- менты с программной системой, которая доказывает инвариантность заданного по- линома і(X) ∈ F[X], а также строит базис векторного пространства )( M pI для задан- ного значения М. Отметим, что проблема построения базиса идеала Ip алгоритмически неразре- шима [3]. В доказательстве этого утвер- ждения существенную роль играет то, что в программах используются условия типа равенств и их отрицания. Поэтому условия программ приходится игнорировать, счи- тая, что программные циклы завершаются недетерминировано. Даже при этих огра- ничениях проблема построения базиса Ip остается открытой. Анализ методов решения задачи ав- томатического доказательства и автомати- ческой генерации программных инвариан- тов для программ, интерпретированных над конкретными предметными областями показал, что: 1) алгоритмы решения основных задач формулируются в терминах пред- метной области и, по существу, не зависят от типа модели программы. Графовая мо- дель должна использоваться только для управления вычислениями инвариантов; 2) построение графовой модели в виде U-Y схемы программы требует пре- образования операторов присваивания в охраняемые команды Дейкстры. Эти пре- образования несущественны для теории, но требуют дополнительных ресурсов для реализации; 3) алгебраическая модель про- граммы в гораздо большей степени адек- ватна исходному тексту программы, напи- санному на языке структурного програм- мирования. Ее легче и получать, и обраба- тывать. Разумеется, программы, напи- санные с нарушением правил структу- рирования, нуждаются в дополнительной обработке. Кроме того, это наиболее важно, ал- горитмы решения основных задач и общий алгоритм управления вычислениями (в наших задачах автоматического доказа- тельства и автоматической генерации про- граммных инвариантов) могут быть реали- зованы в средах алгебраического програм- мирования (APS, Obj). Выбор алгебраиче- ской модели программы приводит к тому, что весь основной модуль системы может быть реализован в среде алгебраического программирования, что существенно уско- ряет построение функционального прото- типа и окончательной версии системы. 3. Методы и технологии трансляции Различные классы задач анализа и преобразования программ используют раз- личные сведения об объектной программе. Так, классическая задача оптимизации па- мяти программы использует сведения о Формальні методи програмування 45 вхождении переменных в левые и правые части операторов присваивания объектной программы. Задача оптимизации програм- мы на основе анализа ее линейных участ- ков кода требует сведений обо всех опера- торах присваивания линейных участков. Задачи преобразований программ основа- ны на преобразованиях условных операто- ров управления. В задаче автоматической генерации инвариантов программ на осно- ве свойств предметной области, как уже отмечалось, условия в операторах управ- ления приходится игнорировать, так как их учет приводит к алгоритмической нераз- решимости. Эти обстоятельства приводят к сле- дующему решению: результат трансляции исходного кода программы в ее алгебраи- ческую модель должен, как минимум, со- держать следующие компоненты: список входных переменных программы; список всех переменных (память) программы; ал- гебраическое выражение, описывающее структуру управления программы с точно- стью до условий и операторов управления; словарь условий; словарь операторов при- сваивания. Все эти компоненты модели пред- ставлены в нашем примере. В работе [4], теорема 1, а, опреде- лена общая схема вычислений для реше- ния задачи доказательства инвариантности полинома и сформулированы основные задачи для реализации этой схемы. Реали- зация общей схемы вычислений требует: 1) процедуры элиминации всех усло- вий из формулы P. В нашем примере элиминацией условий выражение }}{;{};{; 2321 121 yyyyP uuu = редуцируется до }}};{};{; 2321 yyyyP = ; 2) представления всех операторов присваивания программы в векторном ви- де. В нашем примере все операторы из Y уже представлены в этом виде; 3) полиномиальной канонизации пра- вых частей всех операторов присваивания из Y. Это представление связано с выбором и фиксацией некоторого лексикографиче- ского упорядочения на множестве моно- мов и представления полиномов в виде суммы мономов. В нашем примере это уже сделано; 4) процедуры анализа формулы P про- граммы, заключающейся в выделении главной операции программы, рекурсив- ной обработке ее операндов и последую- щей обработке главной операции. Все эти процедуры легко реализу- ются в системах алгебраического про- граммирования, в частности, в системе APS-1 [5]. Алгоритмы решения основных за- дач основаны на построении базисов Гребнера полиномиальных идеалов. Таким образом, все идеалы, которые строятся в алгоритме, должны быть представлены своими базисами Гребнера. В дальнейшем мы будем обозначать тот факт, что идеал I представлен базисом Гребнера f1 , …, fk равенством I = ( f1 , …, fk )Gr. Базис Греб- нера идеала I будем обозначать Gr(I). Наш алгоритм должен решать сле- дующие задачи: 1. Для I = ( f1 , …, fk )Gr , J = ( g1 , … , gl )Gr найти I∩∩∩∩J = (h1 , . . . , hm)Gr. 2. Для I = ( f1 , …, fk )Gr , операто- ра присваивания X := F(X), найти J = (g1 , . . ., gl)Gr, т.е. найти Gr((f1(H(X)) , …, fk(H(X)))). 3. Для I = ( f1 , …, fk )Gr , J = ( g1 , …, gl )Gr распознать I ⊆⊆⊆⊆ J. Задачи 1 и 3 – классические задачи теории полиномиальных идеалов, решение которых в терминах базисов Гребнера хо- рошо известно [6]. Для решения задачи 2 можно воспользоваться общим алгорит- мом пополнения, который строит базис Гребнера по произвольному конечному множеству полиномов. Таким образом, в системе алгебраического программирова- ния должны быть реализованы вышеотме- ченные вычисления в базисах Гребнера. В нашем примере следует доказать инвариантность полинома c*x + d*y – b. Рассмотрим теперь вопросы, свя- занные с реализацией алгоритма вычисле- ния базиса векторного пространства )( M pI ([C. Львов], теорема 1, б). Там предлагает- ся подход, связанный с заданием общего Формальні методи програмування 46 вида инварианта в виде полиномиальной формы, т.е. многочлена «специального» вида с неопределенными коэффициентами. Например, можно определить общий вид искомых инвариантов как линейную ком- бинацию нескольких многочленов с неоп- ределенными коэффициентами: I(X) = a1*P1(X)+…+ak*Pk(X). Если, например, требуется искать линейные инварианты, следует положить P1= x1, . . . , Pn = xn, Pn+1 = 1. Можно, к примеру, искать все инва- рианты вида I(X) = a1*x1 2 +…+an * xn 2 и т.п. Таким образом, в проектируемой системе следует реализовать процедуру ввода и редактирования этой формы. Если в нашем примере ограничиться поиском инвариантов 2-ой степени, в качестве этой формы нужно выбрать многочлен 2-ой степени от всех переменных программы. В результате вычислений получаем базис )2( pI : i1 = c*x + d*y – b; i2 = u*x +v*y – a. Следовательно, если нас интересу- ют инварианты 2-ой степени в терминах входных параметров программы, в каче- стве этой формы нужно выбрать много- член 2-ой степени от параметров програм- мы, т.е множества ),,,,( dcbyxE = . В ре- зультате вычислений получаем i1 = c*x + d*y – b. Проведение вычислительных экспе- риментов такого рода с целью уточнения функциональности системы представляет определенный интерес. 4. Функциональные требования Исходя из вышеприведенных рас- смотрений, сформулируем общие функ- циональные требования к системе. Данные о задаче, обрабатывае- мой системой, содержат следующие компоненты: • исходный код программы; • математическую модель про- граммы; • результат вычислительного экс- перимента. Программная система, проектируе- мая для выполнения выше описанного вы- числительного эксперимента, должна под- держивать следующие функции: 1) хранение библиотеки исходных кодов, математических моделей программ, а также результатов вычислительного экс- перимента (функции Save, Load). Предпо- лагается, что исходный код программы синтаксически и семантически правель- ный, а также удовлетворяет тем ограниче- ниям, которые неизбежно возникают при постановке задачи теоретического иссле- дования. Эта библиотека используется как для тестирования программной системы, так и для проведения вычислительного эксперимента; 2) трансляция исходного кода в мате- матическую модель (функция Translate) c возвратом результатов трансляции; 3) редактирование исходного кода с клавиатуры (функция EditСоde) для обра- ботки исходного кода перед построением его математической модели; 4) редактирование математической модели с клавиатуры (функция EditModel) для обработки модели независимо от ис- ходного кода; 5) интерфейс к среде алгебраического программирования с передачей на испол- нение математической модели программы и возвратом результатов (функция Execute); 6) ввод дополнительной информации о задаче для вычислительного эксперимен- та и настройках математической модели (выбор компонентов математической мо- дели, передаваемых на исполнение функ- цией Execute). Пример: в задаче автомати- ческого доказательства инвариантности равенства такой дополнительной инфор- мацией является равенство, инвариант- ность которого доказывается; 7) стандартные сервисы ОС, такие, как возможность распечатки результатов и т.п. (рис. 2, 3). Формальні методи програмування 47 Рис. 2. Общий вид главного окна системы с примером исходного кода программы Рис. 3. Общий вид главного окна системы с примером математической модели Формальні методи програмування 48 Выводы Использование ПМ Транслятор и программной системы, основная функцио- нальность которой описана в работе, по- зволяет сократить время и минимизиро- вать подготовительную работу к проведе- ниям вычислительных экспериментов в задачах анализа и преобразования про- грамм. Выбор алгебраической модели про- граммы обусловлен возможностью ис- пользования систем алгебраического про- граммирования и, для многих классов за- дач, методов компьютерной алгебры. Раз- витие систем такого рода предполагает как расширение и универсализацию модуля Транслятор, так и развитие систем алгеб- раического программирования, которые являются главным инструментом исследо- вания. 1. Летичевский А.А. Об одном подходе к ана- лизу пограмм // Кибернетика. – 1979. – № 6. – С. 1 – 8. 2. Годлевский А.Б., Капитонова Ю.В., Кривой С.Л., Летичевский А.А. Итеративные мето- ды анализа программ // Кибернетика. – 1984. – № 2. – С. 23 – 28. 3. Львов М.С. Инвариантные равенства малых степеней в программах, опеределенных над полем // Кибернетика. – 1988. – № 1. – С. 108 – 110. 4. Львов С.М. О реализации вычислений в за- дачах анализа программ, определенных над векторными пространствами//Проблемы программирования. – 2004. – № 2 – 3. Спец. вып. С. 95 – 101. 5. Letichevsky А., Kapitonova J., Volkov V., Chu- gajenko A., Chomenko V. Algebraic program- ming system APS (user manual). Glushkov Institute of Cybernetics, National Acad. of Sci- ences of Ukraine. – Kiev. – 1998. – 50 р. 6. Бухбергер Б., Калме Ж., Калтофен Э. Ком- пьютерная алгебра: символьные и алгеб- раические вычисления: Пер. с англ. – М.: Мир, 1986. – 392 с. Получено 23.01.2007 Об авторе: Львов Сергей Михайлович, аспирант Института кибернетики им. В.М. Глушкова НАН Украины. Место работы автора: Институт кибернетики им. В.М. Глушкова НАН Украины, Киев 187, проспект Академика Глушкова, 40. Тел.: 424 7804, моб. +38(095)1751522, еmail: askserg@yandex.ru.
id nasplib_isofts_kiev_ua-123456789-299
institution Digital Library of Periodicals of National Academy of Sciences of Ukraine
issn 1727-4907
language Russian
last_indexed 2025-12-01T01:38:59Z
publishDate 2007
publisher Інститут програмних систем, журнал "Проблеми програмування"
record_format dspace
spelling Львов, С.М.
2008-02-22T19:29:53Z
2008-02-22T19:29:53Z
2007
О технологиях построения и обработки математических моделей программ / С.М. Львов // Пробл. програмув. — 2007. — N 3. — С. 41-48. — Библиогр.: 6 назв. — рус.
1727-4907
https://nasplib.isofts.kiev.ua/handle/123456789/299
Показаны проблемы, связанные с построением математических моделей программ, предназначенных для использования в системах автоматизации решения задач анализа и преобразования программ. В качестве такой системы рассмотрена система автоматического поиска и доказательства инвариантных равенств в программах. Методы поиска программных инвариантов основаны на анализе свойств предметной области. Определена основная функциональность программного модуля Транслятор этой системы.
ru
Інститут програмних систем, журнал "Проблеми програмування"
№3
С. 41-48
Формальні методи програмування
О технологиях построения и обработки математических моделей программ
Article
published earlier
spellingShingle О технологиях построения и обработки математических моделей программ
Львов, С.М.
Формальні методи програмування
title О технологиях построения и обработки математических моделей программ
title_full О технологиях построения и обработки математических моделей программ
title_fullStr О технологиях построения и обработки математических моделей программ
title_full_unstemmed О технологиях построения и обработки математических моделей программ
title_short О технологиях построения и обработки математических моделей программ
title_sort о технологиях построения и обработки математических моделей программ
topic Формальні методи програмування
topic_facet Формальні методи програмування
url https://nasplib.isofts.kiev.ua/handle/123456789/299
work_keys_str_mv AT lʹvovsm otehnologiâhpostroeniâiobrabotkimatematičeskihmodeleiprogramm