Кіріспе

Компьютерлік бағдарламаның дұрыстығын тексеру ережелері

Хоар логикасы (Флойд-Хоар логикасы немесе Хоар ережелері деп те аталады) – компьютерлік бағдарламалардың дұрыстығын қатаң түрде дәлелдеуге арналған логикалық ережелер жиынтығы бар формалды жүйе. Оны 1969 жылы британдық компьютер ғалымы және логик Тони Хоар ұсынды, ал кейіннен Хоар және басқа зерттеушілер оны жетілдірді. Алғашқы идеялар Роберт В. Флойдтың ағын диаграммалары үшін ұқсас жүйені жариялаған жұмысымен байланысты.

Үш есе көп

Хоар логикасының негізгі ерекшелігі – Хоар үштігі. Үштік кодтың орындалуы есептеу күйін қалай өзгертетінін сипаттайды. Хоар үштігі мынадай формада болады:

мұнда және – талаптар, ал – команда. талапты алғы шарт деп, ал – кейінгі шарт деп атайды: алғы шарт орындалғанда команданы орындау кейінгі шартты қамтамасыз етеді. Талаптар – предикат логикасындағы формулалар. Хоар логикасы қарапайым императивті бағдарламалау тілінің барлық құрылымдары үшін аксиомалар мен логикалық қорытындылар ережелерін ұсынады. Хоардың бастапқы мақаласындағы қарапайым тіл ережелеріне қоса, Хоар және көптеген басқа зерттеушілер одан бері басқа тілдік құрылымдар үшін де ережелерді әзірледі. Параллелизм, процедуралар, секірулер және көрсеткіштер үшін ережелер бар.

Ішінара және толық дұрыстығы

Стандартты Хоар логикасын қолдану арқылы тек ішінара дұрыстығын дәлелдеуге болады. Толық дұрыстығын қосымша тоқтату талап етеді, оны жеке немесе While ережесінің кеңейтілген нұсқасымен дәлелдеуге болады. Осылайша, Хоар үштігін түсінудің интуитивті жолы: егер жай-күй орындалу алдында сақталса, онда орындалғаннан кейін де сақталады, немесе орындалу тоқтамайды. Соңғы жағдайда "кейін" деген ұғым болмайды, сондықтан кез келген оператор болуы мүмкін. Шындығында, орындалу тоқтамайтынын көрсету үшін оператор жалған болуы мүмкін. "Тоқтату" осы жерде және мақаланың қалған бөлігінде есептеудің аяқталуын білдіреді, яғни шексіз циклдардың болмауын білдіреді; ол бағдарламаны мерзімінен бұрын тоқтатуға әкелетін орындалу шектерінің бұзылуын (мысалы, нөлге бөлу) білдірмейді. 1969 жылғы мақаласында Хоар тоқтатудың тар ұғымын қолданды, ол орындалу шектерінің бұзылуын да қамтыды, бірақ тоқтатудың кең ұғымын қалауын білдірді, себебі ол нақтылауларды орындалудан тәуелсіз етеді:

Бос мәлімдеме аксиомасының схемасы

Бос оператор ережесі оператор бағдарламаның күйін өзгертпейтінін күзеді, демек, оператордан бұрын рас болған нәрсе, одан кейін де рас болады.