1.3.2 Функції
B мові SIPL можна вирізнити два види функцій: 1) n-арні функції на базових типах даних, та 2) функції над станами змінних. Другий вид функцій будемо називати номінативними функціями. Назва пояснюється тим, що вони задані на наборах іменованих даних (латинське nomen – ім’я).
Визначимо тепер наступні класи функцій, які будуть задіяні при визначенні семантики мови SIPL:
1. n-арні операції над базовими типами:
• FNA=Intn → Int – n-арні арифметичні функції (операції),
• FNB=Booln → Bool – n-арні бульові функції (операції),
• FNAB=Intn → Bool – n-арні функції (операції) порівняння.
2. Функції над станами змінних
• FA=State → Int – номінативні арифметичні функції,
• FB=State → Bool – номінативні предикати,
• FS=State → State – біномінативні функції –перетворювачі (трансформатори) станів.
Для операцій мови SIPL зазвичай n=2, а для бульової операції заперечення n=1.
1.3.3 Композиції
Нагадаємо, що композиції формалізують методи побудови програм. Аналіз мови SIPL дає підстави говорити про те, що будуть вживатися композиції різних типів, а саме:
• композиції, які пов’язані з номінативними функціями та предикатами,
• композиції, пов’язані з біномінативними функціями.
Перший клас композицій використовується для побудови семантики арифметичних виразів та умов, другий – операторів.
Цей клас композицій складається з композицій суперпозиції в n-арні функції, які задані на різних основах (класах функцій):
• суперпозиція номінативних арифметичних функцій в n-арну арифметичну функцію має тип Sn: FNA×FAn→FA,
• суперпозиція номінативних арифметичних функцій в n-арну фунцію порівняння має тип Sn: FNAB×FAn→FB,
• суперпозиція номінативних предикатів в n-арну бульову фунцію має тип Sn: FNB×FBn→FB.
Суперпозиція задається формулою (Sn(f, g1,…,gn ))(st)=f(g1(st),…,gn(st)), де f – n-арна функція, g1,…,gn – номінативні функції відповідного типу.
1.3.4 Програмні алгебри
Побудовані композиції дозволяють стверджувати, що отримано алгебру функцій (програмну алгебру) A_Prog =<FNA, FNB, FNAB, FA, FB, FS; Sn, ASx, •, IF, WH, x⇒, id >.
Функції, які задаються мовою SIPL, породжуються в алгебрі A_Prog з наступних базових функцій:
• add, sub, mult ∈FNA,
• or, neg ∈FNB,
• eq, gr ∈FNAB,
• n ∈FA (n∈Int).
Підалгебру алгебри A_Prog, породжену наведеними базовими функціями, назвемо функціональною алгеброю мови SIPL і позначимо A_SIPL.
Формули для обчислення композицій та функцій алгебри A_Prog подамо у наступній таблиці (тут f – nарна функція, fa, g1,…, gn – номінативні арифметичні функції, fb – номінативний предикат, fs, fs1, fs2 – біномінативні функції, st – стан, n – число).
1.3.5 Визначення семантичних термів
Для опису (дескрипції) функцій, які задаються програмами мови SIPL, можуть використовуватись функціональні вирази алгебри A_SIPL, які називаються термами цієї алгебри. Такі класи термів будуються індуктивно, аналогічно класам синтаксичних категорій.
Терми програмної алгебри будемо також називати семантичними термами.
