Логіка в інформатиці — це напрям досліджень та галузей знань, де логіка застосовується в інформатиці та штучному інтелекті. Використання логіки дуже ефективне в цих областях.
Умовно висловлюючись, можна сказати, що комп'ютер складається з матеріальної частини та математичного (програмного) забезпечення, або, використовуючи професійну лексику, з «заліза» і «взуття». І до того, і до іншого має саме безпосереднє відношення математична логіка, ні перше, ні друге без математичної логіки обійтися не можуть.
Область застосування
Включаються такі основні застосування:
- дослідження в логіці, викликані розвитком комп'ютерних наук. Наприклад, аплікативні обчислювальні системи, теорія обчислень і моделі обчислень;
- формальні методи і логіка міркування про поняття. Наприклад, семантична мережа, семантична павутина;
- булева логіка і алгебра для розробки апаратного забезпечення комп'ютерів;
- розв'язання задач і структурне програмування для розробки прикладних програм і створення складних систем програмного забезпечення
- доказове програмування — технологія розробки алгоритмів і програм із доказами правильності алгоритмів;
- фундаментальні поняття і уявлення для комп'ютерних наук, які є природною областю для формальної логіки. Наприклад, семантика мов програмування;
- логіка знань і припущень. Наприклад, штучний інтелект;
- мова Пролог і логічне програмування для створення баз знань та експертних систем і досліджень у сфері штучного інтелекту;
- логіка для опису просторового положення і переміщення;
- логіка в інформаційних технологіях. Наприклад, реляційна модель даних, реляційні СКБД, реляційна алгебра, реляційне числення;
- логіка обчислень з об'єктами. Наприклад, комбінаторна логіка, суперкомбінатори;
- логіка для компілювання програмного коду та його оптимізації. Наприклад, категоріальна абстрактна машина;
- логіка для еквівалентного перетворення об'єктів. Наприклад, лямбда-числення;
- перевиклад логіки і математики в термінах, зрозумілих фахівцям в комп'ютерних науках.
Цей список продовжує поповнюватися.
Ефективність у комп'ютерних науках
На відміну від природничих наук, комп'ютерні науки отримали великий стимул від широкої і безперервної взаємодії з логікою. Особливу роль у комп'ютерних науках відіграють доказові методи розробки алгоритмів і програм з доказами їхньої правильності.
Тестування програм може виявити наявність помилок у програмах, але не може гарантувати їх відсутність. Гарантії відсутності помилок в алгоритмах і програмах можуть дати тільки докази їх правильності. Алгоритм не містить помилок, якщо він дає правильні розв'язки для всіх допустимих даних.
Серйозною проблемою для комп'ютерних наук та інформатики є наявність помилок в алгоритмах і програмах, що публікуються в підручниках і навчальних посібниках, а також невміння викладачів і вчителів інформатики виявляти і виправляти помилки в алгоритмах і програмах, складених учнями.
Єдиний шлях для подолання цих проблем-це вивчення систематичних методів складання алгоритмів і програм з одночасним аналізом їх правильності в рамках доказового програмування з самого початку навчання основам алгоритмізації і програмування.
Складність для викладачів і програмістів полягає в тому, що вони повинні вміти писати не тільки алгоритми і програми, а й докази правильності своїх алгоритмів і програм. На жаль, зараз це не вміють робити ні математики, ні програмісти.
В результаті програмісти пишуть програми з великим числом помилок, які вони не можуть ні виявити, ні виправити. Масоване тестування програм на ЕОМ приносить програмістам безперечну користь, проте не дає гарантій повного позбавлення від помилок.
Практика застосування та вивчення доказових методів програмування показала, що ця технологія цілком доступна студентам математичних факультетів, яким цілком під силу написання доказів правильності алгоритмів, після перевірки та тестування програм на ЕОМ.
Найбільший ефект в освоєнні технологій доказового програмування спостерігається в олімпіадах з інформатики та програмування, де переможцями та призерами стають ті студенти, які освоїли техніку тестування програм на ЕОМ і складання алгоритмів і програм без помилок.
Математична логіка та розвиток інформатики
Інформатика як наука почала формуватися разом з створенням і бурхливим розвитком обчислювальної техніки. Її формування і визначення її предмета тривають дотепер. Інформатика — наука про зберігання, обробки і передачі інформації за допомогою комп'ютерів. Вона включає в себе великі розділи, які вивчають алгоритмічні, програмні та технічні засоби зберігання, обробки і передачі інформації. Математична логіка виявилася єдиною математичною наукою, методи якої стали найпотужнішими інструментами пізнання у всіх розділах інформатики. Тому скільки- серйозне вивчення інформатики немислимо без освоєння основ математичної логіки.
Щоб комп'ютер працював, він повинен бути оснащений програмним забезпеченням, тобто комплексом програм, що орієнтують комп'ютер на вирішення завдань того чи іншого класу. Слово «програма» має грецьке походження і означає «оголошення», «розпорядження». Уже саме поняття комп'ютерної програми, що передбачає чіткий алгоритмічний припис комп'ютера про порядок і характер дій, передбачає проникнення в програму, а також у процес її складання (в програмування) теорії алгоритмів.
Але при більш пильному розгляді процес проникнення логіки в програми і програмування виявляється значно більш глибоким і органічним. Не тільки один розділ теорії алгоритмів працює тут, але виключно дієвою виявляється саме істота математичної логіки — її мову, її аксіоматичні теорії, висновки і теореми в них, властивості цих теорій.
Фундаментальна основа програмування
Теорія алгоритмів та математична логіка — фундаментальна основа програмування. У 30-ті рр. XIX ст. англійський математик Чарлз Беббідж висловив вперше ідею обчислювальної машини. І тільки сто років по тому логіки розробили чотири математично еквівалентні моделі поняття алгоритму. Саме в теорії алгоритмів було передбачено основні концепції, які лягли в основу принципів побудови і функціонування обчислювальної машини з програмним керуванням і принципів створення мов програмування. Ідею такої обчислювальної машини вперше змогли реалізувати болгарський учений С. Атанасов в 1940 р. і німецький вчений К. Цузе в 1942 р. Чотири головні моделі алгоритму породили різні напрямки в програмуванні.
Моделі поняття алгоритму
- Перша модель — це абстрактна обчислювальна машина (Алан Тюрінг, Р. Пост). Вона з'явилася абстрактним прообразом реальних обчислювальних машин. Дотепер всі обчислювальні машини в деякому сенсі базуються на ідеї Тюрінга: їх пам'ять фізично складається з бітів, кожен з яких містить або 0, або 1. Програмне управління успадкувало від цих абстрактних машин і програму, вміщену в «постійну пам'ять» (ідея помістити програму ЕОМ в основну пам'ять, щоб мати можливість змінювати її в ході обчислень, належить Джону фон Нейманом), а структура команди сучасної ЕОМ великою мірою нагадує структуру команди машини Тюрінга. У рамках теорії машин Тюрінга викристалізувалися найважливіші для комп'ютерних додатків логіки поняття: обчислювана функція, здійсненне завдання, нерозв'язна (алгоритмічно) задача. Зібрано велику кількість визначень абстрактних обчислювальних машин і показано, як кожне з них можна звести до іншого певним кодуванням входів і виходів.
- Друга модель — це рекурсивні функції, ідея яких сходить до гільбертівського аксіоматичного підходу. Від них успадкувало свої основні конструкції сучасне структурне програмування.
- Третій спосіб опису алгоритмів — нормальні алгоритми А. А. Маркова. Вони послужили основою мови Рефал і багатьох інших мов обробки символьної інформації.
- Четвертий напрямок в теорії алгоритмів — так зване λ-числення — базується на ідеях радянського логіка Р. Шейнфінкеля та американського логіка Гаскелла Каррі. Виявилося, що для визначення всіх обчислюваних функцій досить операцій так званої λ — абстракції і суперпозиції. Ідеї λ -числення активно розвиваються в мові Лісп, функціональному програмуванні і в багатьох інших перспективних напрямах сучасного програмування.
Математична логіка стала бурхливо розвиватися на початку XX ст. на ґрунті здавалося б виключно далекої від додатків проблеми обґрунтування математики. Але саме ці дослідження поклали початок строгому визначенню алгоритмічних мов, показали їх колосальні можливості і принципові обмеження, розвинули техніку формалізації. Тому, коли в програмуванні було усвідомлено, що всяка програма є формалізацією, тоді ті що виникли тут математичні проблеми впали на ґрунт, ретельно підготовлений математичною логікою.
Опис комп'ютерних програм за допомогою математичної логіки
Перші спроби застосувати в програмуванні розвинені логічні обчислення і методи формалізації зробив американський логік Г. Б. Каррі. У 1952 р. він зробив доповідь «Логіка програмних композицій», ідеї якої випередили свій час принаймні на чверть століття. Каррі розглянув задачу програмування, як завдання складання більших програм з готових шматків. Було введено дві базисні системи конструкцій: перша — послідовне виконання, розгалуження і цикл, друга — послідовне виконання і умовний перехід. Він охарактеризував логічні засоби, які можна використовувати для композиції програм з підпрограм в кожному з цих випадків.
Як відомо, комп'ютер є свого роду «ідеальним бюрократом»: він не сприйме програму, написану на не до кінця формалізованою мовою, і приступить до роботи лише після того, як все виражено в повній відповідності з детальними інструкціями. Тому в 1960-ті рр. на перший план вийшли завдання точного визначення формальних мов досить складної структури. Математична логіка, підтримувана ідеями програмування, успішно з ними впоралася, розробили опис синтаксису складних і багатих виражальними засобами формальних мов.
У середині 1960-х рр. практично одночасно з'явився ряд піонерських робіт у галузі опису умов, яким задовольняє програма. Радянський математик В. М. Глушков в 1965 р. ввів поняття алгоритмічної алгебри, що послужило прообразом алгоритмічних логік. Ф. Енгелер в 1967 р. запропонував використовувати мови з нескінченно довгими формулами, щоб висловити нескінченну безліч можливостей, що виникають при різних виконаннях програми. Але найбільшу популярність придбали мови алгоритмічних логік. Ці мови були винайдені практично одночасно американськими логіками Р. У. Флойдом (1967), С. А. Р. Гоаром (1969) і вченими польської логічної школи, наприклад А. Сальвіцкім (1970) та ін.
Алгоритмічна логіка (або динамічна логіка, або програмна логіка, або логіка Гоара) — розділ теоретичного програмування, в рамках якого досліджуються аксіоматичні системи, що представляють засоби для завдання синтаксису і семантики мов програмування, а також для синтезу комп'ютерних програм та їх верифікації (перевірки правильності роботи). Мови алгоритмічних логік ґрунтуються на логіці предикатів 1 -го порядку і включають в себе висловлювання виду { A } S { B }, читаються наступним чином: «Якщо до виконання оператора S було виконано A, то після нього буде виконано B». Тут A називається передумовою, B — післяумовою, або обіцянкою S. Цією мовою даються логічні описання операторів присвоєння та умовного переходу, розгалуження, циклу.
Поряд з динамічної логікою 1-го порядку розглядається пропозиціональна динамічна логіка та її узагальнення — так звана логіка процесів, в якій виражені деякі властивості програми, що залежать від процесу її виконання. Різні динамічні логіки виходять при варіюванні засобів мов програмування, що використовуються в програмах. Ці засоби містять масиви та інші структури даних, рекурсивні процедури, циклічні конструкції, а також засоби задання недетермінованих програм.
Динамічна логіка є одним з типів логічних систем, що використовуються для логічного синтезу комп'ютерних програм. Логічний синтез — один із способів переходу від специфікації програми до реалізуючого алгоритму, що має форму точного міркування в деякій логічній системі. У динамічній логіці специфікація завдання задається у вигляді двох формул обчислення предикатів — передумови і післяумови, а аксіомами логічної системи є схеми передумови та післяумови, що пов'язуються тими чи іншими конструкціями мови програмування. Синтезована програма виходить у формі виведеного в динамічної логікою твердження, яка говорить, якщо аргументи завдання задовольняють задану передумову, то результат виконання синтезованої програми задовольняє задану післяумову.
У теоретичних роботах по динамічним логікам досліджуються питання несуперечності та повноти аксіоматичних систем, алгоритмічні складні властивості множин істинних формул, порівняння виразної потужності мов динамічної логіки.
Принципово інший спосіб визначення семантики програм, придатний, скоріше для опису всієї алгоритмічної мови, а не конкретних програм, запропонував в 1970 р. американський логік Д. Скотт. Він побудував математичну модель λ-числення і показав, як переводити функціональний опис мови структурного програмування в λ-числення і як визначити математичну модель алгоритмічного мови через модель λ-числення. Ця так звана денотаційна семантика алгоритмічних мов, стала практичним інструментом побудови надійних трансляторів із складних алгоритмічних мов. Так іще одна абстрактна область математичної логіки знайшла прямі практичні застосування.
Опис програмування та аналіз його концепцій за допомогою математичної логіки
Програмування — це процес складання програми, плану дій. Було відмічено, що класична логіка погано підходить для опису цього процесу хоча б тому, що вона погано підходить взагалі для опису всякого процесу в математиці. Ще на початку XX ст. стало ясно, що в математиці давно розійшлися поняття «існувати» і «бути побудованим», які з античних часів трактувалися як синоніми. Були виявлені так звані математичні об'єкти — «привиди» (множини, Функції, числа), існування яких доведено, але побудувати які можна. Причиною їх появи з'явився ефект поєднання класичної логіки з теоремою Геделя про неповноту формальної арифметики. Один з фундаментальних законів класичної логіки — закон виключеного третього (P ˅ ˥P) в деякому вільному трактуванні фактично означає, що ми знаємо все. Цей постулат звичайно ж ніяк не можна назвати реалістичним: ми знаємо надзвичайно мало, і чим більше дізнаємося, тим краще це розуміємо. Голландський математик Л. Е. Я. Брауер визначив логічні коріння «привидів», ще до відкриття теореми Геделя, в 1908 р., і почав побудову так званої інтуїтивної математики, яка не приймає закон (P ˅ ˥P), як універсальний. У 1930—1932 рр. другий голландець А. Гейтинг строго сформулював логіку, якою користувалися в інтуїтивній математиці — інтуїтивну логіку. Її математична інтерпретація, викладена радянським математиком А. М. Колмогоровим зберегла своє значення досі.
А. М. Колмогоров розглянув логіку як числення завдань. Кожна формула алгебри висловлювань розглядається не просто як формула, а як вимога вирішити завдання, тобто побудувати об'єкт, що задовольняє деяким умовам. Це так звана конструктивна інтерпретація логіки висловлювань. Логічні зв'язки розуміються як засоби побудови формулювань більш складних завдань з простіших, аксіоми — як завдання, вирішення яких дано, правила виводу — як способи перетворення рішень одних завдань у вирішення інших. Відзначимо, що рішення задачі — це не тільки сам шуканий об'єкт, а й доказ того, що він задовольняє пропонованим вимогам. Наприклад, формула A ˄ B розуміється в колмогорівській інтерпретації як завдання, яке полягає в тому, щоб побудувати розв'язок завдання A та розв'язок завдання B, правило висновку A, B \ A ˄ B — як перетворення, яке будує з об'єкта а, розв'язок завдання A, та об'єкта b, розв'язок завдання B, пару (a, b), розв'язок завдання A ˄ B. Об'єкт a, розв'язує завдання, зіставлене формулою A, називається реалізацією A. Цей факт позначається aRA. Центральним моментом конструктивного розуміння логічних формул є інтерпретація імплікації. Конструктивна імплікація A → B розуміється, як вимога побудувати ефективне перетворення f, застосоване до всіх реалізацій формули A і переводить їх у реалізації формули B.
Нечітке колмогорівське формулювання логіки, як обчислення завдань, породила численні різні конкретизації, давши цілу систему точних математичних визначень. Це формулювання знайшло застосування не тільки в інтуїтивній логіці, для якої вона була створена, а й в інших логічних системах. Строгі математичні семантики, засновані на ідеї Колмогорова, зазвичай називають семантиками реалізованості (на відміну від інших видів логічних семантик, які базуються на системах істиннісних значень). Першу реалізованість побудував американський логік С. К. Кліні в 1940 р. для арифметики з інтуїтивною логікою. У 1960-1980-х рр. з'явилися десятки понять реалізованості, як для систем, що базуються на інтуїтивній логіці, так і для інших логік. Радянський логік А. А. Воронков в 1985 р. вивів умови, при яких класична логіка може розглядатися як конструктивна. З них, зокрема, випливає, що необхідною (але не достатньою) умовою конструктивності класичної теорії є її повнота, тобто виводимість в ній для кожної замкнутої формули F або самої F, або її заперечення ˥F. Тим самим ще раз підтвердилося прозріння Брауера щодо логічних коренів неконструктивності. Зауважимо, що прикладами класичних теорій, що мають конструктивне тлумачення, служать елементарна геометрія і алгебраїчна теорія дійсних чисел.
Опис програмування за допомогою логіки засноване на певній аналогії між висновком формули в деякому логічному обчисленні і програмою вирішення завдання, що відповідає цій формулі при конструктивній інтерпретації логіки. Логічна теорія, відповідна структурним схемам програм, з'явилася в середині 1980-х рр. Структурні схеми відповідали нарождающемуся новому типу логіки — логіки схем програм, якою користується програміст для створення складних, багатоваріантних, ітеративних планів дій.
Верифікація програм за допомогою математичної логіки
Широке використання комп'ютерів у найрізноманітніших сферах людської діяльності ставить питання надійності програмного забезпечення комп'ютерів. Як відомо, правильність створеної програми зазвичай перевіряється на ряді так званих тестових прикладів, на початкових даних, для яких результат відомий або його можна передбачити. Неважко зрозуміти, що така перевірка здатна лише виявити наявність помилок у програмі, але не довести їх відсутність.
Тому винятково важливе завдання суворого доведення правильності програм, і саме для цієї мети і почали розроблятися програмні та динамічні логіки.
З інтуїтивної точки зору програма буде правильною, якщо в результаті її виконання буде досягнутий той результат, з метою отримання якого і була написана програма. Доказ правильності програми полягає в пред'явленні такого ланцюжка аргументів, які переконливо свідчать про те, що це дійсно так, тобто, що програма насправді вирішує поставлене завдання.
Сформулюємо тепер точне визначення поняття правильності програми. Нехай α — програма, P — твердження, що стосується вхідних даних, яке має бути істинно перед виконанням програми α (воно називається передумовою програми α), Q — твердження, яке має бути істинно після виконання програми α(воно називається післяумовою програми α). Розрізняють два види правильності програм: часткову і тотальну (повну). Програма α називається частково правильною щодо передумови P і післяумови Q, якщо кожен раз, коли перед виконанням α передумова P істинна для вхідних значень змінних, і α завершує роботу, післяумова Q також буде істинною для вихідних значень змінних. У цьому випадку будемо використовувати запис P [ α ] Q. Програма α називається тотально правильною відносно P і Q, якщо вона частково правильна відносно P і Q, і α обов'язково завершує свою роботу для вхідних значень змінних, які відповідають умові P. У цьому випадку пишемо P [ α! ] Q.
Звернемо увагу на те, що поняття правильності програми α сформульовано щодо відповідних тверджень (умов) P і Q. Тому з істинності твердження P [ α ] Q (або P [ α ! ] Q відповідно) не обов'язково слідує істинність твердження про правильність програми при інших передумовах та післяумовах. Аналогічним чином, заміна в P [ α ] Q (або P [ α ! ] Q) програми α на програму β, взагалі кажучи, не зберігає істінностного значення твердження про правильність. Не слід також думати, що за даних умов P і Q існує тільки одна програма α, для якої висловлення P [ α ] Q (або P [ α ! ] Q) істинно.
Говорити про правильність програми самої по собі безглуздо. Програма пишеться з метою вирішення тієї чи іншої конкретної задачі. Кожна правильно поставлена задача містить у собі умову (те, що дано) і питання, на які потрібно дати відповідь. При складанні програми умова задачі перетворюється на передумову, а питання перетвориться в післяумову, що має вже форму не питання, а твердження, яке має бути істинно всякий раз, коли відповідь на питання задачі правильна.
З визначень випливає, що всяка тотально правильна програма є частково правильною при тих же передумовах і післяумовах. Зворотне звичайно ж невірно. Зрозуміло, що тотальна правильність «краща» за часткову, хоча довести тотальну правильність програми, мабуть, складніше, ніж часткову.
Для доказу часткової правильності операторних програм зазвичай використовуються різні модифікації методу Флойда, який полягає в наступному. На схемі програми вибираються контрольні точки так, щоб будь-який циклічний шлях проходив принаймні через одну точку. З кожною контрольною точкою асоціюється спеціальна умова (індуктивне твердження або інваріант циклу), яка істинна при кожному переході через цю точку. З входом і виходом схеми також асоціюються перед- і післяумови. Потім кожному шляху програми між двома сусідніми контрольними точками зіставляється так звана умова правильності. Виконуваність всіх умов правильності гарантує часткову правильність програми.
Один із способів доказу завершення роботи програми, полягає у введенні в програму додаткових лічильників для кожного циклу і доведенні їх обмеженості в процесі доведення часткової правильності програми.
Одна з модифікацій методу Флойда полягає в побудові кінцевої аксіоматичної системи (так званої «логіки Гоара»), що складається з схем аксіом і правил виводу, в якій як теореми виводяться твердження про часткову правильність програм, зокрема мовою програмування Паскаль. Така система використовується і для завдання аксіоматичної семантики мови Паскаль. Аксіоматичні системи, родинні логіці Гоара, розроблені і для інших алгоритмічних мов програмування.
Для доказу правильності рекурсивних програм використовується метод математичної індукції, пов'язаний з визначенням найменшої нерухомої точки, а для програм зі складними структурами даних (наприклад, графами, деревами) — індукція за структурою даних. При цьому в теоретичних дослідженнях за логікою Гоара розглядаються звичайні властивості Аксіоматизації в логіці — їх несуперечність і повнота.
Див. також
Посилання
- Математична логіка та мови програмування [ 11 квітня 2017 у Wayback Machine.]
- Математична логіка та інформатика [ 11 квітня 2017 у Wayback Machine.]
- Математична логіка і логічне програмування [ 11 квітня 2017 у Wayback Machine.]
Примітки
- Halpern J.Y., Harper R., Immerman N., Kolaitis Ph.G., Vardi M.Y., and Vianu V. On the unususal effectiveness of logic in computer science. — January, 2001 [ 30 липня 2012 у Wayback Machine.].
- Roussopoulos N.D. A semantic network model of data bases. — TR No 104, Department of Computer Science, University of Toronto, 1976.
- Scott D.S. The lattice of flow diagrams.-- Lecture Notes in Mathematics, 188, Symposium on Semantics of Algorithmic Languages.-- Berlin, Heidelberg, New York: Springer-Verlag, 1971, pp.~311-372.
- Codd E. F. Relational Completeness of Data Base Sublanguages. [ 18 травня 2008 у Wayback Machine.] In: R. Rustin (ed.): Database Systems: 65-98, Prentice Hall and IBM Research Report RJ 987, San Jose, California, 1972.
- Peyton Jones S., Eber J.-M., Seward J. Composing contracts: an adventure in financial engineering. [ 2 грудня 2008 у Wayback Machine.] — ICFP 2000
- Asperti A, and Longo G. Categories, Types and Structures. Category Theory for the working computer scientist. — M.I.T. Press, 1991 (pp. 1-300)
Література
- 'Логіко-інформаційна система // Філософський енциклопедичний словник / В. І. Шинкарук (гол. редкол.) та ін. — Київ : Інститут філософії імені Григорія Сковороди НАН України : Абрис, 2002. — 742 с. — 1000 екз. — ББК (87я2). — .
- Вольфенгаген В. Э. Логика. Конспект лекций: техника рассуждений. 2-е изд., дополн. и перераб. — М: АО «Центр ЮрИнфоР», 2004. — 229 с .
- Математическая логика и теория алгоритмов, Игошин В. И., 2008
- Колмогоров А. Н., Драгалин А. Г. Математическая логика. Изд. 3-е, 2006.
- П.Грогоно, Программирование на языке Pascal, М.:Мир, 1982, с.295, (Тестирование и верификация).
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Logika v informatici ce napryam doslidzhen ta galuzej znan de logika zastosovuyetsya v informatici ta shtuchnomu intelekti Vikoristannya logiki duzhe efektivne v cih oblastyah Umovno vislovlyuyuchis mozhna skazati sho komp yuter skladayetsya z materialnoyi chastini ta matematichnogo programnogo zabezpechennya abo vikoristovuyuchi profesijnu leksiku z zaliza i vzuttya I do togo i do inshogo maye same bezposerednye vidnoshennya matematichna logika ni pershe ni druge bez matematichnoyi logiki obijtisya ne mozhut Oblast zastosuvannyaVklyuchayutsya taki osnovni zastosuvannya doslidzhennya v logici viklikani rozvitkom komp yuternih nauk Napriklad aplikativni obchislyuvalni sistemi teoriya obchislen i modeli obchislen formalni metodi i logika mirkuvannya pro ponyattya Napriklad semantichna merezha semantichna pavutina buleva logika i algebra dlya rozrobki aparatnogo zabezpechennya komp yuteriv rozv yazannya zadach i strukturne programuvannya dlya rozrobki prikladnih program i stvorennya skladnih sistem programnogo zabezpechennya dokazove programuvannya tehnologiya rozrobki algoritmiv i program iz dokazami pravilnosti algoritmiv fundamentalni ponyattya i uyavlennya dlya komp yuternih nauk yaki ye prirodnoyu oblastyu dlya formalnoyi logiki Napriklad semantika mov programuvannya logika znan i pripushen Napriklad shtuchnij intelekt mova Prolog i logichne programuvannya dlya stvorennya baz znan ta ekspertnih sistem i doslidzhen u sferi shtuchnogo intelektu logika dlya opisu prostorovogo polozhennya i peremishennya logika v informacijnih tehnologiyah Napriklad relyacijna model danih relyacijni SKBD relyacijna algebra relyacijne chislennya logika obchislen z ob yektami Napriklad kombinatorna logika superkombinatori logika dlya kompilyuvannya programnogo kodu ta jogo optimizaciyi Napriklad kategorialna abstraktna mashina logika dlya ekvivalentnogo peretvorennya ob yektiv Napriklad lyambda chislennya pereviklad logiki i matematiki v terminah zrozumilih fahivcyam v komp yuternih naukah Cej spisok prodovzhuye popovnyuvatisya Efektivnist u komp yuternih naukahNa vidminu vid prirodnichih nauk komp yuterni nauki otrimali velikij stimul vid shirokoyi i bezperervnoyi vzayemodiyi z logikoyu Osoblivu rol u komp yuternih naukah vidigrayut dokazovi metodi rozrobki algoritmiv i program z dokazami yihnoyi pravilnosti Testuvannya program mozhe viyaviti nayavnist pomilok u programah ale ne mozhe garantuvati yih vidsutnist Garantiyi vidsutnosti pomilok v algoritmah i programah mozhut dati tilki dokazi yih pravilnosti Algoritm ne mistit pomilok yaksho vin daye pravilni rozv yazki dlya vsih dopustimih danih Serjoznoyu problemoyu dlya komp yuternih nauk ta informatiki ye nayavnist pomilok v algoritmah i programah sho publikuyutsya v pidruchnikah i navchalnih posibnikah a takozh nevminnya vikladachiv i vchiteliv informatiki viyavlyati i vipravlyati pomilki v algoritmah i programah skladenih uchnyami Yedinij shlyah dlya podolannya cih problem ce vivchennya sistematichnih metodiv skladannya algoritmiv i program z odnochasnim analizom yih pravilnosti v ramkah dokazovogo programuvannya z samogo pochatku navchannya osnovam algoritmizaciyi i programuvannya Skladnist dlya vikladachiv i programistiv polyagaye v tomu sho voni povinni vmiti pisati ne tilki algoritmi i programi a j dokazi pravilnosti svoyih algoritmiv i program Na zhal zaraz ce ne vmiyut robiti ni matematiki ni programisti V rezultati programisti pishut programi z velikim chislom pomilok yaki voni ne mozhut ni viyaviti ni vipraviti Masovane testuvannya program na EOM prinosit programistam bezperechnu korist prote ne daye garantij povnogo pozbavlennya vid pomilok Praktika zastosuvannya ta vivchennya dokazovih metodiv programuvannya pokazala sho cya tehnologiya cilkom dostupna studentam matematichnih fakultetiv yakim cilkom pid silu napisannya dokaziv pravilnosti algoritmiv pislya perevirki ta testuvannya program na EOM Najbilshij efekt v osvoyenni tehnologij dokazovogo programuvannya sposterigayetsya v olimpiadah z informatiki ta programuvannya de peremozhcyami ta prizerami stayut ti studenti yaki osvoyili tehniku testuvannya program na EOM i skladannya algoritmiv i program bez pomilok Matematichna logika ta rozvitok informatikiInformatika yak nauka pochala formuvatisya razom z stvorennyam i burhlivim rozvitkom obchislyuvalnoyi tehniki Yiyi formuvannya i viznachennya yiyi predmeta trivayut doteper Informatika nauka pro zberigannya obrobki i peredachi informaciyi za dopomogoyu komp yuteriv Vona vklyuchaye v sebe veliki rozdili yaki vivchayut algoritmichni programni ta tehnichni zasobi zberigannya obrobki i peredachi informaciyi Matematichna logika viyavilasya yedinoyu matematichnoyu naukoyu metodi yakoyi stali najpotuzhnishimi instrumentami piznannya u vsih rozdilah informatiki Tomu skilki serjozne vivchennya informatiki nemislimo bez osvoyennya osnov matematichnoyi logiki Shob komp yuter pracyuvav vin povinen buti osnashenij programnim zabezpechennyam tobto kompleksom program sho oriyentuyut komp yuter na virishennya zavdan togo chi inshogo klasu Slovo programa maye grecke pohodzhennya i oznachaye ogoloshennya rozporyadzhennya Uzhe same ponyattya komp yuternoyi programi sho peredbachaye chitkij algoritmichnij pripis komp yutera pro poryadok i harakter dij peredbachaye proniknennya v programu a takozh u proces yiyi skladannya v programuvannya teoriyi algoritmiv Ale pri bilsh pilnomu rozglyadi proces proniknennya logiki v programi i programuvannya viyavlyayetsya znachno bilsh glibokim i organichnim Ne tilki odin rozdil teoriyi algoritmiv pracyuye tut ale viklyuchno diyevoyu viyavlyayetsya same istota matematichnoyi logiki yiyi movu yiyi aksiomatichni teoriyi visnovki i teoremi v nih vlastivosti cih teorij Fundamentalna osnova programuvannyaTeoriya algoritmiv ta matematichna logika fundamentalna osnova programuvannya U 30 ti rr XIX st anglijskij matematik Charlz Bebbidzh visloviv vpershe ideyu obchislyuvalnoyi mashini I tilki sto rokiv po tomu logiki rozrobili chotiri matematichno ekvivalentni modeli ponyattya algoritmu Same v teoriyi algoritmiv bulo peredbacheno osnovni koncepciyi yaki lyagli v osnovu principiv pobudovi i funkcionuvannya obchislyuvalnoyi mashini z programnim keruvannyam i principiv stvorennya mov programuvannya Ideyu takoyi obchislyuvalnoyi mashini vpershe zmogli realizuvati bolgarskij uchenij S Atanasov v 1940 r i nimeckij vchenij K Cuze v 1942 r Chotiri golovni modeli algoritmu porodili rizni napryamki v programuvanni Modeli ponyattya algoritmuPersha model ce abstraktna obchislyuvalna mashina Alan Tyuring R Post Vona z yavilasya abstraktnim proobrazom realnih obchislyuvalnih mashin Doteper vsi obchislyuvalni mashini v deyakomu sensi bazuyutsya na ideyi Tyuringa yih pam yat fizichno skladayetsya z bitiv kozhen z yakih mistit abo 0 abo 1 Programne upravlinnya uspadkuvalo vid cih abstraktnih mashin i programu vmishenu v postijnu pam yat ideya pomistiti programu EOM v osnovnu pam yat shob mati mozhlivist zminyuvati yiyi v hodi obchislen nalezhit Dzhonu fon Nejmanom a struktura komandi suchasnoyi EOM velikoyu miroyu nagaduye strukturu komandi mashini Tyuringa U ramkah teoriyi mashin Tyuringa vikristalizuvalisya najvazhlivishi dlya komp yuternih dodatkiv logiki ponyattya obchislyuvana funkciya zdijsnenne zavdannya nerozv yazna algoritmichno zadacha Zibrano veliku kilkist viznachen abstraktnih obchislyuvalnih mashin i pokazano yak kozhne z nih mozhna zvesti do inshogo pevnim koduvannyam vhodiv i vihodiv Druga model ce rekursivni funkciyi ideya yakih shodit do gilbertivskogo aksiomatichnogo pidhodu Vid nih uspadkuvalo svoyi osnovni konstrukciyi suchasne strukturne programuvannya Tretij sposib opisu algoritmiv normalni algoritmi A A Markova Voni posluzhili osnovoyu movi Refal i bagatoh inshih mov obrobki simvolnoyi informaciyi Chetvertij napryamok v teoriyi algoritmiv tak zvane l chislennya bazuyetsya na ideyah radyanskogo logika R Shejnfinkelya ta amerikanskogo logika Gaskella Karri Viyavilosya sho dlya viznachennya vsih obchislyuvanih funkcij dosit operacij tak zvanoyi l abstrakciyi i superpoziciyi Ideyi l chislennya aktivno rozvivayutsya v movi Lisp funkcionalnomu programuvanni i v bagatoh inshih perspektivnih napryamah suchasnogo programuvannya Matematichna logika stala burhlivo rozvivatisya na pochatku XX st na grunti zdavalosya b viklyuchno dalekoyi vid dodatkiv problemi obgruntuvannya matematiki Ale same ci doslidzhennya poklali pochatok strogomu viznachennyu algoritmichnih mov pokazali yih kolosalni mozhlivosti i principovi obmezhennya rozvinuli tehniku formalizaciyi Tomu koli v programuvanni bulo usvidomleno sho vsyaka programa ye formalizaciyeyu todi ti sho vinikli tut matematichni problemi vpali na grunt retelno pidgotovlenij matematichnoyu logikoyu Opis komp yuternih program za dopomogoyu matematichnoyi logikiPershi sprobi zastosuvati v programuvanni rozvineni logichni obchislennya i metodi formalizaciyi zrobiv amerikanskij logik G B Karri U 1952 r vin zrobiv dopovid Logika programnih kompozicij ideyi yakoyi viperedili svij chas prinajmni na chvert stolittya Karri rozglyanuv zadachu programuvannya yak zavdannya skladannya bilshih program z gotovih shmatkiv Bulo vvedeno dvi bazisni sistemi konstrukcij persha poslidovne vikonannya rozgaluzhennya i cikl druga poslidovne vikonannya i umovnij perehid Vin oharakterizuvav logichni zasobi yaki mozhna vikoristovuvati dlya kompoziciyi program z pidprogram v kozhnomu z cih vipadkiv Yak vidomo komp yuter ye svogo rodu idealnim byurokratom vin ne sprijme programu napisanu na ne do kincya formalizovanoyu movoyu i pristupit do roboti lishe pislya togo yak vse virazheno v povnij vidpovidnosti z detalnimi instrukciyami Tomu v 1960 ti rr na pershij plan vijshli zavdannya tochnogo viznachennya formalnih mov dosit skladnoyi strukturi Matematichna logika pidtrimuvana ideyami programuvannya uspishno z nimi vporalasya rozrobili opis sintaksisu skladnih i bagatih virazhalnimi zasobami formalnih mov U seredini 1960 h rr praktichno odnochasno z yavivsya ryad pionerskih robit u galuzi opisu umov yakim zadovolnyaye programa Radyanskij matematik V M Glushkov v 1965 r vviv ponyattya algoritmichnoyi algebri sho posluzhilo proobrazom algoritmichnih logik F Engeler v 1967 r zaproponuvav vikoristovuvati movi z neskinchenno dovgimi formulami shob visloviti neskinchennu bezlich mozhlivostej sho vinikayut pri riznih vikonannyah programi Ale najbilshu populyarnist pridbali movi algoritmichnih logik Ci movi buli vinajdeni praktichno odnochasno amerikanskimi logikami R U Flojdom 1967 S A R Goarom 1969 i vchenimi polskoyi logichnoyi shkoli napriklad A Salvickim 1970 ta in Algoritmichna logika abo dinamichna logika abo programna logika abo logika Goara rozdil teoretichnogo programuvannya v ramkah yakogo doslidzhuyutsya aksiomatichni sistemi sho predstavlyayut zasobi dlya zavdannya sintaksisu i semantiki mov programuvannya a takozh dlya sintezu komp yuternih program ta yih verifikaciyi perevirki pravilnosti roboti Movi algoritmichnih logik gruntuyutsya na logici predikativ 1 go poryadku i vklyuchayut v sebe vislovlyuvannya vidu A S B chitayutsya nastupnim chinom Yaksho do vikonannya operatora S bulo vikonano A to pislya nogo bude vikonano B Tut A nazivayetsya peredumovoyu B pislyaumovoyu abo obicyankoyu S Ciyeyu movoyu dayutsya logichni opisannya operatoriv prisvoyennya ta umovnogo perehodu rozgaluzhennya ciklu Poryad z dinamichnoyi logikoyu 1 go poryadku rozglyadayetsya propozicionalna dinamichna logika ta yiyi uzagalnennya tak zvana logika procesiv v yakij virazheni deyaki vlastivosti programi sho zalezhat vid procesu yiyi vikonannya Rizni dinamichni logiki vihodyat pri variyuvanni zasobiv mov programuvannya sho vikoristovuyutsya v programah Ci zasobi mistyat masivi ta inshi strukturi danih rekursivni proceduri ciklichni konstrukciyi a takozh zasobi zadannya nedeterminovanih program Dinamichna logika ye odnim z tipiv logichnih sistem sho vikoristovuyutsya dlya logichnogo sintezu komp yuternih program Logichnij sintez odin iz sposobiv perehodu vid specifikaciyi programi do realizuyuchogo algoritmu sho maye formu tochnogo mirkuvannya v deyakij logichnij sistemi U dinamichnij logici specifikaciya zavdannya zadayetsya u viglyadi dvoh formul obchislennya predikativ peredumovi i pislyaumovi a aksiomami logichnoyi sistemi ye shemi peredumovi ta pislyaumovi sho pov yazuyutsya timi chi inshimi konstrukciyami movi programuvannya Sintezovana programa vihodit u formi vivedenogo v dinamichnoyi logikoyu tverdzhennya yaka govorit yaksho argumenti zavdannya zadovolnyayut zadanu peredumovu to rezultat vikonannya sintezovanoyi programi zadovolnyaye zadanu pislyaumovu U teoretichnih robotah po dinamichnim logikam doslidzhuyutsya pitannya nesuperechnosti ta povnoti aksiomatichnih sistem algoritmichni skladni vlastivosti mnozhin istinnih formul porivnyannya viraznoyi potuzhnosti mov dinamichnoyi logiki Principovo inshij sposib viznachennya semantiki program pridatnij skorishe dlya opisu vsiyeyi algoritmichnoyi movi a ne konkretnih program zaproponuvav v 1970 r amerikanskij logik D Skott Vin pobuduvav matematichnu model l chislennya i pokazav yak perevoditi funkcionalnij opis movi strukturnogo programuvannya v l chislennya i yak viznachiti matematichnu model algoritmichnogo movi cherez model l chislennya Cya tak zvana denotacijna semantika algoritmichnih mov stala praktichnim instrumentom pobudovi nadijnih translyatoriv iz skladnih algoritmichnih mov Tak ishe odna abstraktna oblast matematichnoyi logiki znajshla pryami praktichni zastosuvannya Opis programuvannya ta analiz jogo koncepcij za dopomogoyu matematichnoyi logikiProgramuvannya ce proces skladannya programi planu dij Bulo vidmicheno sho klasichna logika pogano pidhodit dlya opisu cogo procesu hocha b tomu sho vona pogano pidhodit vzagali dlya opisu vsyakogo procesu v matematici She na pochatku XX st stalo yasno sho v matematici davno rozijshlisya ponyattya isnuvati i buti pobudovanim yaki z antichnih chasiv traktuvalisya yak sinonimi Buli viyavleni tak zvani matematichni ob yekti prividi mnozhini Funkciyi chisla isnuvannya yakih dovedeno ale pobuduvati yaki mozhna Prichinoyu yih poyavi z yavivsya efekt poyednannya klasichnoyi logiki z teoremoyu Gedelya pro nepovnotu formalnoyi arifmetiki Odin z fundamentalnih zakoniv klasichnoyi logiki zakon viklyuchenogo tretogo P P v deyakomu vilnomu traktuvanni faktichno oznachaye sho mi znayemo vse Cej postulat zvichajno zh niyak ne mozhna nazvati realistichnim mi znayemo nadzvichajno malo i chim bilshe diznayemosya tim krashe ce rozumiyemo Gollandskij matematik L E Ya Brauer viznachiv logichni korinnya prividiv she do vidkrittya teoremi Gedelya v 1908 r i pochav pobudovu tak zvanoyi intuyitivnoyi matematiki yaka ne prijmaye zakon P P yak universalnij U 1930 1932 rr drugij gollandec A Gejting strogo sformulyuvav logiku yakoyu koristuvalisya v intuyitivnij matematici intuyitivnu logiku Yiyi matematichna interpretaciya vikladena radyanskim matematikom A M Kolmogorovim zberegla svoye znachennya dosi A M Kolmogorov rozglyanuv logiku yak chislennya zavdan Kozhna formula algebri vislovlyuvan rozglyadayetsya ne prosto yak formula a yak vimoga virishiti zavdannya tobto pobuduvati ob yekt sho zadovolnyaye deyakim umovam Ce tak zvana konstruktivna interpretaciya logiki vislovlyuvan Logichni zv yazki rozumiyutsya yak zasobi pobudovi formulyuvan bilsh skladnih zavdan z prostishih aksiomi yak zavdannya virishennya yakih dano pravila vivodu yak sposobi peretvorennya rishen odnih zavdan u virishennya inshih Vidznachimo sho rishennya zadachi ce ne tilki sam shukanij ob yekt a j dokaz togo sho vin zadovolnyaye proponovanim vimogam Napriklad formula A B rozumiyetsya v kolmogorivskij interpretaciyi yak zavdannya yake polyagaye v tomu shob pobuduvati rozv yazok zavdannya A ta rozv yazok zavdannya B pravilo visnovku A B A B yak peretvorennya yake buduye z ob yekta a rozv yazok zavdannya A ta ob yekta b rozv yazok zavdannya B paru a b rozv yazok zavdannya A B Ob yekt a rozv yazuye zavdannya zistavlene formuloyu A nazivayetsya realizaciyeyu A Cej fakt poznachayetsya aRA Centralnim momentom konstruktivnogo rozuminnya logichnih formul ye interpretaciya implikaciyi Konstruktivna implikaciya A B rozumiyetsya yak vimoga pobuduvati efektivne peretvorennya f zastosovane do vsih realizacij formuli A i perevodit yih u realizaciyi formuli B Nechitke kolmogorivske formulyuvannya logiki yak obchislennya zavdan porodila chislenni rizni konkretizaciyi davshi cilu sistemu tochnih matematichnih viznachen Ce formulyuvannya znajshlo zastosuvannya ne tilki v intuyitivnij logici dlya yakoyi vona bula stvorena a j v inshih logichnih sistemah Strogi matematichni semantiki zasnovani na ideyi Kolmogorova zazvichaj nazivayut semantikami realizovanosti na vidminu vid inshih vidiv logichnih semantik yaki bazuyutsya na sistemah istinnisnih znachen Pershu realizovanist pobuduvav amerikanskij logik S K Klini v 1940 r dlya arifmetiki z intuyitivnoyu logikoyu U 1960 1980 h rr z yavilisya desyatki ponyat realizovanosti yak dlya sistem sho bazuyutsya na intuyitivnij logici tak i dlya inshih logik Radyanskij logik A A Voronkov v 1985 r viviv umovi pri yakih klasichna logika mozhe rozglyadatisya yak konstruktivna Z nih zokrema viplivaye sho neobhidnoyu ale ne dostatnoyu umovoyu konstruktivnosti klasichnoyi teoriyi ye yiyi povnota tobto vivodimist v nij dlya kozhnoyi zamknutoyi formuli F abo samoyi F abo yiyi zaperechennya F Tim samim she raz pidtverdilosya prozrinnya Brauera shodo logichnih koreniv nekonstruktivnosti Zauvazhimo sho prikladami klasichnih teorij sho mayut konstruktivne tlumachennya sluzhat elementarna geometriya i algebrayichna teoriya dijsnih chisel Opis programuvannya za dopomogoyu logiki zasnovane na pevnij analogiyi mizh visnovkom formuli v deyakomu logichnomu obchislenni i programoyu virishennya zavdannya sho vidpovidaye cij formuli pri konstruktivnij interpretaciyi logiki Logichna teoriya vidpovidna strukturnim shemam program z yavilasya v seredini 1980 h rr Strukturni shemi vidpovidali narozhdayushemusya novomu tipu logiki logiki shem program yakoyu koristuyetsya programist dlya stvorennya skladnih bagatovariantnih iterativnih planiv dij Verifikaciya program za dopomogoyu matematichnoyi logikiShiroke vikoristannya komp yuteriv u najriznomanitnishih sferah lyudskoyi diyalnosti stavit pitannya nadijnosti programnogo zabezpechennya komp yuteriv Yak vidomo pravilnist stvorenoyi programi zazvichaj pereviryayetsya na ryadi tak zvanih testovih prikladiv na pochatkovih danih dlya yakih rezultat vidomij abo jogo mozhna peredbachiti Nevazhko zrozumiti sho taka perevirka zdatna lishe viyaviti nayavnist pomilok u programi ale ne dovesti yih vidsutnist Tomu vinyatkovo vazhlive zavdannya suvorogo dovedennya pravilnosti program i same dlya ciyeyi meti i pochali rozroblyatisya programni ta dinamichni logiki Z intuyitivnoyi tochki zoru programa bude pravilnoyu yaksho v rezultati yiyi vikonannya bude dosyagnutij toj rezultat z metoyu otrimannya yakogo i bula napisana programa Dokaz pravilnosti programi polyagaye v pred yavlenni takogo lancyuzhka argumentiv yaki perekonlivo svidchat pro te sho ce dijsno tak tobto sho programa naspravdi virishuye postavlene zavdannya Sformulyuyemo teper tochne viznachennya ponyattya pravilnosti programi Nehaj a programa P tverdzhennya sho stosuyetsya vhidnih danih yake maye buti istinno pered vikonannyam programi a vono nazivayetsya peredumovoyu programi a Q tverdzhennya yake maye buti istinno pislya vikonannya programi a vono nazivayetsya pislyaumovoyu programi a Rozriznyayut dva vidi pravilnosti program chastkovu i totalnu povnu Programa a nazivayetsya chastkovo pravilnoyu shodo peredumovi P i pislyaumovi Q yaksho kozhen raz koli pered vikonannyam a peredumova P istinna dlya vhidnih znachen zminnih i a zavershuye robotu pislyaumova Q takozh bude istinnoyu dlya vihidnih znachen zminnih U comu vipadku budemo vikoristovuvati zapis P a Q Programa a nazivayetsya totalno pravilnoyu vidnosno P i Q yaksho vona chastkovo pravilna vidnosno P i Q i a obov yazkovo zavershuye svoyu robotu dlya vhidnih znachen zminnih yaki vidpovidayut umovi P U comu vipadku pishemo P a Q Zvernemo uvagu na te sho ponyattya pravilnosti programi a sformulovano shodo vidpovidnih tverdzhen umov P i Q Tomu z istinnosti tverdzhennya P a Q abo P a Q vidpovidno ne obov yazkovo sliduye istinnist tverdzhennya pro pravilnist programi pri inshih peredumovah ta pislyaumovah Analogichnim chinom zamina v P a Q abo P a Q programi a na programu b vzagali kazhuchi ne zberigaye istinnostnogo znachennya tverdzhennya pro pravilnist Ne slid takozh dumati sho za danih umov P i Q isnuye tilki odna programa a dlya yakoyi vislovlennya P a Q abo P a Q istinno Govoriti pro pravilnist programi samoyi po sobi bezgluzdo Programa pishetsya z metoyu virishennya tiyeyi chi inshoyi konkretnoyi zadachi Kozhna pravilno postavlena zadacha mistit u sobi umovu te sho dano i pitannya na yaki potribno dati vidpovid Pri skladanni programi umova zadachi peretvoryuyetsya na peredumovu a pitannya peretvoritsya v pislyaumovu sho maye vzhe formu ne pitannya a tverdzhennya yake maye buti istinno vsyakij raz koli vidpovid na pitannya zadachi pravilna Z viznachen viplivaye sho vsyaka totalno pravilna programa ye chastkovo pravilnoyu pri tih zhe peredumovah i pislyaumovah Zvorotne zvichajno zh nevirno Zrozumilo sho totalna pravilnist krasha za chastkovu hocha dovesti totalnu pravilnist programi mabut skladnishe nizh chastkovu Dlya dokazu chastkovoyi pravilnosti operatornih program zazvichaj vikoristovuyutsya rizni modifikaciyi metodu Flojda yakij polyagaye v nastupnomu Na shemi programi vibirayutsya kontrolni tochki tak shob bud yakij ciklichnij shlyah prohodiv prinajmni cherez odnu tochku Z kozhnoyu kontrolnoyu tochkoyu asociyuyetsya specialna umova induktivne tverdzhennya abo invariant ciklu yaka istinna pri kozhnomu perehodi cherez cyu tochku Z vhodom i vihodom shemi takozh asociyuyutsya pered i pislyaumovi Potim kozhnomu shlyahu programi mizh dvoma susidnimi kontrolnimi tochkami zistavlyayetsya tak zvana umova pravilnosti Vikonuvanist vsih umov pravilnosti garantuye chastkovu pravilnist programi Odin iz sposobiv dokazu zavershennya roboti programi polyagaye u vvedenni v programu dodatkovih lichilnikiv dlya kozhnogo ciklu i dovedenni yih obmezhenosti v procesi dovedennya chastkovoyi pravilnosti programi Odna z modifikacij metodu Flojda polyagaye v pobudovi kincevoyi aksiomatichnoyi sistemi tak zvanoyi logiki Goara sho skladayetsya z shem aksiom i pravil vivodu v yakij yak teoremi vivodyatsya tverdzhennya pro chastkovu pravilnist program zokrema movoyu programuvannya Paskal Taka sistema vikoristovuyetsya i dlya zavdannya aksiomatichnoyi semantiki movi Paskal Aksiomatichni sistemi rodinni logici Goara rozrobleni i dlya inshih algoritmichnih mov programuvannya Dlya dokazu pravilnosti rekursivnih program vikoristovuyetsya metod matematichnoyi indukciyi pov yazanij z viznachennyam najmenshoyi neruhomoyi tochki a dlya program zi skladnimi strukturami danih napriklad grafami derevami indukciya za strukturoyu danih Pri comu v teoretichnih doslidzhennyah za logikoyu Goara rozglyadayutsya zvichajni vlastivosti Aksiomatizaciyi v logici yih nesuperechnist i povnota Div takozhProgramuvannya Paradigma programuvannya Strukturne programuvannya Logichne programuvannya Informatika Kombinatorna logika Rozv yazannya zadach Dokazove programuvannya Matematichna logika Logika Goara Verifikaciya programnogo zabezpechennya AlgoritmPosilannyaMatematichna logika ta movi programuvannya 11 kvitnya 2017 u Wayback Machine Matematichna logika ta informatika 11 kvitnya 2017 u Wayback Machine Matematichna logika i logichne programuvannya 11 kvitnya 2017 u Wayback Machine PrimitkiHalpern J Y Harper R Immerman N Kolaitis Ph G Vardi M Y and Vianu V On the unususal effectiveness of logic in computer science January 2001 30 lipnya 2012 u Wayback Machine Roussopoulos N D A semantic network model of data bases TR No 104 Department of Computer Science University of Toronto 1976 Scott D S The lattice of flow diagrams Lecture Notes in Mathematics 188 Symposium on Semantics of Algorithmic Languages Berlin Heidelberg New York Springer Verlag 1971 pp 311 372 Codd E F Relational Completeness of Data Base Sublanguages 18 travnya 2008 u Wayback Machine In R Rustin ed Database Systems 65 98 Prentice Hall and IBM Research Report RJ 987 San Jose California 1972 Peyton Jones S Eber J M Seward J Composing contracts an adventure in financial engineering 2 grudnya 2008 u Wayback Machine ICFP 2000 Asperti A and Longo G Categories Types and Structures Category Theory for the working computer scientist M I T Press 1991 pp 1 300 Literatura Logiko informacijna sistema Filosofskij enciklopedichnij slovnik V I Shinkaruk gol redkol ta in Kiyiv Institut filosofiyi imeni Grigoriya Skovorodi NAN Ukrayini Abris 2002 742 s 1000 ekz BBK 87ya2 ISBN 966 531 128 X Volfengagen V E Logika Konspekt lekcij tehnika rassuzhdenij 2 e izd dopoln i pererab M AO Centr YurInfoR 2004 229 s ISBN 5 89158 135 3 Matematicheskaya logika i teoriya algoritmov Igoshin V I 2008 Kolmogorov A N Dragalin A G Matematicheskaya logika Izd 3 e 2006 P Grogono Programmirovanie na yazyke Pascal M Mir 1982 s 295 Testirovanie i verifikaciya