Pavol Jozef afárik University in Ko²ice Faculty of Science. Testovanie a verikácia programov Floydova metóda

Līdzīgi dokumenti
Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Publiskā apspriešana

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

PowerPoint Presentation

Tirgus dal bnieka nosaukums: Ieguld jumu p rvaldes akciju sabiedr ba "Finasta Asset Management" Kods: 100 Invalda konservativais ieguldijumu plans 1.

Nevienādības starp vidējiem

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

AGV / Apaļie gaisa vadi Izmērs AL90 / Apaļo gaisa vadu līkums 90 o Izmērs

7. Tēma: Polinomi ar veseliem koeficientiem Uzdevums 7.1 (IMO1982.4): Prove that if n is a positive integer such that the equation x 3 3xy 2 + y 3 = n

A9R1q9nsan_v63m4l_2ow.tmp

Valkas novada pašvaldības informatīvs izdevums N Nr. 66 (4) 2015.gada 29.aprīlī umura ievadsleja A r Lielo talku noslēdzies aprīlis. Valkas novada ied

Title

2008. gada 5. decembris Salaspils Vēstis Salaspils novada domes bezmaksas izdevums Nr.23 (453) Nr.23 (453) Šajā numurā: Vai star

Result Lists|VYSLEDKY BAMU

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

IEGULDĪJUMS TAVĀ NĀKOTNĒ Projekts Nr. 2009/0216/1DP/ /09/APIA/VIAA/044 NESTRIKTAS KOPAS AR VĒRTĪBĀM PUSGREDZENĀ UN MONĀDES PĀR KATEGORIJU Jāni

KURSA KODS

Nakts_labirints.xlsx

3D_modeli_atskaite.pages

Nr.p.k. Neapbūvētu pašvaldības nekustamo īpašumu pilsētā, kuri var tikt nodoti nomai vai atsavināšanai, saraksts Zemes vienības adrese Statuss Kadastr

COMBO LIFE

APSTIPRINU VAS Starptautiskā lidosta Rīga Valdes priekšsēdētāja Ilona Līce (vārds, uzvārds) [personiskais paraksts] ) GROZĪJUMI Nr.1 Cenu a

Hyundai i20 Modelis i20 Hatchback i20 Hatchback i20 Hatchback Komplektācija 1.2 Mpi ISG Comfort 5MT 75 zs 1.2 Mpi ISG Comfort 5MT 75 zs 1.2 Mpi ISG Co

KURSA KODS

Riski: identificēšana un mērīšana

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Red button

INOVATĪVI RISINĀJUMI, JAUNI PRODUKTI UN PATĒRĒTĀJU IZVĒLE ZIVJU PRODUKTU KLĀSTĀ Aina Afanasjeva Direktore, Starptautiskā organizācija Eurofish Konfere

Microsoft Word - Noteikumi_Dizaina pakalpojumi_

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Kablolar ve Adaptörler Ürün Marka Stok Fiyat INCA IPW-15TP POWER KABLO 1,5 METRE Inca 10+ 2,10 USD INCA IPR-01 USB 2.0 YAZICI KABLOSU+ASKILI (1.5MT) I

Kablolar ve Adaptörler Ürün Marka Stok Fiyat INCA IMHD-15T HDMI KABLO 1,8 METRE Inca 1 3,15 USD DIGITUS USB UZATMA KABLOSU 1.8MT(AK S) Digi

32repol_uzd

2.2/20 IEGULDĪJUMS TAVĀ NĀKOTNĒ! Eiropas Reģionālās attīstības fonds Prioritāte: 2.1. Zinātne un inovācijas Pasākums: Zinātne, pētniecība un at

Microsoft PowerPoint - RP_ _TV_zinojums_n.akti.ppt [Compatibility Mode]

Microsoft PowerPoint - rektoru_padome_09_09_2011.ppt [Compatibility Mode]

Sociālo tīklu neizmērojamais spēks

LATVIJAS REPUBLIKA NAUKŠĒNU NOVADA PAŠVALDĪBA Reģ. Nr Pagasta namā, Naukšēnos, Naukšēnu pagastā, Naukšēnu novadā, LV-4244 tālr./fakss 6426

55repol_atr

ARI-VI SIA Pērnavas iela 35, Rīga Tālr Fakss Riteņu balansēšanas atsvariņu piedāvājums Mc 30 Uzsitamie

Microsoft Word - du_5_2005.doc

Pētījums Nr Datu avotu analīzes un sasaistes rīks Līgums Nr. L-KC Testēšanas rezultātu apraksts Vadošais pētnieks Zinātniskā virziena v

v, m/s Projekta numurs: /16/I/002 Nacionāla un starptautiska mēroga pasākumu īstenošana izglītojamo talantu attīstībai 10 1 Velobraukšanas sace

1

Informatīvo spektra joslu izvēle hiperspektrālo attēlu klasifikācijai

Latvijas Universitāte Fizikas un matemātikas fakultāte Matemātiskās analīzes katedra Inese Bula HAOSS LEKCIJU KONSPEKTS 2008

Imants Gorbāns. E-kursa satura rādītāja izveide IEGULDĪJUMS TAVĀ NĀKOTNĒ Imants Gorbāns E-kursa satura rādītāja izveide Materiāls izstrādāts ESF Darbī

1

E COVER.indd


8.TEMATS RIŅĶI UN DAUDZSTŪRI Temata apraksts Skolēnam sasniedzamo rezultātu ceļvedis Uzdevumu piemēri M_10_SP_08_P1 Ar riņķa līniju saistītie leņķi Sk

Eiropas Parlamenta un Padomes Regula (ES) 2019/ (2019. gada 17. aprīlis) par ENISA (Eiropas Savienības Kiberdrošības aģentūra) un par informācijas un

KURSA KODS

48repol_uzd

suzuki vitara izpardošana-2

Logatherm WPS 10K L A ++ A + A B C D E F G A ++ A B C D E F G A 51 db kw kw kw db /2013

ISSN COMPUTER SCIENCE DATORZINĀTNE TECHNOLOGIES OF COMPUTER CONTROL DATORVADĪBAS TEHNOLOĂIJAS DESEASE DIAGNOSTICS BASED ON COMPUTE

Idejas radošiem risin jumiem T rvete - mūsu m jas šodien un r t! 2014.gada 3.-4.decembrī, balstoties uz Britu padomes metodoloģiju pilsētvides jautāju

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Bakalaura studij

Saturs Sākums Beigas Atpakaļ Aizvērt Pilns ekrāns 1 DAUGAVPILS UNIVERSITĀTE Dabaszinātņu un matemātikas fakultāte Matemātikas katedra Maǧistra studiju

PALĪGS SKOLĒNIEM UM STUDENTIEM

FORD TRANSIT/TOURNEO COURIER Spēkā no Dzinējs, transmisija Aprīkojums Dzinēja tips CO 2 (g/km) Cena, EUR ar PVN Atlaide Akcijas cena, EUR

series_155

Microsoft Word - PASCAL_gramata_3.doc

Microsoft PowerPoint - DS.AM.01.ppt

TAX SYSTEM ADMINISTRATION DEVELOPMENT IN LATVIA NODOKĻU SISTĒMAS ADMINISTRĒŠANAS ATTĪSTĪBA LATVIJĀ A. Pavra, L.Vasiļjeva Atslēgas vārdi: nodokļi, efek

LATVIJAS REPUBLIKA LIEPĀJAS PILSĒTAS PAŠVALDĪBAS AĢENTŪRA "LIEPĀJAS SABIEDRISKAIS TRANSPORTS" Jūrmalas iela 23, Liepāja, LV-3401, tālrunis , f

Rīga, gada 31.oktobris VSIA "Latvijas Vides, ģeoloģijas un meteoroloģijas centrs" Starpperiodu saīsinātais finanšu pārskats 2018.g. 01.janvāris

CURRICULUM VITAE

Slide 1

Problem Your smartwatch doesn t turn on Your smartwatch isn t detected by a smartphone Your smartwatch is detected by a smartphone, but fails to conne

Deleg e s anas li gums Pielikums Cēsu novada domes sēdes lēmumam Nr.340 Cēsi s, 2016.gada decembri Ce su novada pas valdi ba, reg istra cij

SI00182O, Betriebsanleitung/Instruction manual LVL-MXX

Transkripts:

Pavol Jozef afárik University in Ko²ice Faculty of Science Testovanie a verikácia programov Floydova metóda

Floydova metóda Pri dokazovaní správnosti programov je potrebné ma ²pecikované: a) programovací jazyk, v ktorom budú programy zapísané; b) ²pecika ný jazyk na vyjadrenie vstupnej a výstupnej podmienky a al²ích vz ahov, ktoré platia medzi hodnotami premenných pri vykonávaní príkazov daného programu. Na splnenie na²ich cie ov nám posta í predikátový po et 1. rádu ako ²pecika ný jazyk a za programovací jazyk v tejto kapitole je zvolený jazyk vývojových diagramov JO.

Floydova metóda Nasledujúce rysy dôkazu sú charakteristické pre celú metódu: A) K ú om k dôkazu korektnosti programov obsahujúcich cykly je nájdenie vhodnej podmienky, ktorú sp ajú dáta pri kaºdom prechode pevne zvoleným bodom cyklu (induktívna podmienka, invariant cyklu). B) Dôkaz je lenený na dve etapy: - v 1. etape sa dokáºe, ºe pokia program pre dané vstupné dáta skon í, vydá správny výsledok; - v 2. etape sa dokáºe, ºe program vºdy skon í. Induktívne podmienky vlastne zachytávajú my²lienky, na základe ktorých je program vytvorený. Ich nájdenie je vecou invencie. (Toto je celkom aºké.

Floydova metóda Floydova metóda poskytuje len nástroj na overenie, ºe program neobsahuje chybu alebo logickú medzeru. Niektoré jej postupy je moºné algoritmizova, ako uvidíte v nasledujúcom popise. Prv neº prejdeme k popisu Floydovej metódy, ktorá je tieº nazývaná metódou induktívnych podmienok, denujeme pojem "správny program"v závislosti od vstupnej a výstupnej podmienky.

Floydova metóda V al²om budeme pouºíva nasledovné ozna enie: x - vstupný vektor, ktorý nadobúda vstupné hodnoty a po as výpo tu sa nemení, ȳ - vektor programu, ktorý obsahuje medzivýsledky výpo tu programu, z - výstupný vektor, v ktorom sú uloºené výstupné hodnoty v okamihu ukon enia výpo tu programu.

Floydova metóda V prípade, ºe v príkladoch bude zrejmé, ºe x, ȳ, alebo z sú 1-dimenzionálne, budeme písa x,y,z. D x,dȳ,d z - deni né obory vektorov x,ȳ, z. P ( x) - predikát vyjadrujúci vstupnú podmienku, t.j. popisujúci vlastnosti tých prvkov z D x, ktoré môºu by pouºívané ako vstupné hodnoty programu; Q( x, z) - predikát vyjadrujúci výstupnú podmienku, t.j. popisujúci vz ah, ktorý musia sp a výstupné hodnoty vzh adom ku vstupným v okamihu ukon enia výpo tu. Π - program v nejakom programovacom jazyku.

Floydova metóda Denícia: a) Ak program Π skon í výpo et pre v²etky údaje spl ajúce P ( x) (t.j. nadobúdajúce hodnotu true), tak budeme hovori, ºe program kon í. b) Ak program Π pre v²etky vstupné údaje spl ajúce P ( x), pre ktoré skon í svoj výpo et, dá výsledky spl ajúce predikát Q( x, z), potom Π budeme nazýva iasto ne správnym programom. c) Program, ktorý pre v²etky vstupné údaje, spl ajúce predikát P ( x), skon í výpo et s výsledkom spl ajúcim predikát Q( x, z), budeme nazýva správnym programom (tieº budeme pouºíva pojem totálne správny program na odlí²enie od iasto ne správny program).

Floydova metóda Denícia: d) Verikova program Π (dokáza, ºe program Π je správny) vzh adom na vstupný predikát P ( x) a výstupný predikát Q( x, z) znamená dokáza, ºe program Π je správny vzh adom na predikáty P ( x) a Q( x, z).

Floydova metóda Vidíme, ºe správny program je taký, ktorý je iasto ne správny a kon í, a preto mnohokrát dôkaz toho, ºe program je správny, je rozdelený na dve asti, a síce na dôkaz, ºe: a) program je iasto ne správny, b) program kon í. Toto rozdelenie zjednodu²uje dôkaz v tom zmysle, ºe pri dokazovaní iasto nej správnosti sa neanalyzuje, i výpo et kon í a pri dôkaze, ºe program kon í, sa neanalyzuje správnos výsledkov. Treba si uvedomi, ºe pri dokazovaní iasto nej správnosti je to, ºe program kon í, predpokladom, nie dôsledkom.

Floydova metóda Opodstatnenos existenie rôznych metód pre dokazovanie správnosti programov, je dôsledkom výsledku známeho z teórie algoritmov ako Riceova veta, ktorú je moºné vyjadri takto: Ani pre jednoduché ²pecika né a programovacie jazyky neexistuje algoritmus, ktorý by dokázal o ubovo nom programe zisti, i je správny vzh adom na dané ²pecikácie.

Floydova metóda Jazyk vývojových diagramov Obsahuje nasledujúcich pä druhov príkazov: 1. tartovací príkaz Start y := f(x) kde f je totálna funkcia f : Dx Dy.

Floydova metóda 2. Prira ovací príkaz y := g(x, y) kde g je totálna funkcia g : Dx Dy Dy.

Floydova metóda 3. Testovací príkaz + t(x, y) kde t(x, y) je totálny predikát nad oborom Dx Dy

Floydova metóda 4. Cie ový príkaz z := h(x, y) Stop kde h je totálna funkcia h : Dx Dy Dz.

Floydova metóda 5. Spojovací príkaz (spojka) - spája 2 vetvy programu do jednej. o Denícia: Programom v jazyku vývojových diagramov budeme nazýva orientovaný graf vytvorený spojením vy²²ie uvedených príkazov pomocou orientovaných spojníc tak, ºe ²tartovací príkaz je pouºitý práve jedenkrát a kaºdý testovací a prira ovací príkaz leºí na aspo jednej ceste od ²tartovacieho príkazu k cie ovému.

Floydova metóda Vo vrcholoch grafu sú umiestnené príkazy tvaru 1.-5., pri om stupne jednotlivých vrcholov sú práve také, ako je uvedené v denícii príkazov jazyka. Poradie vykonávania sa príkazov je ur ené spojnicami medzi príkazmi. Cyklus je súvislý kone ný podgraf programu, v ktorom z kaºdého vrcholu jediná hrana vychádza a do kaºdého vrcholu jediná hrana vchádza. Cesta programom je postupnos príkazov za ínajúca vstupným a kon iaca výstupným príkazom, na ktorej kaºdý príkaz Π1 je nasledovaný takým príkazom Π2, ktorý je spojený s príkazom Π1 orientovanou hranou, ktorá vedie z Π1 do Π2. Úsek cesty programom budeme nazýva parciálna cesta programu, alebo stru ne cesta.

Floydova metóda Z programátorského h adiska je zaujímavou trieda ²truktúrovaných programov - tieto programy sú jednak preh adne zapísané, jednak analýza ich vlastností je jednoduch²ia neº analýza vlastností v²etkých programov. Triedu ²truktúrovaných programov je moºné denova rekurzívne: a) Prira ovací príkaz je segment: Za segment povaºujeme aj prázdny segment t.j., ktorý neobsahuje ºiadne príkazy. b) Nech S 1, S 2,..., S n, n 2 sú segmenty, p( x, ȳ) je predikát, potom segmentami sú kon²trukcie tvaru na obr. niº²ie: c) Vývojový diagram je ²truktúrovaný, ak je vytvorený vstupným príkazom, postupnos ou neprekrývajúcich sa segmentov a výstupným príkazom.

Floydova metóda Obr.: Tvary segmentov.

Floydova metóda Príklad: Na obr. 2. je uvedený program v jazyku vývojových diagramov. O tomto programe sa v dal²om presved íme, ºe pre dané prirodzené íslo x, x > 1, dáva odpove true, ak íslo x je dokonalé (tj. x = {t : 0 < t x 2 t/x}), inak dáva odpoved false. V tomto programe x = (x), ȳ = (y 1, y 2, y 3, y 4 ), z = (z), D x = N +, N + = N {0}, Dȳ = N N N {true, false}, D z = {true, false}.

Floydova metóda

Floydova metóda Príkaz (y 1, y 2, y 3, y 4 ) := (x div 2, 1, 2, false) znamená sú asné nahradenie hodnoty y 1 hodnotou x div 2, hodnoty y 2 hodnotou 1, hodnoty y 3 hodnotou 2 a hodnoty y 4 hodnotou false. Vo v²eobecnosti, príkaz (y 1, y 2,... y n ) := (g 1 (x, y), g 2 (x, y),... g n (x, y)) znamená sú asné nahradenie hodnôt premenných y i hodnotami g i (x, y), pre 1 i n, teda v²etky funkcie g i sú vyhodnotené skôr, neº je zmenená hodnota ktorejko vek zloºky vektora ȳ. V prípade, ºe pôjde o zmenu jednej zloºky vektora ȳ vypí²eme v príkaze len túto zmenu. ahko sa moºno presved i, ºe tento program je ²truktúrovaný.

Sémantika príkazov jazyka vývojových diagramov Vrá me sa na chví u k dôkazu správnosti Mc Carthyho programu. Výpo et sme sledovali pozd º ciest, na ktorých sa hodnoty premenných menili; vºdy sme sledovali jednu zvolenú cestu. Intuitívne sme predpokladali zmeny hodnôt premenných, ktoré sú spôsobené pozd º skúmanej cesty a vyuºijúc toho, ºe vieme význam (sémantiku) príkazov, sme urobili dôkaz správnosti. Je teda zrejmé, ºe medzi premennými v programe platia ur ité vz ahy pred kaºdým príkazom a aj po jeho vykonaní. Tieto vz ahy vyjadrujeme vo forme tvrdení.

Sémantika príkazov jazyka vývojových diagramov Denícia: Tvrdenie, ktoré platí pred príkazom, nazývame predpoklad; tvrdenie, ktoré platí bezprostredne po jeho vykonaní, budeme nazýva dôsledok. Predpoklad aj dôsledok budeme vyjadrova pomocou predikátu R( x, ȳ) a funkcie r( x, ȳ) : D x Dȳ Dȳ. V nich sa odrazia zmeny, ktoré nastali vykonaním poºadovanej postupnosti príkazov. Napríklad, uvaºujme príkaz P P y 3 := y 3 + 1

Sémantika príkazov jazyka vývojových diagramov Zvo me r( x, ȳ) = r(x, y 1, y 2, y 3, y 4 ) = (y 1, y 2, y 3, y 4 ). Ak po vykonaní príkazu PP platí, ºe r( x, ȳ) = (y 1, y 2, y 3, y 4 ), potom pred vykonaním príkazu PP muselo plati r( x, ȳ) = (y 1, y 2, y 3 + 1, y 4 ), pretoºe hodnota y 3 v príkaze PP bola zvý²ená o 1. Uvedenú skuto nos zaznamenáme nasledujúcim spôsobom: P P......... r(x, y 1, y 2, y 3 + 1, y 4 ) y 3 := y 3 + 1......... r(x, y 1, y 2, y 3, y 4 )

Sémantika príkazov jazyka vývojových diagramov Uvaºujme o al²om príkaze v programe o dokonalom ísle P T + y 3 y 1

Sémantika príkazov jazyka vývojových diagramov Aby výpo et pre²iel po ceste +, musí by splnená podmienka y 3 y 1 a táto musí by zahrnutá v predikáte, ktorý zaru uje, ºe výpo et bude vykonávaný práve pozd º tejto cesty. Ak uvaºujeme, ºe bezprostredne po vykonaní príkazu PT platí predikát R( x, ȳ), potom pred jeho vykonaním muselo plati R( x, ȳ) y 3 y 1. Predikát R( x, ȳ) je moºné vytvori na základe predikátov, ktoré sa vyskytli na danej parciálnej ceste programu a funkcia r( x, ȳ) musí vyjadrova zmeny obsahov premenných, ktoré boli vykonané v prira ovacích príkazoch.

Sémantika príkazov jazyka vývojových diagramov Aby dôkaz správnosti programu mohol by vykonaný formálne, je potrebné popri syntaxi jazyka vývojových diagramov ma denovanú sémantiku v²etkých príkazov, pomocou ktorej je moºné vyjadri vz ahy medzi premennými programu podobne, ako sme uvaºovali u prira ovacieho a testovacieho príkazu. Nasledujúcich ²es moºností poskytuje návod k tomu, ako vytvára, resp. upravova predikáty R a funkcie r tak, aby to bolo konzistentné s významom jednotlivých príkazov.

Sémantika príkazov jazyka vývojových diagramov Obr.: Úprava predikátov a funkcií.

Sémantika príkazov jazyka vývojových diagramov Obr.: Úprava predikátov a funkcií.

Sémantika príkazov jazyka vývojových diagramov Napríklad, vo vybranom úseku programu pre dokonalé ísla je moºné priradi funkcie a predikáty tak, ako je znázornené na obr.

Sémantika príkazov jazyka vývojových diagramov Akým spôsobom sme dospeli k funkciám a predikátom uvedeným na tomto obrázku? Sledovaním tohto segmentu programu zdola nahor a vyjadrením formálnej sémantiky tak, ako to bolo uvedené vy²²ie. Segmenty programov bez cyklov je moºné pomerne jednoducho popísa pomocou sémantických pravidiel. Otázka je, o urobi s cyklami? V priebehu dôkazu je potrebné roz leni program na elementárne segmenty bez cyklov a dôkazy robi pre tieto segmenty.

Program je iasto ne správny R. V. Floyd navrhol robi dôkaz iasto nej správnosti programu ktorý je napísaný v jazyku vývojových diagramov, v nasledujúcich troch krokoch: 1. krok: Vo ba deliacich bodov programu. 2. krok: Priradenie induktívnych podmienok deliacim bodom. 3. krok: Vytvorenie verika ných podmienok k verika ným cestám.

Program je iasto ne správny Vo ba deliacich bodov programu. Deliace body sú volené tak, aby spl ovali nasledujúce 2 podmienky: po iato ný a koncový bod sú deliacimi bodmi; kaºdý cyklus programu obsahuje aspo jeden deliaci bod.

Program je iasto ne správny Priradenie induktívnych podmienok deliacim bodom. Ku kaºdému deliacemu bodu priradi induktívnu podmienku. Induktívna podmienka je vlastne predikát charakterizujúci vz ah medzi hodnotami premenných v tomto bode. Pritom po iato nému bodu je priradená vstupná podmienka P (x); v koncovom bode je induktívnou podmienkou výstupná podmienka Q(x, z); deliacemu bodu X je priradená induktívna podmienka P X (x, y), ktorá je splnená vºdy, ke sa riadenie výpo tu programu dostane do bodu X.

Program je iasto ne správny Vytvorenie induktívnych podmienok je naj aº²ou as ou dôkazu, ktorá nie je algoritmizovate ná. Tu sa vlastne vyjadruje podstata algorimu a je potrebné jeho hlboké pochopenie. Najprirodzenej²ie je zapísanie induktívnej podmienky sú asne s písaním programu, pretoºe programátor kon²truuje program práve na základe predstavy o tom, akú vlastnos majú ma hodnoty premenných.

Program je iasto ne správny Vytvorenie verika ných podmienok k verika ným cestám. Zvolené deliace rozde ujú program na nieko ko úsekov, z ktorých kaºdý predstavuje cestu. Verika ná cesta je cesta, ktorá za ína aj kon í deliacim bodom a medzi nimi neleºí ºiadny deliaci bod. Kaºdá verika ná cesta je kone ná, pretoºe kaºdý cyklus obsahuje deliaci bod. Program je pokrytý verika nými cestami, ak kaºdý príkaz programu sa nachádza na aspo jednej verika nej ceste.

Program je iasto ne správny Pretoºe program má kone ný po et príkazov, po et verika ných ciest je kone ný. Z jedného deliaceho bodu programu môºe vychádza viacej verika ných ciest. Napríklad, v Mc Carthyho programe z bodu B vychádzajú dve cesty kon iace v bode B, a síce B B a B + B. Ku kaºdej verika nej ceste α z bodu X do bodu Y je vytvorená verika ná podmienka (t. j. formula ur itého tvaru) a je potrebné dokáza, ºe v²etky verika né podmienky sú pravdivé.

Program je iasto ne správny Verika ná podmienka musí obsahova vyjadrenie toho, ºe ak v bode X platí induktívna podmienka P X (x, y) pre ur té hodnoty x, y (také, ºe výpo et bude riadený po verika nej ceste α), potom po vykonaní príkazov na ceste α z bodu X do bodu Y platí P Y (x, y), o je moºné vyjadri nasledovne x y [P X (x, y) R α (x, y) P Y (x, r α (x, y))] kde R α (x, y) je predikát, ktorý zaru uje, ºe výpo et z bodu X do bodu Y bude riadený po verika nej ceste α a r α (x, y) je funkcia, ktorú program po íta po as prechodu z bodu X do bodu Y.

Program je iasto ne správny Sú dva ²peciálne prípady: Ak X je po iato ný bod, potom verika ná podmienka má tvar x [P (x) R α (x, y) P Y (x, r α (x, y))] Ak Y je koncový bod, potom verika ná podmienka má tvar x y [P X (x, y) R α (x, y) Q(x, z)]

Program je iasto ne správny V komentári ku príkladu o dokonalom ísle sme uviedli, ºe predikát a funkcia r α boli získané sledovaním príkazov uvedeného segmentu programu zdola nahor. Táto metóda sa nazýva metóda spätných substitúcií a formálne ju môºeme vyjadri takto:

Program je iasto ne správny Predpokladajme, ºe kon²truujeme predikát R α (x, y) a funkciu r α (x, y) pre cestu z deliaceho bodu X do deliaceho bodu Y. V bode Y poloºíme R α (x, y) : true, t. j. vºdy splnený predikát; r α (x, y) : y, t. j. identická funkcia premenných y. Potom postupujeme smerom k bodu X a pri kaºdom príkaze na tejto ceste aplikujeme Floydove sémantické pravidlá. Posledné získané R α a r α v bode X sú h adané R α (x, y) a r α (x, y), ktoré charakterizujú cestu α a budú pouºité pri vytvorení verika nej podmienky pre cestu α z bodu X do bodu Y.

Program je iasto ne správny Príklad: Dokáºeme iasto nú správnos programu, ktorého výstupom je z = true, ak vstupná hodnota je dokonalé íslo, inak z = false. ƒíslo x je dokonalé íslo, ak sú et v²etkých jeho kladných delite ov t, 0 < t x div 2 je rovný x, t. j. x = Σ{t : 0 < t x div 2 t x}.

Program je iasto ne správny Dokáºeme, ºe tento program je iasto ne správny vzh adom na vstupnú podmienku P (x) : x N x > 1 a výstupnú podmienku Q(x, z) : z = (x = Σ{t : 0 < t x div 2 t x}). Na nasledujúcom obrázku je znázornený tento program spolu s deliacimi bodmi. Jediným deliacim bodom cyklu je bod B. V bode B platí induktívna podmienka P B (x, y) : y 2 = Σ{t : 0 < t y 3 t x}.

Program je iasto ne správny

Program je iasto ne správny Tento program je moºné pokry ²iestimi verika nými cestami, ktoré spl ujú poºadované podmienky. Tieto cesty ozna íme takto: a) A + B, t. j. α 1, b) A B, t. j. α 2, c) B + +B, t. j. α 3, d) B + B, t. j. α 4, e) B +C, t. j. α 5, f) B C, t. j. α 6, Metódou spatných substitúcií ur íme predikát R a funkciu r pre kaºdú z uvedených ciest.

Program je iasto ne správny Obr.: Verika ná cesta α 1, t. j. A + B.

Program je iasto ne správny Obr.: Verika ná cesta α 2, t. j. A B.

Program je iasto ne správny Obr.: Verika ná cesta α 3, t. j. B + +B.

Program je iasto ne správny

Program je iasto ne správny

Program je iasto ne správny

Program je iasto ne správny Pripome me si vstupnú podmienku P (x) : x N x > 1 a výstupnú podmienku Q(x, z) : z = (x = Σ{t : 0 < t x div 2 t x}). V bode B platí induktívna podmienka P B (x, y) : y 2 = Σ{t : 0 < t y 3 t x}. Teraz skon²truujeme verika né podmienky.