Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NikitchenkoNEWNEW.doc
Скачиваний:
26
Добавлен:
08.11.2019
Размер:
2.99 Mб
Скачать

1.3.4. Програмні алгебри

Побудовані композиції дозволяють стверджувати, що отримано алгебру функцій (програмну алгебру)

A_Prog =<FNA, FNB, FNAB, FA, FB, FS; Sn, ASx, , IF, WH, x, id>.

Функції іменування x та накладання  не включені до переліку операцій цієї алгебри, тому що вони представлені композицією присвоєння. Також не включаємо функції-константи , які мають специфічну природу. Разом із тим до переліку композицій включено функції (нуль-арні композиції) розіменування та тотожна функція. Це пояснюється тим, що вказані нуль-арні композиції мають не предметну (специфічну) природу, а логічну (загальнозначущу), що дозволяє розглядати їх саме як загальні композиції (нехай і нуль-арні), а не як специфічні функції. Втім, цей розподіл є досить умовним.

id

Рисунок 1.4. Алгебра функцій (програмна алгебра)

Наведена алгебра (рис. 1.4) в своїх основах містить багато «зайвих» функцій, які не можуть бути породжені в мові SIPL. Аналіз мови дозволяє стверджувати (цей факт буде доведено пізніше в теоремі 1.1), що функції, які задаються мовою SIPL, породжуються в алгебрі A_Prog з наступних базових функцій:

  • add, sub, mult FNA;

  • or, negFNB;

  • eq, grFNAB;

  • FA (nInt).

Підалгебру алгебри A_Prog, породжену наведеними базовими функціями, назвемо функціональною алгеброю мови SIPL і позначимо A_SIPL.

Зауважимо, що всі функції алгебри A_SIPL є однозначними (детермінованими) функціями. Це випливає з того, що всі базові функції є однозначними, а композиції зберігають цю властивість. Прохання до читача довести цю властивість самостійно.

Формули для обчислення композицій та функцій алгебри A_Prog подамо у наступній таблиці (тут fn-арна функція, fa, g1,…, gn – номінативні арифметичні функції, fb – номінативний предикат, fs, fs1, fs2 – біномінативні функції, st – стан, n – число).

Таблиця 1.5

Композиція

Формула обчислення

Ім’я формули

Суперпозиція

(Sn(f, g1,…, gn))( st)=f(g1(st),…, gn(st))

AF_S

Присвоєння

ASx (fa)(st)=st [xfa(st)]

AF_AS

Послідовне виконання

fs1fs2(st)=fs2(fs1(st))

AF_SEQ

Умовний оператор

AF_IF

Цикл

WH(fb,fs)(st)=stn, де

st0=st, st1=fs(st0), st2=fs(st1), …, stn=fs(stn-1), причому fb(st0)=true, fb(st1)=true,…,

fb(stn-1)=true, fb(stn)=false.

AF_WH

Функція розіменування

x(st)=st(x)

AF_DNM

Тотожна функція

id(st)=st

AF_ID

Зауваження 1.6. Наведені формули слід тлумачити з урахуванням частковості функцій. А саме, якщо значення однієї з функцій, що фігурує у формулі, не є визначеним, то і результат не буде визначеним. Так, для формули fs1fs2(st)=fs2(fs1(st)) вважаємо, що коли fs1(st) або fs2(fs1(st)) не визначені, то і результат не є визначеним.

Для роботи з частковими функціями використовують наступні позначення:

  • fs(st) – значення fs на st не визначене,

  • fs(st) – значення fs на st визначене,

  • fs(st)=r –значення fs на st визначене і дорівнює r.

З урахуванням частковості, формулу для послідовного виконання можна записати у наступному вигляді:

fs1fs2(st)=

Формула для умовного оператора буде мати вигляд

Інші формули можуть бути переписані аналогічним чином. Наведений вигляд формули зберігають і у випадку багатозначних (недетермінованих) функцій. Правда, тут такі функції розглядати не будемо.

Зазначимо, що наведені формули можна було б записувати із вживанням сильної рівності, яка задає невизначеність лівої частини при невизначеності правої.■

Побудована алгебра A_SIPL дозволяє тепер формалізувати семантику програм мови SIPL, задаючи їх функціональними виразами (семантичними термами) алгебри A_SIPL.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]