Pealkiri

Suurus: px
Alustada lehe näitamist:

Download "Pealkiri"

Väljavõte

1 TARTU ÜLIKOOL Arvutiteaduse instituut Informaatika õppekava Siiri Saar Teek predikaatarvutuse väljendamisülesannete lahenduste kontrollimiseks Bakalaureusetöö (9 EAP) Juhendaja: Reimo Palm Tartu 2017

2 Teek predikaatarvutuse väljendamisülesannete lahenduste kontrollimiseks Lühikokkuvõte: Käesoleva bakalaureusetöö eesmärk on implementeerida teek predikaatarvutuse väljendamisülesannete lahenduste kontrollimiseks. Teeki kuuluvad meetodid, mis võimaldavad kontrollida, kas sisend, s.t aritmeetika signatuuris σ = <0, 1 +, * => kujutatud predikaatarvutuse valem, on korrektsel kujul ja kas valem väljendab etteantud predikaati. Valemi süntaktilise korrektsuse hindamiseks kontrollitakse muuhulgas järgnevat: valem sisaldab vaid etteantud signatuuri kuuluvaid konstant-, funktsionaal- ja predikaatsümboleid, valemis esinevad sulud on tasakaalus, lõppvalemis kasutatavad abipredikaadid on eelnevalt defineeritud, abipredikaadi defineerimisel ei kasutata predikaadi tähises vabu muutujaid, mida abipredikaadi valemis ei esine ja vastupidi abipredikaadi valemis ei esine vabu muutujaid, mida tähises ei ole välja toodud. Selleks, et kontrollida, kas valem väljendab etteantud predikaati, kasutatakse käesolevas töös kahte meetodit. Tõesuspuu meetodiga üritatakse kindlaks teha, kas sisestatud valem ja õige valem on samaväärsed, teisisõnu, kas nende kahe valemi ekvivalents on samaselt tõene. Kui tõesuspuu meetod ei anna määratud aja jooksul kindlat tulemust, võetakse kasutusele meetod, mis kontrollib, kas kahe valemi tõeväärtused langevad kokku suurel lõplikul hulgal. Kuigi valemite samaväärsuse kontroll on algoritmiliselt mittelahenduv, võimaldavad arendatud teegi meetodid anda kindla vastuse laia alamhulga ülesannete korral, tõhustades seega praegust predikaatarvutuse väljendamisülesannete lahenduste kontrollimise töökorraldust Tartu Ülikooli matemaatilise loogika kursustel. Võtmesõnad: Matemaatiline loogika, predikaatarvutus, tõesuspuu, signatuur, valemite samaväärsus, vabad ja seotud muutujad, ekvivalents, samaselt tõene valem, üldisus- ja olemasolukvantor CERCS: P110 (Matemaatiline loogika, hulgateooria, kombinatoorika), P175 (Informaatika, süsteemiteooria) 2

3 Library for verifying the solutions of predicate calculus Abstract: The goal of this bachelor thesis is to implement a library for verifying the solutions to the provided sentences of the predicate calculus. The library is intended to be used in automatizing the examination of students' answers in the predicate calculus courses in Tartu Ülikool. At present, the lab instructors check the answers manually. The implemented library contains methods that verify the user input from two aspects the input is syntactically correct and it expresses the given sentence. Input is deemed syntactically correct if it contains the constant, functional and predicate symbols that are permitted with the arithmetic signature of σ = <0, 1 +, * =>, a balanced amount of brackets and the helper predicates defined beforehand. For helper predicates, the program also checks the correct usage of free variables, defined as follows all free variables used in the predicate are provided as arguments to the predicate and all the predicate's arguments are free variables in the predicate. To check if the user provided formula is equivalent to a correct formula, the program deploys two methods. First, it applies a method called the truth tree, which consists in analysing the logical structure of the equivalence formula, made up of the user input and the correct answer. The second method consists of evaluating the two formulas with a limited set of natural numbers and checking if the formulas' truth values coincide. Verifying the equivalence of two formulas is a problem that is known to be algorithmically unsolvable. The two selected methods complement each other the truth tree method allows determining the equivalence of two formulas, while the brute-force evaluation allows determining their non-equivalence. Keywords: Mathematical logic, predicate calculus, truth tree, signature, equivalence, free and bound variables, valid formula, universal quantification, existential quantification. CERCS: P110, P175 3

4 Sisukord 1 Sissejuhatus Töö eesmärk Lahendatavad väljendamisülesanded Predikaatarvutuse mõisted Sisendi töötlemine Vigadest teavitamine Kasutatavad meetodid Tõesuspuu Meetodi kirjeldus Elementaarsammud Näide Implementatsiooni kirjeldus Tõesuspuu piirangud Tõesuspuu meetodi kokkuvõte Väärtuste väljaarvutamise meetod Meetodi kirjeldus Implementatsiooni kirjeldus Testandmed ja testimise tulemused Väide Väide Väide Väide Teegi kirjeldus Näidisveebirakendus Ülevaade predikaatarvutuse veebiprogrammidest A Predicate Logic Calculator Tree Proof Generator A Linear Logic Prover Kokkuvõte Edasiarendamise võimalused Lisad

5 12.1 Grammatika fail Viidatud kirjandus

6 1 Sissejuhatus Predikaatarvutust õpetatakse Tartu Ülikooli informaatika õppekava tudengitele ainetes Graafid ja matemaatiline loogika (MTAT ) ja Sissejuhatus matemaatilisse loogikasse (MTAT ). Aines raames toimuvates praktikumides lahendavad tudengid predikaatloogika ülesandeid, mis seisnevad etteantud väidete väljendamises predikaatarvutuse valemitega. Tudengite kirjalikult esitatud lahendusi kontrollivad praktikumijuhendajad käsitsi. Ülesannete lahenduste kontrollimisel käsitsi on mitmeid puudusi. Selline töökorraldus on aeganõudev ja veaohtlik. Tudengitele antav tagasiside hilineb ning palju juhendajate ressurssi kulub mitte niivõrd sisuliste kuivõrd süntaktilist liiki vigade parandamisele. Viimased hõlmavad vigu, nagu valemis esinevad üleliigsed või puuduvad sulud ning signatuuri mittekuuluvate sümbolite kasutamine, mille kontrollimist on võimalik automatiseerida. Praktikumijuhendajate kogemus näitab, et väidete väljendamine valmistab paljudele tudengitele raskusi. Teemast paremini aru saamiseks oleks tudengitel vaja harjutada rohkem, kui praktikumijuhendajad käsitsi kontrollida jõuavad. Seetõttu seatakse käesoleva bakalaureusetöö eesmärgiks luua programm, mis võimaldab tudengitel automaatselt kontrollida oma lahendusi. Kahe valemi, s.t. tudengi sisestatud valemi ja õige valemi samaväärsuse kontroll on algoritmiliselt mittelahenduv probleem, mistõttu saab selle lahendamiseks kasutatud meetoditest oodata ainult osalisi tulemusi. Loodav programm vastab küsimusele, kas kaks valemit on samaväärsed, ühel järgnevatest viisidest jah, ei, ei tea. Seega ei asenda programm inimkontrollijat, kuid annab tudengitele võimaluse rohkemate ülesannetega harjutada ja pakub väärtuslikku tagasisidet. Käesolev kirjalik töö täiendab programmi jaoks loodud koodibaasi, andes teoreetilise ülevaate predikaatarvutuse olulisematest mõistetest, programmi sisendi oodatavast kujust ning sisendi töötlemise etappidest, alustades sisendi süntaktilise kontrolliga ja sisendi viimisega sisuliseks kontrollimiseks vajalikule kujule, lõpetades samaväärsuse hindamiseks rakendatavate meetoditega. Tutvustatakse kahe kasutatava meetodi valiku põhimõtet, implementatsiooni ja puudusi. Eraldi peatükk on pühendatud mõlema meetodi testimisele testandmetega, s.o aines MTAT tudengite esitatud kodutööde lahendustega. 6

7 2 Töö eesmärk Predikaatloogikat tutvustatakse Tartu Ülikooli informaatika tudengitele ainetes Graafid ja matemaatiline loogika ja Sissejuhatus matemaatilisse loogikasse, kus tudengitel tuleb muuhulgas väljendada etteantud väiteid, kasutades predikaatarvutuse süntaksit. Väidete väljendamine on ülesanne, mis valmistab praktikumijuhendajate kogemuse põhjal tudengitele raskusi ja mille lahendamisel teevad tudengid palju vigu. Teisalt, on töökorraldus, kus praktikumijuhendajad kontrollivad ülesannete lahendusi käsitsi, aeganõudev, veaohtlik ja toob paratamatult kaasa selle, et tagasiside andmine tudengitele hilineb. Selleks, et osaliselt automatiseerida ja tõhustada lahenduste kontrollimist, seatakse käesoleva bakalaureusetöö eesmärgiks implementeerida teek, mis verifitseerib järgnevat: kas tudengi sisestatud valem on korrektsel kujul, s.t. valemis kasutatakse ainult signatuuri kuuluvaid sümboleid, avavate ja sulgevate sulgude arv on tasakaalus, predikaat on nii mitme kohaline, kui ülesande püstitus ette näeb kas tudengi sisestatud valem ja õige valem on samaväärsed. Kuna kehtib, et valemid F ja G on samaväärsed parajasti siis, kui valem F G on samaselt tõene [4:64], on vaja näidata, et tudengi sisestatud valemi ja õige valemi ekvivalents on samaselt tõene. Valemite samaväärsuse kontrollimiseks kasutatakse kaht meetodit tõesuspuu meetodit ja väärtuste väljaarvutamise meetodit, mida tutvustatakse järgnevates peatükkides. Lisaks teoreetilisele ülevaatele valmib antud bakalaureusetöö raames: Java programmeerimiskeeles implementeeritud teek, mida on võimalik integreerida üldisesse, erinevaid kasutajarolle toetavasse arvutiülesannete lahendamise keskkonda Veebikeskkond, mis kasutab arendatud teeki. Veebikeskkond kuvab väiteid ja lubab kasutajal sisestada ja kontrollida valemeid. Kontrolli tulemusena selgub üks kolmest variandist: 1. sisestatud valem ja õige valem on samaväärsed 2. sisestatud valem ja õige valem ei ole samaväärsed 3. sisestatud valem ja õige valem võivad olla samaväärsed ( ei tea ). Süntaktiliselt mittekorrektse sisendi korral osutatakse esimesele mittesobivale sümbolile. Mittesamaväärse valemi korral esitatakse kontramudel vabade muutujate väärtustus, mil valem on väär. 2.1 Lahendatavad väljendamisülesanded Programm aktsepteerib valemeid, mis on väljendatud aritmeetika signatuuris σ = <0, 1 +, * =>. Valemi tõeväärtust uuritakse interpretatsioonil α, kus M α = N ja kõiki signatuuri sümboleid interpreteeritakse standardselt. Kasutajal on võimalik sümboliga ':=' defineerida abipredikaate ning neid lausearvutuse tehetega lõppvastusesse kombineerida. Abipredikaadi täpse lubatud kuju võib leida töö lõpus esitatud ANTLR4 grammatika failist. 7

8 Arendatud veebilehel on kasutajal võimalik lisada oma vastusesse ka kommentaare programm eemaldab sümbolite /* */ vahele jääva teksti enne vastuse edasiandmist teegi meetoditele. Näiteks väite Arv x on arvu y suurim algtegur väljendamisel aktsepteerib programm järgnevaid abipredikaate, ning viimasel real kujutatud lõppvastust: T(x,y):= a(x*a=y) A(x):= m n(x=m*n >m=1 n=1)& (x=1) /* x on algarv */ S(x,y):= k(x = y + k) /* x >= y */ T(x,y) & A(x) & u(t(u,y) & A(u) > S(x,u)) 8

9 3 Predikaatarvutuse mõisted Käesolevas peatükis antakse ülevaade olulisematest predikaatarvutuse mõistetest. Signatuur kolmik S = <C F P>, kus C on konstantsümbolite, F funktsionaalsümbolite ja P predikaatsümbolite hulk, millesse kuuluvaid elemente on lubatud predikaatarvutuse valemites kasutada. Näiteks predikaatarvutuse valem, mis on väljendatud signatuuris S = <0, 1 +, * =>, võib sisaldada ainult konstantsümboleid 0 ja 1, funktsionaalsümboleid + ja * ning predikaatsümbolit =. [4:52] Term signatuuris S term on avaldis, mille väärtuseks on indiviidide piirkonna element. Termid defineeritakse signatuuri S jaoks induktsiooniga järgnevate reeglite abil: 1. Iga indiviidmuutuja on signatuuri S term 2. Signatuuri S iga konstantsümbol on S term 3. Kui f on signatuuri S funktsionaalsümbol ja t 1, t 2,..., t n on signatuuri S termid, siis f (t 1, t 2,..., t n ) on S term [6] Olgu meil signatuur S, kuhu kuuluvad konstantsümbol c, ühekohaline funktsionaalsümbol f, kahekohaline funktsionaalsümbol g ja indiviidmuutuja x. Siis on näiteks avaldis g(f(x), f(c)) term [4:49]. Predikaatarvutuse valem signatuuris S predikaatarvutuse valem defineeritakse signatuuri S jaoks induktsiooniga järgnevate reeglite abil: 1. Kui P on signatuuri S n-kohaline predikaatsümbol ja t 1, t 2,..., t n on termid signatuuris S, siis P (t 1, t 2,..., t n ) on signatuuri S predikaatarvutuse valem. 2) Kui F on signatuuri S predikaatarvutuse valem, siis F on signatuuri S predikaatarvutuse valem. 3) Kui F ja G on signatuuri S predikaatarvutuse valemid, siis (F & G), (F G), (F G) ja (F G) on signatuuri S predikaatarvutuse valemid. 4) Kui x on indiviidmuutuja ja F on signatuuri S predikaatarvutuse valem, siis xf ja xf on signatuuri S predikaatarvutuse valemid. [4:50] Elementaarvalem ehk atomaarne valem predikaatarvutuse valem, mis on koostatud predikaatarvutuse valemi definitsiooni punkt 1 järgi. Kõik ülejäänud predikaatarvutuse valemid koosnevad elementaarvalemitest. [4:50] Seotud muutuja muutuja x on valemis A seotud, kui x asub olemasolu- või üldisuskvantori mõjupiirkonnas, s.t. valemit xa või xa moodustavas valemis A. [4:50] Vaba muutuja muutuja x on valemis A vaba, kui x ei asu ühegi x-le rakendatud olemasoluvõi üldisuskvantori mõjupiirkonnas. Näiteks valemis x( ya(x,y)&b(x,y)) esineb muutuja x valemites A ja B seotuna ning muutuja y valemis A seotuna ja valemis B vabana. [6] Interpretatsioon predikaatarvutuse valemit saab interpreteerida erinevatel viisidel. Interpretatsioon on see, millega määratakse indiviidide muutumispiirkond ja antakse signatuuri sümbolitele tähendus [6]. Matemaatiliselt, interpretatsioon on paar α = (M α, I α ), kus M α on mittetühi hulk, mida nimetatakse põhihulgaks, ja I α on interpreteeriv kujutus, mis teisendab 1) iga konstantsümboli hulga M α mingiks elemendiks 9

10 2) iga n-kohalise funktsionaalsümboli mingiks kõikjal määratud n-kohaliseks funktsiooniks hulgal M α 3) iga n-kohalise predikaatsümboli mingiks n-kohaliseks predikaadiks hulgal M α. [4:53] Samaselt tõene valem predikaatarvutuse valem F on samaselt tõene, kui ta on tõene igas interpretatsioonis oma vabade muutujate kõikidel väärtustel. [4:59] Valemite samaväärsus valemeid F ja G on samaväärsed, kui nende tõeväärtused on võrdsed igas interpretatsioonis valemite vabade muutujate kõikidel väärtustel. Valemid F ja G on samaväärsed parajasti siis, kui valem F G on samaselt tõene. [4:64] Aritmeetika väljendamise mittelahenduvus Aritmeetika väljendamine on algoritmiliselt mittelahenduv probleem. See tähendab, et ei leidu algoritmi, mis iga sisendi, s.o. predikaatarvutuse valemi puhul tagastab kindla vastuse küsimusele, kas valem on samaselt tõene või mitte. Aritmeetika väidete mittelahenduvus järeldub peatumise probleemi mittelahenduvusest kuna väited Turingi masinate kohta on väljendatavad aritmeetika signatuuris ja Turingi masinate peatumise probleem on mittelahenduv [4:125], siis on ka aritmeetika väljendamise probleem mittelahenduv. 10

11 4 Sisendi töötlemine Selleks, et kontrollida, kas sisend on süntaktiliselt korrektsel kujul, ning luua sisendi edasiseks analüüsimiseks vajalik andmestruktuur, kasutatakse programmi nimega ANTLR v4. ANTLR v4 on tööriist, mis loob grammatika faili põhjal parseri ehk süntaksianalüsaatori programmi, mis tegeleb keele analüüsimisega. Grammatika on kogum reegleid, mis väljendavad sisendi lubatud struktuuri [5:10]. Sisendi töötlemine ANTLR'iga koosneb kahest etapist leksikalisest analüüsist ja parsimisest Leksikalise analüüsi käigus valmistab ANTLRi lekser ette sisendi ANTLRi parserile grammatikasse salvestatud lekserireeglite alusel töötleb lekser sisendiks saadud sümboleid, viib need märkide kujule (ing. k. token) ja jätab välja mittevajalikud sümbolid, nagu tühikud ja reavahetused. Parsimise etapi käigus kontrollib ANTLRi parser, kas sisend sobitub parseri reeglitega ja moodustab märkidest sisendi struktuuri kujutava andmestruktuuri ehk parsepuu (ehk süntaksipuu). Kuna ANTLR lubab ühte grammatikafaili koondada nii lekseri kui ka parseri reegleid, eristatakse neid kirjapildiga lekseri reeglid kirjutatakse algava või läbiva suurtähega, parseri reeglid aga väiketähtedega. [5:10] Reeglid kirjeldavad keele süntaksit. Nende abil kontrollitakse, kas sisendlause kuulub grammatikaga määratud keelde või mitte. Sisend kuulub keelde, teisisõnu, sisend on korrektne, kui see sobitub grammatikas kirjeldatud reeglitega. Järgnevalt kujutatud reeglid on väljavõte loodava programmi tarbeks defineeritud grammatikast. Täieliku grammatika võib leida töö lisast. grammar Pred koguvalem abidef : abidef* predvalem : predtahis ':=' predvalem predtahis : predsymbol defargumendid* Parser alustab sisendi sobitamist algreeglist koguvalem. Nagu näha, võib koolonist paremale jääva reegli definitsioon koosneda omakorda teistest parseri või lekseri reeglitest või sõneliteraalidest. Koguvalemi reegel defineerib, et sisend võib koosneda nullist kuni mitmest abidefinitsioonist (abipredikaadist) ja predikaatvalemist. Reegel abidef täpsustab, et abidefinitsioon peab olema kujul, kus ':=' märgist vasakule jääb predikaatvalemi tähis ja paremale predikaatvalem. Parseri reeglitega luuakse struktuur, mis väljendab valemite vahel loogiliste tehete prioriteeti, viies tugevamini siduvad tehted puus alla poole, nagu näha järgnevalt esitatud parseri reeglite ahelas: predvalem : ekvvalem ('~' ekvvalem)* ekvvalem 11

12 : implvalem ('->' implvalem)* implvalem : disjvalem ('v' disjvalem)* disjvalem : konjvalem ('&' konjvalem)* konjvalem : (' ' iga eks)* korgvalem Joonisel 1 on graafiliselt kujutatud parsepuud, mis väljendab keeles aktsepteeritava näidisvalemi P&GvH struktuuri. Parsepuu koosneb reeglite nimedele vastavatest tippudest, mis näitavad, kuidas antud sisendit parsiti. Puu tipus on kõige üldisem reegel, millest analüüsi alustati. Lehtedeks on lekseri reeglitele vastavad sümbolid. Kuvatõmmis 1: ANTLRi parseri loodud parsepuu Parsepuu koosneb grammatika reeglite põhjal loodud tippudest (Context-tüüpi objektidest), mis on ANTLRisse sisseehitatud klassi ParseTree alamklassid. ANTLRi parsepuu on mahukas ja sisaldab infot sisendi struktuuri ja parsimise kohta. See ei ole valemite edasiseks töötlemiseks mugaval kujul. Seetõttu teisendatakse parsepuu minimalistlikumale, abstraktse süntaksipuu kujule, mis sisaldab sisendi väärtustamiseks ja tõesuspuu koostamiseks olulist infot. Kasutades ANTLRi parsepuu tipu meetodeid getchildcount() ja getchild(int childindex) ning uurides instanceof abil parsepuu tippude klasse, läbime parsepuu ja koostame selle põhjal abstraktse süntaksipuu. 12

13 4.1 Vigadest teavitamine Tudengite vastustes esinevad vead võib jagada kahte klassi sisulised vead ja süntaktilised vead. Sisulised vead hõlmavad mittekorrektsete loogiliste tehete kasutamist, vabade muutujate sidumist kvantoriga ja vastupidi muutujate, mis peaksid asuma mingi kvantori mõjupiirkonnas, esitamist vabadena. Kõige levinumad süntaktilist laadi vead on aga järgnevad: 1. Kasutatakse sümboleid, mis ei kuulu valemite keelde. Tihti jäetaks tähele panemata signatuuriga kasutada lubatavad konstant-, funktsionaal- ja predikaatsümbolid, ning kujutatakse numbreid, võrratusi, jms. nii nagu need on näha järgnevates testandmete põhjal kogutud valemitest: Jagub(x,y) := m(x=m*y) Jagub(x,3)& (Jagub(x,9)) (Näide 1) P(x,y) := x > y Q(x,y,z) := z=x*y (Näide 2) Sageli esineb tudengite valemites erinevaid keeleväliseid sümboleid, nagu näiteks: y:x=y (1+1+1) & f:x=f ( ) (Näide 3) või kasutatakse muid ebastandardseid viise seotud muutujate järjekorra esitamiseks, näiteks: (a, b, c, d): a = y+c & r = y+d & x = a b & (c=0) & (d=0) (Näide 4) või x,y( a,b(p(a,y)&p(b,y) -> Q(a,b,x))) (Näide 5) 2. Sulud ei ole tasakaalus, nagu näiteks järgnevas valemis: y(x=y*(1+1+1) & z(y=z*(1+1+1)) (Näide 6) Lahendustes eriti mitmerealistes ilma abipredikaatideta valemites üleliigsete või puuduvad sulgude tuvastamine on töömahukas ka kontrollijate jaoks. Loodava programmi eesmärk on anda tudengile teada sisendis esinevatest süntaktilistest vigadest. Selleks otstarbeks laiendatakse ANTLRi parserisse sisse ehitatud automaatset süntaksivigadest teavitamise süsteemi, väljastades sõnumi ebasobiva sümboli asukoha ja sisu kohta. Asukoha all mõistetakse alates 0st loendatavat positsiooni numbrit sisendtekstis. Kasutades eeltoodud näiteid, väljastab programm alljärgnevad veasõnumid ja lõpetab töö erindiga: Positsioonil 32 on lubamatu sümbol '3'. (Näide 1) Positsioonil 12 on lubamatu sümbol '>'. (Näide 2) Positsioonil 2 on lubamatu sümbol ':'. (Näide 3) Positsioonil 13 on lubamatu sümbol ': '. (Näide 4) Positsioonil 2 on üleliigne ','. (Näide 5) Positsioonil 33 puudub ')'. (Näide 6) ANTLR rakendab mitmeid võtteid vigadest taastumiseks, mis võimaldavad parseril pärast süntaksivea leidmist tööd jätkata [5:158]. Kuigi ANTLRi parser võimaldab tänu sellele omadusele väljastada kõiki veateateid korraga, on loodavas programmis valitud pedagoogilistel eesmärkidel teistsugune lähenemine veakohtadele osutatakse ükshaaval, et tudengitel tekiks sarnaste vigade osas teatav ettenägelikkus ja tähelepanelikkus. Nii 13

14 kuvatakse näites 1 kujutatud sisendi kontrollimisel esiteks ainsana veapositsiooni 32, et anda tudengile võimalus iseseisvalt märgata ja parandada ka teist samalaadi viga. Lisaks süntaktilistele eksimustele valmistab tudengitele raskusi vabade ja seotud muutujate korrektne kasutamine. Väga levinud viga on, et indiviid, mille kohta midagi väidetakse, seotakse olemasolu- või üldisuskvantoriga, nagu näha allolevast valemist väite x jagub 3ga, aga mitte 9ga kohta: x(jagub(x,1+1+1) & (Jagub(x,(1+1+1)*(1+1+1))) (Näide 7) Kontrollides andmebaasi salvestatud õige vastuse vabade muutujate arvu ja tähiseid, väljastab programm ebakõla korral tudengile veateate oodatavate vabalt esinevate muutujate kohta. Näite 7 varal on veateade järgnev: Esitasid 0-kohalise predikaadi, ootasin aga 1-kohalist predikaati, kus muutuja x esineb vabalt. Selleks, et aidata tudengitel paremini mõista vabade muutujate tähendust, tehakse abipredikaadi defineerimisele järgmised kitsendused kõik abipredikaadis esinevad vabad muutujad peavad olema kirjas abipredikaadi tähises, ning kõik tähises nimetatud vabad muutujad peavad vabadena esinema ka abipredikaadis. Esitades näiteks järgneva abipredikaati sisaldava valemi J(x,y,z) := z(x = y * z) J(x, 1+1+1) & J(x, ) (Näide 8), lõpetab programm töö veateatega Abipredikaadi definitsiooni kohaselt on muutuja z vaba, kuid abipredikaadis esineb see seotuna või on puudu. Esitades aga valemi J(x,y):= z(x = y * z) & (k=0) J(x, 1+1+1) & J(x, (1+1+1)*(1+1+1)) (Näide 9) kuvatakse tudengile veateadet Abipredikaadis esineb vabana muutuja k, mida ei ole abipredikaadi tähises kirjas. Ühtlasi kontrollib programm, kas valemis kasutatav abipredikaat on nimetatud sümboli ja argumentide arvuga eelnevalt defineeritud. Vastasel korral lõpetab programm vastavasisulise veateatega. Sisestades näiteks valemi J(x,y):= z(x = y * z) P(x, 1+1+1) & J(x, (1+1+1)*(1+1+1)) (Näide 10), väljastab programm teate: 2-kohaline abipredikaat predikaatsümboliga P ei ole defineeritud.. 14

15 5 Kasutatavad meetodid Antud töös implementeeritakse kahe valemi samaväärsuse kontrollimiseks tõesuspuu meetod ja väärtuste väljaarvutamise meetod. Mõlemat meetodit tutvustatakse üksikasjalikult vastavates peatükkides antud peatükis antakse ülevaade meetodite valiku põhimõttest, ning meetodite rakendamise võimalikest tulemustest. Implementeeritud meetodid võimaldavad kindlaks teha kahe valemi samaväärsust küll paljudel juhtudel, kuid kuna valemite samaväärsuse kontrollimine on mittelahenduv probleem, mitte alati. Valitud meetodid täiendavad teineteist, kuna tõesuspuu meetod võimaldab kindlalt näidata valemite samaväärsust, väärtuste väljaarvutamine aga valemite mittesamaväärsust. Esimese võttena rakendatakse tudengi sisestatud valemi ja õige valemi ekvivalentsile tõesuspuu meetodit. Selle meetodiga üritatakse leida väärtustust, mil valem on väär. Kui tehtud eeldus viib analüüsi käigus moodustunud tõesuspuu igas harus vastuoluni, siis oleme tõestanud, et kaks valemit on samaväärsed. Kui puus leidub aga haru, kus vastuolu puudub, ei saa me teha järeldust valemi samaväärsuse ega mittesamaväärsuse kohta. Vastuolu puudumine võib olla põhjustatud sellest, et kaks muidu samaväärset valemit erinevad termide poolest näiteks on erinev kahe valemi termide osade järjekord. Kuna tõesuspuu meetodit rakendatakse ainult valemi loogilisele osale, uurimata täpsemalt aritmeetikatermide struktuuri, näiteks seda, kas kahe valemi kommutatiivse tehte argumendid on vahetatud, ei tuvasta tõesuspuu meetod kahte samaväärset, kuid erinevate termidega valemit. Samuti võib juhtuda, et tõesuspuu konstrueerimine ei lõppe lõpliku aja jooksul või võtab meetod tõesuspuu tippude eksponentsiaalse plahvatuse tõttu automaatse kontrollimise seisukohast ülemäära kaua aega. Kui tõesuspuu sisaldab mittevastuolulisi harusid või tõesuspuu meetod ei lõpeta määratud aja jooksul, siis võetakse valemite samaväärsuse hindamiseks kasutusele teine, väärtuste väljaarvutamise meetod. Selle meetodiga kontrollitakse, kas tudengi sisestatud valemi ja õige valemi tõeväärtused langevad kokku suurel lõplikul hulgal. Kui kahest valemist moodustatud ekvivalents ei ole lõplikul kandjal samaselt tõene, siis oleme näidanud, et tudengi sisestatud valem ja õige valem ei ole samaväärsed. Kui ekvivalentsivalem on lõplikul naturaalarvude hulgal väärtustatuna samaselt tõene, siis ei saa me aga teha lõplikku järeldust valemite samaväärsuse ega mittesamaväärsuse kohta. Alljärgnev tabel esitab meetodite võimalikke tulemusi skemaatiliselt. Tingimus Tõesuspuu Väärtuste väljaarvutamine Iga puu haru on vastuoluline Valemid on samaväärsed - Leidub avatud haru või puu ei saa valmis määratud ajaga Ekvivalentsivalem ei ole lõplikul kandjal samaselt tõene Ekvivalentsivalem on lõplikul kandjal samaselt tõene Ei tea - - Valemid ei ole samaväärsed - Ei tea 15

16 6 Tõesuspuu Üks viis, kuidas kontrollida, kas kaks valemit on samaväärsed, on moodustada tõesuspuu. Järgnevates alapeatükkides antakse teoreetiline ülevaade tõesuspuu meetodist, kirjeldatakse tõesuspuu implementatsiooni käesoleva bakalaureusetöö tarbeks ning selle meetodi piiranguid. 6.1 Meetodi kirjeldus Käesolev peatükk on refereeritud õpikust Sissejuhatus matemaatilisse loogikasse, lk [4]. Tõesuspuu on skeem, mis võimaldab valemi loogilist struktuuri uurides kindlaks teha väärtustused, mil valem on tõene või väär. Tõesuspuu tipus on analüüsitav valem koos tõeväärtusega, mida soovitakse kontrollida. Tipus olevat valemit hakatakse jagama väiksemateks osadeks, lähtudes elementaarsammudest. Elementaarsamm on reegel, mis ütleb, millised peavad olema valemi komponentide tõeväärtused selleks, et valemil oleks antud tõeväärtus. Igal lausearvutuse tehtel ja valemil, mis algab olemasolu- või üldisuskvantoriga, on oma elementaarsammud. Need on esitatud käesoleva peatüki alajaotuses Elementaarsammud. Elementaarsammude abil tehakse kindlaks valemi komponentide tõeväärtused. Valemi komponendid kirjutatakse koos järeldunud tõeväärtusega valemi alla. Need on omakorda valemid, mis vajavad edasist analüüsimist. Sellist valemi tükeldamise protsessi korratakse nii kaua, kuni jõutakse valemi väikseimate osadeni, s.o. lausemuutujateni. Mõned elementaarsammud jagavad tõesuspuu kaheks haruks. Hargnemine tähistab olukorda, kus valemi alamosadel on mitu sobivat tõeväärtust. Näiteks selleks, et valem F G oleks tõene, on kaks võimalust F on tõene ja G on tõene või F on väär ja G on väär. Tõesuspuu hargneb sealkohal kaheks. Valemite edasine analüüs kandub mõlemasse harusse seni analüüsimata valemid jagatakse elementaarsammude abil väiksemateks tükkideks ja saadud tulemus lisatakse mõlemasse harusse. Tõesuspuu haru on lõpetatud, kui selles harus on kõik valemid jagatud atomaarseteks valemiteks. Võib juhtuda, et valemi analüüsi käigus jõutakse mingis harus vastuoluni olukorrani, kus valem esineb harus nii tõesena kui ka väärana. Sellist haru nimetatakse vastuoluliseks. Tõesuspuu on valmis, kui iga selle haru on kas lõpetatud või vastuoluline. 16

17 6.1.1 Elementaarsammud Lausearvutuse tehete ja kvantoriga algavate valemite elementaarsammud on järgnevad [4:16, 61]: Eitus Konjunktsioon Disjunktsioon Implikatsioon Ekvivalents Kvantoriga valemid 17

18 Kvantoreid sisaldavate valemite analüüsimisel tuleb arvestada teatud lisareeglitega. Sõltuvalt tingimusest seisneb kvantoriga valemi analüüsisamm selles, et kasutatakse vaadeldavas puu harus juba olemasolevat termi t, või tuuakse sisse uus, vaadeldavas harus seni esinemata sümbol c. Tingimus xf(x) = 1 ütleb, et predikaat F on tõene iga termi t puhul. Seega lisatakse tingimus F(t) = 1 tõesuspuusse iga selles harus esineva termi t puhul, sealhulgas nende termide puhul, mis tekivad hiljem. Kui xf(x) = 0, siis kehtib väide On väär, et leidub element, mille korral predikaat F on tõene. Teisisõnu, predikaat F on väär iga termi t puhul. Seega lisatakse tingimus F(t) = 0 tõesuspuusse iga selles harus esineva, kaasa arvatud hiljem tekkiva termi t jaoks. Tingimuse xf(x) = 0 analüüsimisel tuleb aga tõesuspuusse sisse tuua uus konstantsümbol. Kui xf(x) = 0, siis kehtib väide On väär, et iga elemendi korral on predikaat F tõene, ehk teisisõnu, leidub element, mille korral predikaat F on väär. Sellisel juhul tuleb kasutusele võtta uus konstantsümbol c, kuna puudub alus väita, et element, mille korral F on väär, on üks harus eelnevalt esinenud elementidest. Uus konstantsümbol tuleb sisse tuua ka tingimuse xf(x) = 1 analüüsimisel kui leidub element, mille korral predikaat F on tõene, ei anna see meile alust eeldada, et selleks elemendiks on mõni harus varasemalt esinenud term. Kuna kehtib, et interpretatsiooni põhihulk ei saa olla tühi, siis saab esimese elemendi puusse sisse tuua ka olukorras, kus on vaja analüüsida tingimusi xf(x) = 1 või xf(x) = 0, kuid vaadeldavas harus ei esine eelnevalt ühtegi termi. Selline olukord ilmneb näiteks valemi xa(x) xa(x) = 0 analüüsimisel, kus valemi xa(x) = 1 analüüsimisel tuuakse puusse element a, nagu näha allolevast tõesuspuust: [4:63] Kui tõesuspuu vaadeldav haru ei sisalda ühtegi termi, kuid võimalik on analüüsida tingimusi xf(x) = 0 või xf(x) = 1, asutakse mainitud valemeid lahti kirjutama enne tingimusi xf(x) = 1 või xf(x) = Näide Tõesuspuu meetodi selgitamiseks vaatleme järgnevat kvantoreid sisaldavat valemit [4:62]: x(a(x) B(x)) ( xa(x) xb(x)) Olgu meie eesmärk näidata, et valem ei ole samaselt tõene. Tõesuspuu tipus asub uuritav valem väära tõeväärtusega, kuna eeldame, et leidub interpretatsioon, mil valem on väär. Juurtipus asuva valemi peatehe on implikatsioon. Selleks, et implikatsioon oleks väär, peab implikatsiooni elementaarsammu kohaselt olema tehte vasak pool tõene ja parem pool väär. Lisame need kaks tippu tõesuspuusse. 18

19 Mõlemat valemit on vaja edasi analüüsida, kuna need ei ole elementaarvalemid. Kuna puusse ei ole eelnevalt toodud ühtegi termi, millele valemit x(a(x) B(x)) = 1 rakendada, ja võttes arvesse, et valemite analüüsimise järjekord ei muuda lõpptulemust, asume analüüsima valemit xa(x) xb(x) = 0. Analoogselt juurtipus oleva valemiga, on ka siinkohal valemi peatehe väära tõeväärtusega implikatsioon. Seega lisanduvad puuse järgnevad tipud: Elementaarsammude kohaselt nõuab kummagi lisandunud tingimuse lahtikirjutus uue, puu harus mitte-esinenud konstantsümboli sisse toomist: Sellega on valem xa(x) xb(x) = 0 jagatud väikseimateks osadeks elementaarvalemiteks. Asume analüüsima valemit x(a(x) B(x)) = 1, kus peatehteks on üldisuskvantori lahti kirjutamine. Kuna antud tingimus ütleb, et iga elemendi x korral kehtib A(x) B(x), siis tuleb seda tingimust kasutada puu vaadeldavas harus esinenud iga termi kohta. Kirjutame tingimuse x(a(x) B(x)) = 1 lahti konstantsümboli a jaoks ja rakendame tõese implikatsioonivalemi elementaarsammu. Paneme tähele, et puu vasakus harus olev valem A(a) = 0 on vastuolus harus ülal asuva valemiga A(a) = 1. Vastuolulises vasakus harus analüüsi ei jätkata. Järgmiseks väidame tingimust x(a(x) B(x)) = 1 ka puu harus esinenud termi b kohta, ning kirjutame lahti järeldunud tõese implikatsioonivalemi: Elementaarvalem B(b) = 1 on vastuolus puu harus varasemalt esinenud valemiga B(b) = 0. Kuna kõik tõesuspuus esinevad valemid on jagatud elementaarvalemiteks, on analüüs lõppenud ja puu valmis: 19

20 Puus esineb kaks vastuolulist haru, mis on märgitud ristiga, ning üks lõpetatud haru, mille lõpus asub leht A(b) = 0. Seega leidub interpretatsioon, mil valem on väär. Liigume lõpetatud haru lehest puu juurtipu suunas ja kogume kokku elementaarvalemite tõeväärtused sissetoodud elementidel. Valem on seega väär interpretatsioonis α, kus põhihulgaks on hulk M α = {a, b} ja predikaatsümbolite A ja B interpretatsiooniks α on A(a) = 1, A(b) = 0, B(a) = 1, B(b) = Implementatsiooni kirjeldus Tõesuspuu tipp Nagu eelmises peatükis kirjeldati, moodustub tõesuspuu puu tipus asuva valemi järkjärgulisel jagamisel väiksemateks, samuti tõeväärtusega alamvalemiteks. Tõesuspuu tippu kujutatakse klassiga TõesuspuuTipp. See klass sisaldab vajaliku info hoidmiseks Valem tüüpi valemit ja boolean-tüüpi tõeväärtust, kus Valem on ülemklass, millest pärivad kõik loogilised tehted, eitus, olemasolu- ja üldisuskvantor. Igal loogilisel tehtel, s.o. disjunktsioonil, konjunktsioonil, ekvivalentsil ja implikatsioonil on tehte vasaku ja parema poole kujutamiseks kaks Valem tüüpi alluvat, eitusel ja kvantoritel aga üks Valem tüüpi alluv. Samuti sisaldab iga TõesuspuuTipu isend Optional<Boolean> tüüpi välja selle kohta, kas tipp on vastuolus mõne oma vanemaga. Kaks tõesuspuu tippu on vastuolulised, kui nende valemid on samad ja tõeväärtused erinevad. Valemi samasuse kontrollimiseks defineeritakse üle Valemi ja Termi equals meetodid. Equals meetodit rakendatakse valemi komponentidele rekursiivselt kuni jõutakse valemit moodustavate termideni. Kaks valemit on võrdsed, kui nende termid on võrdsed. Tõesuspuus üles-alla liikumiseks hoitakse igas TõesuspuuTipu isendis maksimaalselt kaht sama tüüpi alluvat ja üht vanemat. 20

21 Tõesuspuu moodustamine Tõesuspuu moodustatakse TõesuspuuTipu klassi isenditest. Tõesuspuu tipus asub valem, mis on tudengi sisestatud valemi ja õige valemi ekvivalents. Eeldame, et leidub väärtustus, mil ekvivalentsivalem on väär. Tuletame meelde, et meie eesmärk on kindlaks määrata, kas kaks valemit on samaväärsed, ehk teisisõnu, kas analüüsitav ekvivalentsivalem on samaselt tõene. Kui moodustunud tõesuspuu iga haru on vastuoluline, siis on eeldus, et leidub väärtustus, mil valem on väär, ebaõige. Seega on valem igal väärtustusel tõene, ehk teisisõnu, valem on samaselt tõene. Tippe, mida on vaja elementaarsammudega analüüsida, hoitakse eelistusjärjekorras (PriorityQueue). Järjekord kasutab järjestust, mis seab ettepoole tõesuspuu tipud, mis ei tekita hargnemist ja mis ei ole kujul xf(x) = 1 ja xf(x) = 0. Sellised tipud eemaldatakse järjekorrast varem. Tõesuspuu tipp võetakse järjekorrast ning asutakse seda analüüsima. Tipus olevale valemile rakendatakse meetodit reegel(). See meetod tagastab listi, mis sisaldab peatükis Elementaarsammud tutvustatud struktuuri ja tõeväärtusega tõesuspuutippe. Elementaarsammudega tuvastatud tõesuspuutipud lisatakse analüüsimist ootavate tippude järjekorda. Leitakse analüüsitava tipu lehed tipud, millel ei ole alamtippe [3:64]. Iga mittevastuolulise lehe alluva(te)ks seatakse elementaarsammudega leitud tõesuspuu tipp/tipud. Tingimused xf(x) = 1 ja xf(x) = 0 väidavad vastavalt predikaadi kehtivust ja mittekehtivust iga elemendi korral. Seega tuleb nende kahe tingimuse analüüs sisse tuua iga kord, kui puusse lisatakse uus term. Sel otstarbel implementeeritakse liides Termikuulaja, mis tegeleb tingimuste registreerimisega, mida võib tõesuspuus vaja olla mitu korda kasutada. Igal valemil on olemas meetod getkuulaja, mis kõikidel juhtudel, v.a. tingimustel xf(x) = 1 ja xf(x) = 0, tagastab tühja väärtuse (Optional.empty()). Üldisus- ja olemasolukvantori valemi klassis kirjutatakse see meetod aga üle getkuulaja loob uue anonüümse klassi, mis implementeerib Termikuulaja liidest ja tagastab oodatud tõeväärtusega tõesuspuu tipu, milles kvantoriga seotud muutuja on asendatud täpsustatud konstantsümboliga. Järjekorrast võetud tõesuspuu tipu analüüsimisel vaadatakse läbi, kas harus ülevalpool asuvate tippude hulgas on valemeid xf(x) = 1 ja xf(x) = 0. Iga uus term, mis analüüsitava tipuga puusse toodi, kirjutatakse lahti olemasolevate valemite xf(x) = 1 ja xf(x) = 0 jaoks ning lisatakse tipu iga mittevastuolulise lehe alla ja töötlemist vajavate tippude järjekorda. Järgnevalt kontrollitakse, kas analüüsitav tipp on xf(x) = 1 või xf(x) = 0. Kui jah, siis lisatakse puusse (ja töötlemist vajavate tippude järjekorda) valemi lahtikirjutus harus varasemalt esinenud termidega. Nende kahe sammu eristamine harus olemasolevate tingimuste xf(x) = 1 ja xf(x) = 0 lahti kirjutamine uute termidega ja uue tingimuse xf(x) = 1 või xf(x) = 0 lahti kirjutamine harus varem esinenud termidega võimaldab vältida kõikide puus esinevate termide kordamist ja hoida tõesuspuud väiksemana. Töö lõpetamine Tõesuspuu kasvatamine katkestatakse, kui tõesuspuus leidub lõpetatud haru. See tähendab, et leidub interpretatsioon, mil valem on väär (või algoritm ei suutnud vastuolu tuvastada aritmeetikatermide erineva struktuuri tõttu). Seega ei saa kontrollitav valem olla samaselt tõene, ja edasise analüüsi võib katkestada. Liikudes lõpetatud haru lehest ülesse kuni esialgse valemini, kogutakse kokku predikaatide tõeväärtused puusse toodud sümbolitel. Tõesuspuu arendamine lõppeb ka siis, kui kõik moodustunud tõesuspuu harud on vastuolulised. Kuna eeldasime analüüsi alguses, et leidub interpretatsioon, mil valem on väär, 21

22 ning jõudsime analüüsi käigus igas harus vastuoluni, siis järelikult ei leidu valemit vääraks muutvat interpretatsiooni. Analüüsitud ekvivalentsivalem on igas interpretatsioonis tõene, ja ekvivalentsivalemit moodustavad alamvalemid seega samaväärsed. 6.3 Tõesuspuu piirangud Kuna väidete väljendamine on mittelahenduv, ei ole ka valemi analüüsimisel tõesuspuu meetodiga võimalik suvalise sisendi korral lõpliku ajaga kindlaks teha, kas valem on samaselt tõene või mitte. Järgnevad alapeatükid tutvustavad tõesuspuu teoreetilisi piiranguid ja testimisel ilmnenud puudujääke. Lõpmatult kasvav tõesuspuu Teatud valemite korral on võimalik, et tõesuspuu moodustamine jääb lõpmatusse tsüklisse. Olgu meie eesmärk tõesuspuu meetodi abil kontrollida, kas valem x yp(x, y) on kehtestav. Tõesuspuu tipus asub seega valem x yp(x, y) = 1. Esimene analüüsisamm nõuab tingimuse x(...) = 1 lahti kirjutamist. Peatükis Elementaarsammud tutvustatud reegli kohaselt tuleb valem puusse lisada iga puu harus sissetoodud muutuja kohta. Analüüsi alguses ei esine puuharus ühtegi termi. Kuna interpretatsiooni põhihulk ei saa aga olla tühi [4:63], siis võib eeldada, et põhihulk sisaldab mingit elementi. Olgu selleks elemendiks a. Lisame tingimuse x(...) = 1 lahtikirjutuse elemendi a kohta puusse. Järgmisena analüüsime tingimust yp(a, y) = 1. Elementaarsammu kohaselt kirjutame antud tingimuse lahti uue konstantsümboliga b. Kuna predikaat yp(x,y) on tõene iga elemendi x korral, siis on see tõene ka elemendi b korral. Selle teadmisega lisandub puusse uus tõese tõeväärtusega olemasolukvantorit sisalduv valem, mis jällegi eeldab uue konstantsümboli tutvustamist. Kahe tingimuse lahti kirjutamine jätkub lõpmatult. Tõesuspuu ei saa kunagi valmis ja seega ei saa me teha järeldusi valemi eeldatava tõeväärtuse kohta. 22

23 Allolev ekraanipilt näitab lõpmatusse kulgeva valemi x yp(x, y) = 1 analüüsi. See on implementeeritud tõesuspuu meetodi väljund. 23

24 Tõesuspuu kasvab väga suureks Isegi kui tõesuspuu moodustamine ei kesta lõpmatu aja, kasvab tõesuspuu teatud kujuga sisendite korral väga suureks ja meetod ei lõpeta töö kontrollimise seisukohast otstarbeka aja jooksul. Testandmete põhjal ilmneb olukord, kus tõesuspuu järjekorda lisandub väga palju tippe, tudengite vastustes, mis sisaldavad mitmeid kvantoriga ja hargnemisi põhjustavaid valemeid. Olgu tõesuspuu meetodiga kontrollitav valem kujul x y( w(...) & v(...)) ~ a b( c(...) & d(...)). Elementaarsammu kohaselt on selline ekvivalentsivalem väär, kui x y( w(...) & v(...))=1 ja a b( c(...) & d(...))=0 või x y( w(...) & v(...)) =0 ja a b( c(...) & d(...))=1. Kirjutades lahti ekvivalentsi vasakus alluvas valemi x y(... &...)=1, tuuakse puusse nii mitu muutujat, kui on valemis olemasolukvantoreid. Iga valemis esinevat vaba muutujat ja puu harusse toodud muutujat tuleb väita tingimuse a b(... &...)=0 lahti kirjutamisel. Kuna see valem sisaldab omakorda hargnemist tekitavat valemit, kandub seni analüüsimata valemite analüüs kõikidesse allpool asuvatesse harudesse. Ekvivalentsivalemi paremas alluvas kulgeb analüüs analoogiliselt lahti kirjutamist alustatakse valemist a b( c(...) & d(...))=1, mis toob puusse mitmeid uusi muutujaid. Valemi väärust tuleb kõikide sissetoodud muutujate ja vabade muutujate kohta väita valemi x y( w(...) & v(...))=0 lahti kirjutamisel, kusjuures puu hargnemisel kandub seni analüüsimata valemite analüüs igasse alumisse harusse. Töödeldavate tippude arv järjekorras kasvab eksponentsiaalselt mahuni, mis ei võimalda samaväärsuse kontrolli mõistliku aja jooksul lõpetada. Esimesel kirjeldatud juhul on töödeldavate tippude järjekorras konstantselt üks tipp, teisel juhul aga väga palju tippe. Selleks, et vältida meetodi väga pikka ja potentsiaalselt lõpmata tööaega, seatakse meetodile ajaline piir 5 sekundit, mille möödumisel katkestatakse tõesuspuu moodustamine. Analüüs piirdub loogilise struktuuriga Implementeeritud tõesuspuu meetodis on kaks samas tõesuspuu harus asuvat tippu teineteisega vastuolus, kui tipus asuvad valemid on võrdsed ja tõeväärtused erinevad. Kaks valemit on võrdsed, kui valemite alamosad (sh termid) on võrdsed. Taoline süntaktiline võrdlus ei võimalda aga tuvastada samaväärseid valemeid, mis sisaldavad kommutatiivseid või muude binaarsete tehete omadustega tehteid. Olgu meil nimetatud kitsenduse näitena vaja väljendada väide x jagub kolmega. Olgu tõesuspuu tipus valem Ey(x=(1+1+1)* y) ~ Ey(x=y*(1+1+1)) = 0. Kahe valemi samasust kontrollitakse ülekirjutatud equals meetodiga, mida kutsutakse rekursiivselt välja valemi alamosade peal. Selleks, et atomaarsed valemid oleksid võrdsed peavad nende vasakud ja paremad termid olema võrdsed. Kui term on binaarne tehe, rakendatakse equals meetodit omakorda termi vasakul ja paremal poolel. Kuvatõmmisel 2 on kujutatud uuritava valemi tõesuspuu. Mõlemas harus on markeeritud kaks tippu, mis on omavahel vastuolus. Vaatleme vasakpoolset haru. Meetod ei tuvasta kahe atomaarse valemi x0 = (1+1+1)*m0: true ja x0=m0*(1+1+1): false vahel vastuolu, kuna atomaarsete valemite paremad pooled koosnevad erinevatest objektidest ülemises valemis on korrutistermi vasakuks alluvaks liitterm, alumises valemis on korrutistermi vasakuks alluvaks indiviidterm. Programm käsitleb seetõttu neid kahte valemit erinevana. Samal põhjusel ei leita vastuolu parema haru kahe tähistatud tipu vahel. 24

25 Kuvatõmmis 2: Näide tõesuspuust, kus vastuolu ei tuvastata Kirjeldatud kitsenduse tõttu ei tuvasta implementeeritud tõesuspuu meetod samaväärseid valemeid, mis erinevad atomaarse valemi kuju poolest. 6.4 Tõesuspuu meetodi kokkuvõte Esimese võttena rakendatakse tudengi sisestatud valemi ja õige valemi ekvivalentsile tõesuspuu meetodit. Selle meetodiga üritatakse leida väärtustus, mil valem on väär. Kui tehtud eeldus viib analüüsi käigus moodustunud tõesuspuu igas harus vastuoluni, siis on kaks valemit samaväärsed. Kui puus leidub aga haru, kus vastuolu puudub, ei saa me teha järeldust valemi samaväärsuse ega mittesamaväärsuse kohta. Testimisel ilmnes kaks tõesuspuuga seotud puudujääki kuna tõesuspuu meetod piirdub kahe tipu vastuolu tuvastamisel termide süntaktilise kontrollimisega, ei pruugi meetod kindlaks teha tudengite samaväärseid varieeruva kujuga valemeid, nagu y(x=(1+1+1)*y) & z(x=(1+1+1)*(1+1+1)*z) ja y(x=(1+1+1)*y) & z(x=( )*z). Samuti näib tõesuspuu plahvatuslikult kasvavat teatud juhtudel, kui analüüsitav valem sisaldab palju kvantoreid ja puu hargnemist põhjustavaid tingimusi. Sellisel juhul ei lõppe tõesuspuu konstrueerimine kontrollimise seisukohast otstarbeka aja jooksul. 25

26 7 Väärtuste väljaarvutamise meetod Tõesuspuud täiendamiseks on antud bakalaureusetöös implementeeritud väärtuste väljaarvutamise meetod. Kui tõesuspuu sisaldab mittevastuolulisi harusid või tõesuspuu meetod ei lõpeta määratud aja jooksul, siis võetakse valemite samaväärsuse hindamiseks kasutusele teine, väärtuste väljaarvutamise meetod. Selle meetodiga kontrollitakse, kas tudengi sisestatud valemi ja õige valemi tõeväärtused langevad kokku suurel lõplikul väärtuste hulgal. Kui kahest valemist moodustatud ekvivalents ei ole lõplikul kandjal samaselt tõene, siis oleme näidanud, et tudengi sisestatud valem ja õige valem ei ole samaväärsed. Kui ekvivalentsivalem on lõplikul naturaalarvude hulgal väärtustatuna samaselt tõene, ei saa me aga teha lõplikku järeldust valemite samaväärsuse kohta. 7.1 Meetodi kirjeldus Eelpool tutvustatud definitsiooni järgi on kaks valemit samaväärsed parajasti siis, kui kahe valemi ekvivalents on samaselt tõene. Seetõttu moodustatakse väärtuste välja arvutamiseks tudengi sisestatud valemist ja õigest valemist ekvivalents. Kõik ekvivalentsivalemis esinevad vabad muutujad seotakse üldisuskvantoriga. Seejärel arvutatakse välja ekvivalentsivalemi tõeväärtus lõplikul kandjal, näiteks M = {0, 1,, 1000}, kusjuures kandja suurus sõltub lõppvalemis esinevate olemasolu- ja üldisuskvantorite maksimaalsest sügavusest. Kui uuritav valem on kujul xp(x), siis moodustatakse tsükkel üle kõigi M elementide ja kontrollitakse, kas P(x) on igal elemendil tõene. Kui P(x) on mingi kandja elemendi korral väär, väljutakse tsüklist ja tagastatakse false. Kui uuritav valem on kujul xp(x), siis moodustatakse tsükkel üle kõigi M elementide ja kontrollitakse, kas leidub element, mille korral P(x) on tõene. Pärast esimese sellise elemendi leidmist väljutakse tsüklist ja tagastatakse true. Kui uuritav valem koosneb mitmest omavahel loogiliste tehetega ühendatud alamvalemist, nt P(x) v Q(x), siis arvutatakse välja P(x) ja Q(x) tõeväärtused väärtusel x, ning rakendatakse tulemustele loogilist tehet. Näide Vaatleme näitena, kuidas kontrollitakse kahe valemi samaväärsust, mis väljendavad väidet: x jagub 3-ga, aga mitte 9-ga (Väide 1) Olgu õige valem kujul y(x=(1+1+1)*y) & z(x=(1+1+1)*(1+1+1)*z) ning tudengi sisestatud valem kujul z(x = (1+1+1)*z) & z (x=( )*z). Väärtustatav valem on seega kujul x[( y(x=(1+1+1)*y) & z(x=(1+1+1)*(1+1+1)*z)) ~ ( z(x = (1+1+1)*z) & z (x=( )*z))] Kõige välimine tsükkel jookseb üle muutuja x vahemikus 0, 1,.., kandja suurus. Ekvivalentsivalemi tõeväärtuse leidmiseks tuleb kindlaks teha selle vasaku ja parema alluva tõeväärtused. Ekvivalentsivalemi vasak ja parem alluv on mõlemad konjunktsioonid, mille 26

27 tõeväärtuste leidmiseks on vaja tuvastada omakorda nende vasak- ja paremalluvate tõeväärtused. Vaatleme näiteks vasakpoolset konjunktsiooni y(x=(1+1+1)*y) & z(x=(1+1+1)*(1+1+1)*z). Selle tõeväärtuse leidmiseks moodustatakse kõigepealt tsükkel 0, 1..., kandja suurus üle tema vasaku alluva y(x=(1+1+1)*y). Jõudes rekursiivselt atomaarse valemini x=(1+1+1)*y, on x'i ja y'i väärtused välimiste tsüklitega määratud, ning leitakse atomaarse valemi tõeväärtus. Kui konjunktsiooni vasaku alluva tõeväärtus on kindlaks tehtud, korratakse sama protsessi konjunktsiooni parema alluva peal. Kui on selgeks tehtud ekvivalentsi vasaku alluva tõeväärtus, asutakse analoogiliselt väärtustama selle paremat alluvat. Kandja suurus Nagu eelpool mainitud, on kandja suurus seatud sõltuvusse valemis esinevate olemasolu- ja üldisuskvantorite maksimaalsest sügavusest, kuna mitmest kvantorist koosnevate valemite puhul on seesmiste tsüklite arv võrdne kvantorite arvuga ja meetodi tööaeg maksimaalselt (kandja suurus)^(kvantorite arv). Vaatleme näiteks samaselt väära valemit x y z w(x+y+z+w=x+y+z+w+1). Selle väärtustamise pseudokood näeks välja järgnev: for(x=0 x < m x++) { } for(y=0 y < m, y++){ } for(z=0 z < m z++){ } } for(w=0 w < m w++){ Kuna tegemist on olemasolukvantoriga, üritatakse leida kogu kandja ulatuses väärtustust, mil valem on tõene. Kui kõige seesmine tsükkel muutujaga w jõuab maksimaalse väärtuseni, suurendatakse z'i ning kõige seesmise tsükli väärtustamine hakkab algusest peale. Nii kujuneb väljakutsete arvuks (kandja suurus)^4. Selleks, et tagada meetodi mõistlik tööaeg (u 5 sekundit), määratakse kandja suurus seega vastavalt maksimaalsele kvantorite sügavusele valemis. Kontranäide Kui tudengi sisestatud valem ja õige valem ei ole lõplikul kandjal arvutatuna samaväärsed, tagastatakse kontramudel vabade muutujate väärtustus, mil kahe valemi tõeväärtused on erinevad. Olgu meil näiteks vaja väljendada eespool tutvustatud väidet 1. Olgu tudengi valem kujul m n(((1+1+1)*m=x)& ((1+1+1)*(1+1+1)*n=x)) ja õige valem kujul y(x = y + y + y) & z(x = z + z + z + z + z + z + z + z + z) Juba kõige välimise tsükli esimesel iteratsioonisammul (x=0) ilmneb, et kahel valemil on erinevad tõeväärtused. Meetod lõpetab töö ja tagastab tudengile kontranäite kujul Sinu vastus on väärtustusel {x=0} tõene, aga peaks olema väär. 27

28 7.2 Implementatsiooni kirjeldus Tõeväärtuse leidmiseks implementeerib iga valem boolean-tüüpi tagastusväärtusega meetodi väärtusta, mille argumendiks on indiviidmuutujaid ja nende võimalikke väärtusi sisaldav sõnastik (Map) ja kandja suurus. See meetod kutsutakse rekursiivselt välja valemi alamosade peal. Selleks, et leida näiteks valemi Q(x) v R(x) tõeväärtust, tehakse esmalt kindlaks valemi vasaku ja parema alluva tõeväärtused ja rakendatakse saadud tulemustele disjunktsiooni. Kui valem on kujul AxQ(x) või ExQ(x), siis moodustatakse üle kontrollitavate väärtuste hulga tsükkel, mille igal iteratsiooni sammul väärtustatakse seotud indiviidmuutuja konkreetse väärtusega, mis lisatakse sõnastikku, ja kontrollitakse rekursiivselt, kas valem on sellel väärtustusel tõene. Üldisuskvantorit sisaldava valemi puhul katkestatakse väärtustamine ja tagastatakse false, kui valem on kandja mingil väärtustusel väär. Vastasel juhul tagastatakse tsüklist väljudes true. Olemasolukvantori sisaldava valemi puhul katkestatakse väärtustamine ja tagastatakse true juhul, kui valem on kandja mingil väärtustusel tõene. Vastasel juhul tagastatakse tsüklist väljudes false. Termide väärtuste välja arvutamiseks implementeerib iga term double-tüüpi tagastusväärtusega meetodi väärtusta, mille argumendiks on valemi edastatud sõnastik. Korrutamist ja liitmist sisaldava avaldise korral kutsutakse väärtusta meetodit rekursiivselt välja avaldise paremal ja vasakule poolel, ja rakendatakse tagastatud väärtustele vastavat binaarset tehet. 28

29 8 Testandmed ja testimise tulemused Käesolevas peatükis antakse ülevaade tõesuspuu meetodi ja väärtuste väljaarvutamise meetodi testimise tulemustest. Meetodite testimiseks kasutati tudengite vastuseid, mida nad esitasid aine MTAT väidete väljendamise kodutöö raames. Õige valemina on välja toodud maksimaalse hinde teeninud suvaliselt valitud tudengi vastus. Ebaõige sisendi korral on esitatud programmi tööd lõpetava erindi nimi ning veateade. - tähistab olukorda, kus tõesuspuu meetod tuvastas kahe valemi samaväärsuse või programm lõpetas töö erindiga ega jõudnud seega teise meetodi rakendamiseni. Testandmete osas tasub märkimist, et tegemist on kodutööde väidetega, mis on praktikumis harjutatust keerulisemad ja mahukamad. Seetõttu on ka pakutavad lahendused oma kujult keerukamad, ja toovad kaasa peatükis Tõesuspuu piirangud kirjeldatud tõesuspuu tippude eksponentsiaalse plahvatuse. See põhjustab olukorra, et mitmed testjuhtumid annavad samaväärsete valemite korral tõesuspuu meetodiga vastuseks ei tea. Praktikumides alustatakse lihtsamate valemitega, mille termidel ei ole eriti palju samaväärseid kujusid, ja tõesuspuu meetod annab seega sagedamini tulemuse. 8.1 Väide 1 Väide: x jagub 3-ga, aga mitte 9-ga Õige näidisvalem: y(x=(1+1+1)*y) & z(x=(1+1+1)*(1+1+1)*z) Valem Tõesuspuu meetod Väärtuste väljaarvutamine y z(x = (1+1+1)*y & (x = (1+1+1)*(1+1+1)*z)) On samaväärne - a(x = (1+1+1)*a) & b (x=(1+1+1)*(1+1+1)*b) On samaväärne - z(x=(1+1+1)*z) & z (x=( )*z) Ei tea Ei tea x z(x = z * (1+1+1) & (x = z * (1+1+1)*(1+1+1))) predmoodul.erindid. ErinevIndiviidideArv Väljastatakse: Esitasid 0-kohalise predikaadi, ootasin aga 1-kohalist predikaati, kus muutuja x esineb - 29

30 z(x=(1+1+1)*z & (x=( )*z)) y(( ) * y = x) & z (( ) * ( ) * z = x) vabalt. Ei tea Ei tea Ei ole samaväärne Väljastatakse: Sinu vastus on väärtustusel {x=9} tõene, aga peaks olema väär. Ei ole samaväärne Väljastatakse:: Sinu vastus on väärtustusel {x=0} tõene, aga peaks olema väär. Jagub(x,y) := z((x=z*y) & (z=0)) Jagub(x,3) & Jagub(x,9) predmoodul.erindid.- SyntaksiViga Väljastatakse: Positsioonil 43 on lubamatu sümbol '3' Väide 2 Väide: x on kahe y-st suurema arvu korrutis Õige näidisvalem: q p( z(y+z+1=q) & w(y+w+1=p) & (x=q*p)) Valem Tõesuspuu meetod Väärtuste väljaarvutamine Q(x, y) := d(y + d = x & (d = 0)) z w(q(w, y) & Q(z, y) & x = w * z) Ei tea TestTimedOutException: test timed out after 5000 milliseconds Ei tea Suurem(x,y) := m(y+m=x)& (m=0) a b(x=a*b & Suurem(a,y) & Suurem(b,y)) predmoodul.erindid.- VaarVabadeMuutujate- Esinemine Väljastatakse: Abipredikaadis esineb vabana muutuja m, mida ei ole abipredikaadi tähises kirjas. - a b( n(y+n=a) & n(y+n=b) -> Ei tea Ei ole samaväärne 30

31 x=a*b) z w((x = z * w) & a((y + a = z) & (a = 0)) & b((y + b = w) (b = 0))) (x = z * w) & k l((y + k + 1 = z) & (y + l + 1 = w)) TestTimedOut- Exception: test timed out after 5000 milliseconds predmoodul.erindid.- SyntaksiViga Väljastatakse: Positsioonil 63 on lubamatu sümbol ' '. Ootasin üht järgnevast: {'->', '~', '&', ')', ' '}. predmoodul.erindid.- ErinevIndiviidideArv: Väljastatakse: Esitasid 4-kohalise predikaadi, ootasin aga 2-kohalist predikaati, kus muutujad x, y esinevad vabalt. Väljastatakse: Sinu vastus on väärtustusel {x=0, y=0} tõene, aga peaks olema väär Väide 3 Väide: x ei jagu ühegi y-st väiksema algarvuga Õige näidisvalem: A(x) := y z(x = y * z -> y = 1 z = 1) & (x = 1) J(x,y) := z(x=y*z) & (y=0) V(x,y) := z(x + z = y & (z = 0)) z(a(z) & V(z,y) -> J(x,z)) Valem Tõesuspuu meetod Väärtuste väljaarvutamine w( o p(w = o * p -> o = 1 p= 1) & (w = 1) & q(w+q+1=y) -> z(x=w*z) & (w=0)) z w((x = z * w) & k((z + k = y) & (k = 0)) & a b(z = a * b -> a = 1 b = 1) & (z = 1)) Ei tea TestTimedOutException: test timed out after 5000 milliseconds Ei tea TestTimedOutException: test timed out after 5000 milliseconds Ei tea Ei tea 31

32 R(x) := y z(x = y*z -> y=1 z=1) & (x=1) V(x,y) := z(x+z=y & (z=0)) r z( (x=r*z)-> ((R(z)&V(z,y) (R(r)&V(r,y))))) Ei tea TestTimedOutException: test timed out after 5000 milliseconds Ei ole samaväärne Väljastatakse: Sinu vastus on väärtustusel {x=0, y=0} väär, aga peaks olema tõene. z w((x = z * w) & v((z + v = y) & (v = 0)) & a b(z = a * b -> a = 1 b = 1) & (z = 1) P(x) := y z(x = y * z -> y = 1 z = 1) & (x = 1) z(p(z) & z < y & w(x = w * z)) predmoodul.erindid.- SyntaksiViga Väljastatakse: Positsioonil 92 puudub ')'. predmoodul.erindid.- SyntaksiViga Väljastatakse: Positsioonil 65 on lubamatu sümbol '<' Väide 4 Väide: x < y ning arvude x ja y vahel leidub täpselt üks algarv Õige näidisvalem: A(x) := y z(x=y*z -> y=1 z=1) & (x=1) V(x,y) := z(x+z+1=y) a(v(x,a)&v(a,y)&a(a)& b(v(x,b) & V(b,y) & A(b) -> b=a)) Valem Tõesuspuu meetod Väärtuste väljaarvutamine V(x,y) := z((x + z = y) & (z = 0)) A(x) := y z((x = y * z) -> (y = 1) (z = 1)) & (x = 1) V(x,y) & s(v(x,s) & V(s,y) & A(s) & t(a(t) & V(x,t) & V(t,y) -> t = s)) Ei tea TestTimedOutException: test timed out after 5000 milliseconds Ei tea A(x) := y z(x = y * z -> y = 1 z = 1) & (x = 1) V(x,y) := n(x+n+1=y) predmoodul.erindid.- SyntaksiViga Väljastatakse: Positsioonil 105 on - 32

33 a(v(x,a) & V(a, y) & A(a) & b(x, lubamatu sümbol ','. b) & V(b, y) & A(b) -> b = a)) A(x) := y z(x = y * z -> y = 1 z = 1) & (x = 1) V(x, y) := z(x + z = y & (z = 0)) z(v(x, z) & V(z, y) & A(z)) & q(v(x, q) & V(q, y) & A(q) & (q = z)) W(x,y) := z((x + z = y) & (z=0)) P(x) := y z(x = y * z -> y = 1 z = 1) & (x = 1) W(x,y) & a(w(x, a) & W(a, y) & P(a) -> b(w(x, b) & W(b, y) -> P(a))) predmoodul.erindid.- ErinevIndiviidideArv Väljastatakse: Esitasid 3-kohalise predikaadi, ootasin aga 2-kohalist predikaati, kus muutujad y, x esinevad vabalt. Ei tea TestTimedOutException: test timed out after 5000 milliseconds - Ei ole samaväärne Väljastatakse: Sinu vastus on väärtustusel {x=0, y=1} tõene, aga peaks olema väär. Algarv(x) := y z(x = y*z -> y = 1 z = 1) & (x = 1) Algarvud(x,y) := m( k(m = x + k + 1) & k(y = m+ k + 1) & Algarv(m)) m(y=x+m+1) & z( m(z = x+m+1) & m(y=z+m+1) & Algarv(z) & Algarvud(x,z) & Algarvud(z,y)) Ei tea TestTimedOutException: test timed out after 5000 milliseconds Ei tea 33

34 9 Teegi kirjeldus Java programmeerimiskeeles kirjutatud teek on kättesaadav aadressilt Projekti haldamiseks ja ehitamiseks kasutatakse Maveni nimelist Java tööriista. Teegi integreerimiseks Maveni projekti lisada pom.xml faili, elementi <dependencies> järgmine lõik: <dependency> <groupid>com.siiri.saar</groupid> <artifactid>pred-logic-lib</artifactid> <version>1.0-snapshot</version> </dependency> Kahe valemi samaväärsuse hindamiseks luua uus klassi Kontroll isend. Argumentidena anda konstruktorile ette kaks String-tüüpi objekti, millest esimene parameeter tähistab kasutaja pakutud vastust ja teine õiget vastust. Kontrolli objekti loomisel käivitatakse meetodid, mis kontrollivad ANTLR 4 abil sisendi süntaktilist korrektsust, viivad sisendid abstraktse süntaksipuu kujule, moodustavad kahest sisendist ekvivalentsivalemi, ning kontrollivad valemite samaväärsust tõesuspuu meetodil ning juhul, kui tõesuspuuga ei tuvastata kahe valemi samaväärsust, ka väärtuste väljaarvutamise meetodil. Alljärgnev rida on näide Kontrolli klassi initsialiseerimisest: Kontroll kontroll = new Kontroll(pakkumineKommentaarideta, oigevastus) Kontrollimise tulemusena tagastatakse int-väärtus, millele on võimalik ligi pääseda Kontrolli objekti meetodiga getkontrollitulemus(). Võttes arvesse töö püstitust leida vastus küsimusele, kas kaks valemit on samaväärsed, on selle tähendus järgnev: Täisarvuline väärtus Tähendus 0 Ei, kaks valemit ei ole samaväärsed. Kontramudeli saamiseks kasutada järgneva signatuuriga Kontrolli objekti meetodeid: Map<Character,Integer> tagastakontramudel() String kontranaidestringina() 1 Jah, kaks valemit on samaväärsed. 3 Ei tea. Tõesuspuu meetodiga ei tuvastatud, et kaks valemit on samaväärsed. Väärtuste väljaarvutamisega ei selgunud, et kaks valemit ei ole samaväärsed, s.t. kahe valemi väärtustamisel täpsustatud lõplikul naturaalarvude hulgal ei leitud väärtustust, mil kahe valemi tõeväärtused on erinevad. Tabel 1: kontrolli() meetodi võimalikud tagastused Kontrolli isendi loomisel võib programm visata järgnevaid erindeid: 34

35 Erind AbiValemEiOleDefineeritud ErinevIndiviidideArv IOException Tähendus Lõppvastuses esitatud abipredikaat ei ole nimetatud tähise või argumentide arvuga eelnevalt defineeritud Kasutaja sisestatud valemi ja õige valemi vabad muutujad on erinevad Java I/O erind SyntaksiViga VaarVabadeMuutujateEsinemine Sisendsõne ei sobitu ANTLRi grammatika failis defineeritud reeglitega Abipredikaadi tähises on välja toodud muutuja, mis abipredikaadis ei esine vabalt või on puudu, või abipredikaadis esineb vabana muutuja, mida ei ole abipredikaadi tähises välja toodud. Tabel 2: Kontrolli objekti loomisel visatavad erindid 9.1 Näidisveebirakendus Kuna käesoleva bakalaureusetöö eesmärk on osaliselt automatiseerida predikaatarvutuse väljendamisülesannete lahenduste kontrollimist ja võimaldada tudengitel valemitega rohkem katsetada, kui praegune lahenduste käsitsi kontrollimise korraldus lubab, on teek integreeritud lihtsa kasutajaliidesega veebirakendusse. Rakendus on ajutiselt kättesaadav aadressilt Rakenduse esilehel kuvatakse ülesannete nimekirja. Kuvatõmmis 3: Veebirakenduse esileht 35

36 Klõpsates ülesandel, avaneb vaade, kus kuvatakse ülesande väidet. Tudengil on võimalik tühja tekstialasse sisestada valemeid, mis on peatükis Lahendatavad väljendamisülesanded kirjeldatud kujul. Samal lehel kuvatakse ka kontrolli tulemust. Kuvatõmmis 4: Veebirakenduse ülesande vaade 36

37 10 Ülevaade predikaatarvutuse veebiprogrammidest Antud bakalaureusetöö hõlmab predikaatarvutust toetavate veebitööriistadega tutvumist, et välja selgitada, milles predikaatarvutuse lahendamiskeskkonna kujundamisel sarnastelt programmidelt eeskuju võtta ja mida vältida. Käesolevas peatükis antakse lühiülevaade vaid mõningatest veebis leiduvatest tööriistadest A Predicate Logic Calculator Antud veebirakendus [2] võimaldab kindlaks teha, kas kasutaja sisestatud lausearvutuse või ühekohaline predikaatarvutuse valem on samaselt tõene, samaselt väär või kehtestav. Lisaks avaldise väärtustamisele lubab programm teha järgnevaid operatsioone: kujutada graafiliselt väärtustamise aluseks olevat puud kirjeldada lausearvutuse valemi tõeväärtustabelit samaselt väära või kehtestava avaldise korral leida näite, mil avaldis väärtustub valeks navigeerida programmi Tree Proof Generator veebilehele [7], mis kujutab samaselt tõese avaldise tõesuspuud Veebirakendus paistab silma põhjaliku dokumentatsiooni ja mitmete avaldise süntaksit puudutavate võimalustega, muuhulgas võimalus: kirjutada parseri poolt eiratavaid kommentaare defineerida oma sümboleid ning anda predikaatidele ja muutujatele tähenduslikke nimesid, asendades näiteks implikatsiooni väljendava märgi -> sõnaga siis kirjutada pikka avaldist mitmele reale kasutada kahte predikaati väljendavaid eeldefineeritud lühisümboleid, näiteks SiP väljendab seost leidub element, mis on nii omadus S kui ka omadus P. Kuigi kõnealune veebirakendus sisaldab arendatava programmi seisukohast mitmeid kasulikke funktsioone, on selle üheks puuduseks tõsiasi, et rakendus ei toeta enam kui ühekohalisi predikaate ega avaldisi, mis sisaldavad vabu indiviidmuutujaid. Samuti leiab käesoleva töö autor, et viis, kuidas analüüsitavas veebirakenduses tähistatakse kvantori rakendumise piire avaldise teatud osale, ei ole piisavalt intuitiivne. Selleks, et predikaatarvutusega algust tegev tudeng saaks keskenduda ülesande sisulisele poolele, taotleb arendatav programm vähem töömahukat ja ühtselt tõlgendatavat sulukasutust. 37

38 10.2 Tree Proof Generator Antud veebiprogramm [7] kontrollib, kas sisestatud lausearvutuse või predikaatarvutuse valem on samaselt tõene või mitte. Samaselt tõese valemi jaoks koostab programm tõesuspuu. Valemi jaoks, mis ei ole samaselt tõene, toob programm näite interpretatsioonist, kus valem on väär. Programm on oma olemuselt lihtne, kuid sisaldab funktsionaalsust, mis kattub arendatava lahenduskeskkonna eesmärgiga, nagu tõesuspuu ja kontranäite kujutamine ning mitmekohaliste ja vabu muutujaid sisaldavate predikaatide toetamine. Samuti peab töö autor selle eeliseks paindlikku kasutajaliidest valemit on vastavalt eelistusele võimalik sisestada, klikkides tehteid ja kvantoreid kujutavatele graafilistele nuppudele või trükkides tekstimärgendeid, näiteks \neg, \forall. Valemi kirjapilt on jooksvalt sisendi all nähtav. 38

39 10.3 A Linear Logic Prover Antud veebirakendus [1] kasutab kasutaja valitud loogika tuletusreegleid, et teha kindlaks, kas sisestatud valem on samaselt tõene või mitte. Samaselt tõese valemi puhul kuvatakse konstrueeritud tuletuspuu, vastasel juhul antakse teada, et tõestamine ebaõnnestus. Rakendus ei võimalda verifitseerida enam kui ühekohalise predikaatarvutuse valemi samaselt tõesust. Samuti ei paku rakendus eeskuju kasutusmugavuse seisukohast: oodatavat süntaksit tuleb otsida dokumentatsioonist, ning süntaksivea teade on vähe informatiivne. Joonis 3 39

ITI Loogika arvutiteaduses

ITI Loogika arvutiteaduses Predikaatloogika Predikaatloogika on lauseloogika tugev laiendus. Predikaatloogikas saab nimetada asju ning rääkida nende omadustest. Väljendusvõimsuselt on predikaatloogika seega oluliselt peenekoelisem

Rohkem

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a.

Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni a. Diskreetne matemaatika I Kevad 2019 Loengukonspekt Lektor: Valdis Laan 20. juuni 2019. a. 2 Sisukord 1 Matemaatiline loogika 7 1.1 Lausearvutus.................................. 7 1.1.1 Põhimõistete meeldetuletamine....................

Rohkem

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et

Excel Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et Excel2016 - Valemite koostamine (HARJUTUS 3) Selles peatükis vaatame millistest osadest koosnevad valemid ning kuidas panna need Excelis kirja nii, et programm suudaks anda tulemusi. Mõisted VALEM - s.o

Rohkem

vv05lah.dvi

vv05lah.dvi IMO 05 Eesti võistkonna valikvõistlus 3. 4. aprill 005 Lahendused ja vastused Esimene päev 1. Vastus: π. Vaatleme esiteks juhtu, kus ringjooned c 1 ja c asuvad sirgest l samal pool (joonis 1). Olgu O 1

Rohkem

Word Pro - diskmatTUND.lwp

Word Pro - diskmatTUND.lwp Loogikaalgebra ( Boole'i algebra ) George Boole (85 864) Sündinud Inglismaal Lincolnis. 6-aastasena tegutses kooliõpetaja assistendina. Õppis 5 aastat iseseisvalt omal käel matemaatikat, keskendudes hiljem

Rohkem

loeng7.key

loeng7.key Grammatikate elustamine JFLAPiga Vesal Vojdani (TÜ Arvutiteaduse Instituut) Otse Elust: Java Spec https://docs.oracle.com/javase/specs/jls/se8/html/ jls-14.html#jls-14.9 Kodutöö (2. nädalat) 1. Avaldise

Rohkem

lvk04lah.dvi

lvk04lah.dvi Lahtine matemaatikaülesannete lahendamise võistlus. veebruaril 004. a. Lahendused ja vastused Noorem rühm 1. Vastus: a) jah; b) ei. Lahendus 1. a) Kuna (3m+k) 3 7m 3 +7m k+9mk +k 3 3M +k 3 ning 0 3 0,

Rohkem

Diskreetne matemaatika I praktikumiülesannete kogu a. kevadsemester

Diskreetne matemaatika I praktikumiülesannete kogu a. kevadsemester Diskreetne matemaatika I praktikumiülesannete kogu 2019. a. kevadsemester Sisukord 1 Tingimuste ja olukordade analüüsimine 3 2 Tõesuspuu meetod 5 3 Valemite teisendamine 7 4 Normaalkujud 7 5 Predikaadid

Rohkem

Polünoomi juured Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n a n 1 x

Polünoomi juured Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n a n 1 x 1 5.5. Polünoomi juured 5.5.1. Juure definitsioon ja Bézout teoreem Vaadelgem polünoomi kus K on mingi korpus. f = a 0 x n + a 1 x n 1 +... + a n 1 x + a n K[x], (1) Definitsioon 1. Olgu c K. Polünoomi

Rohkem

Word Pro - digiTUNDkaug.lwp

Word Pro - digiTUNDkaug.lwp / näide: \ neeldumisseadusest x w x y = x tuleneb, et neeldumine toimub ka näiteks avaldises x 2 w x 2 x 5 : x 2 w x 2 x 5 = ( x 2 ) w ( x 2 ) [ x 5 ] = x 2 Digitaalskeemide optimeerimine (lihtsustamine)

Rohkem

raamat5_2013.pdf

raamat5_2013.pdf Peatükk 5 Prognoosiintervall ja Usaldusintervall 5.1 Prognoosiintervall Unustame hetkeks populatsiooni parameetrite hindamise ja pöördume tagasi üksikvaatluste juurde. On raske ennustada, milline on huvipakkuva

Rohkem

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo

Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul ühe muutuja funktsioo Matemaatiline analüüs IV 1 3. Mitme muutuja funktsioonide diferentseerimine 1. Mitme muutuja funktsiooni osatuletised Üleminekul üe muutuja funktsioonidelt m muutuja funktsioonidele, kus m, 3,..., kerkib

Rohkem

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad

1 / loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad 1 / 16 7. loeng Tekstitöötlus Sisend/väljund Teksti lugemine Sõnad 2 / 16 Sisend/väljund vaikimisi: Termid: read, write?-read(x). : 2+3. X = 2+3.?-write(2+3). 2+3 true. Jooksva sisendi vaatamine: seeing?-

Rohkem

Relatsiooniline andmebaaside teooria II. 6. Loeng

Relatsiooniline andmebaaside teooria II. 6. Loeng Relatsiooniline andmebaaside teooria II. 5. Loeng Anne Villems ATI Loengu plaan Sõltuvuste pere Relatsiooni dekompositsioon Kadudeta ühendi omadus Sõltuvuste pere säilitamine Kui jõuame, siis ka normaalkujud

Rohkem

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi

Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi Infix Operaatorid I Infix operaatorid (näiteks +) ja tüübid (näiteks ->) kirjutatakse argumentide vahele, mitte argumentide ette. Näiteks: 5 + 2, 2*pi*r^2, Float -> Int Infixoperaatori kasutamiseks prefix-vormis

Rohkem

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü

DIGITAALTEHNIKA DIGITAALTEHNIKA Arvusüsteemid Kümnendsüsteem Kahendsüsteem Kaheksandsüsteem Kuueteistkü DIGITAALTEHNIKA DIGITAALTEHNIKA... 1 1. Arvusüsteemid.... 2 1.1.Kümnendsüsteem....2 1.2.Kahendsüsteem.... 2 1.3.Kaheksandsüsteem.... 2 1.4.Kuueteistkümnendsüsteem....2 1.5.Kahendkodeeritud kümnendsüsteem

Rohkem

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu

Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimu Failiotsing: find paljude võimalustega otsingukäsk find kataloog tingimused kataloog - otsitakse sellest kataloogist ja tema alamkataloogidest tingimused: faili nimi faili vanus faili tüüp... 1 Failiotsing:

Rohkem

prakt8.dvi

prakt8.dvi Diskreetne matemaatika 2012 8. praktikum Reimo Palm Praktikumiülesanded 1. Kas järgmised graafid on tasandilised? a) b) Lahendus. a) Jah. Vahetades kahe parempoolse tipu asukohad, saame graafi joonistada

Rohkem

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons

I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Kons I Generaatori mõiste (Java) 1. Variantide läbivaatamine Generaator (ehk generaator-klass) on klass, milles leidub (vähemalt) isendimeetod next(). Konstruktorile antakse andmed, mis iseloomustavad mingit

Rohkem

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3,

IMO 2000 Eesti võistkonna valikvõistlus Tartus, aprillil a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a 2, a 3, IMO 000 Eesti võistkonna valikvõistlus Tartus, 19. 0. aprillil 000. a. Ülesannete lahendused Esimene päev 1. Olgu vaadeldavad arvud a 1, a, a 3, a 4, a 5. Paneme tähele, et (a 1 + a + a 3 a 4 a 5 ) (a

Rohkem

Mining Meaningful Patterns

Mining Meaningful Patterns Konstantin Tretjakov (kt@ut.ee) EIO õppesessioon 19. märts, 2011 Nimetuse saladus Vanasti kandis sõna programmeerimine natuke teistsugust tähendust: Linear program (~linear plan) X ülesannet * 10 punkti

Rohkem

Microsoft Word - 56ylesanded1415_lõppvoor

Microsoft Word - 56ylesanded1415_lõppvoor 1. 1) Iga tärnike tuleb asendada ühe numbriga nii, et tehe oleks õige. (Kolmekohaline arv on korrutatud ühekohalise arvuga ja tulemuseks on neljakohaline arv.) * * 3 * = 2 * 1 5 Kas on õige, et nii on

Rohkem

Microsoft Word - requirements.doc

Microsoft Word - requirements.doc Dokumendi ajalugu: Versioon Kuupäev Tegevus Autor 1.0 04.03.2008 Dokumendi loomine Madis Abel 1.1 09.03.2008 Kasutuslugude loomine Madis Abel 1.2 12.03.2008 Kasutuslugude täiendused Andres Kalle 1.3 13.03.2008

Rohkem

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k

Neurovõrgud. Praktikum aprill a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust k Neurovõrgud. Praktikum 11. 29. aprill 2005. a. 1 Stohhastilised võrgud Selles praktikumis vaatleme põhilisi stohhastilisi võrke ning nende rakendust kombinatoorsete optimiseerimisülesannete lahendamiseks.

Rohkem

Treeningvõistlus Balti tee 2014 võistkonnale Tartus, 4. novembril 2014 Vastused ja lahendused 1. Vastus: 15, 18, 45 ja kõik 0-ga lõppevad arvud. Olgu

Treeningvõistlus Balti tee 2014 võistkonnale Tartus, 4. novembril 2014 Vastused ja lahendused 1. Vastus: 15, 18, 45 ja kõik 0-ga lõppevad arvud. Olgu Treeningvõistlus Balti tee 014 võistkonnale Tartus, 4. novembril 014 Vastused ja lahendused 1. Vastus: 15, 18, 45 ja kõik 0-ga lõppevad arvud. Olgu b arvu k üheliste number ning a arv, mille saame arvust

Rohkem

lcs05-l3.dvi

lcs05-l3.dvi LAUSELOOGIKA: LOOMULIK TULETUS Loomuliku tuletuse süsteemid on liik tõestussüsteeme nagu Hilberti süsteemidki. Neile on omane, et igal konnektiivil on oma sissetoomise (introduction) ja väljaviimise (elimination)

Rohkem

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx

Microsoft Word - essee_CVE ___KASVANDIK_MARKKO.docx Tartu Ülikool CVE-2013-7040 Referaat aines Andmeturve Autor: Markko Kasvandik Juhendaja : Meelis Roos Tartu 2015 1.CVE 2013 7040 olemus. CVE 2013 7040 sisu seisneb krüptograafilises nõrkuses. Turvaaugu

Rohkem

DVD_8_Klasteranalüüs

DVD_8_Klasteranalüüs Kursus: Mitmemõõtmeline statistika Seminar IX: Objektide grupeerimine hierarhiline klasteranalüüs Õppejõud: Katrin Niglas PhD, dotsent informaatika instituut Objektide grupeerimine Eesmärk (ehk miks objekte

Rohkem

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3

IFI6083_Algoritmid_ja_andmestruktuurid_IF_3 Kursuseprogramm IFI6083.DT Algoritmid ja andmestruktuurid Maht 4 EAP Kontakttundide maht: 54 Õppesemester: K Eksam Eesmärk: Aine lühikirjeldus: (sh iseseisva töö sisu kirjeldus vastavuses iseseisva töö

Rohkem

GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev Versioon

GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev Versioon GRUPI-SMS Veebirakenduse kasutamise juhend Rakendus Elisa grupi-smsi rakendus Väljaandja Elisa Eesti AS Juhendi koostamise kuupäev 05.02.2018 Versiooni kuupäev 30.01.2018 1 SISUKORD 1. ÜLEVAADE... 3 1.1

Rohkem

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06

Microsoft Word - Errata_Andmebaaside_projekteerimine_2013_06 Andmebaaside projekteerimine Erki Eessaar Esimene trükk Teadaolevate vigade nimekiri seisuga 24. juuni 2013 Lehekülg 37 (viimane lõik, teine lause). Korrektne lause on järgnev. Üheks tänapäeva infosüsteemide

Rohkem

12. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Algfunktsioon ja määramata integraal Sisukord 12 Algfunktsioon ja määramata integraal 1

12. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Algfunktsioon ja määramata integraal Sisukord 12 Algfunktsioon ja määramata integraal 1 2. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, 203-. 2 Algfunktsioon ja määramata integraal Sisukord 2 Algfunktsioon ja määramata integraal 9 2. Sissejuhatus................................... 50 2.2

Rohkem

Microsoft Word - ref - Romet Piho - Tutorial D.doc

Microsoft Word - ref - Romet Piho - Tutorial D.doc Tartu Ülikool Andmetöötluskeel "Tutorial D" realisatsiooni "Rel" põhjal Referaat aines Tarkvaratehnika Romet Piho Informaatika 2 Juhendaja Indrek Sander Tartu 2005 Sissejuhatus Tänapäeval on niinimetatud

Rohkem

Matemaatiline maailmapilt MTMM Terje Hõim Johann Langemets Kaido Lätt 2018/19 sügis

Matemaatiline maailmapilt MTMM Terje Hõim Johann Langemets Kaido Lätt 2018/19 sügis Matemaatiline maailmapilt MTMM.00.342 Terje Hõim Johann Langemets Kaido Lätt 2018/19 sügis Sisukord *** 1 Sissejuhatus 1 1.1 Kursuse eesmärk.................................... 2 1.2 Matemaatika kui keel.................................

Rohkem

Andmed arvuti mälus Bitid ja baidid

Andmed arvuti mälus Bitid ja baidid Andmed arvuti mälus Bitid ja baidid A bit about bit Bitt, (ingl k bit) on info mõõtmise ühik, tuleb mõistest binary digit nö kahendarv kahe võimaliku väärtusega 0 ja 1. Saab näidata kahte võimalikku olekut

Rohkem

Ruutvormid Denitsioon 1. P n Ütleme, et avaldis i;j=1 a ijx i x j ; kus a ij = a ji ; a ij 2 K ja K on korpus, on ruutvorm üle korpuse K muutujate x 1

Ruutvormid Denitsioon 1. P n Ütleme, et avaldis i;j=1 a ijx i x j ; kus a ij = a ji ; a ij 2 K ja K on korpus, on ruutvorm üle korpuse K muutujate x 1 Ruutvormid Denitsioon. P n Ütleme, et avaldis i;j= a ijx i x j ; kus a ij = a ji ; a ij K ja K on korus, on ruutvorm üle koruse K muutujate x ;;x n suhtes. Maatriksit =(a ij ) nimetame selle ruutvormi

Rohkem

Programmeerimiskeel APL Raivo Laanemets 17. mai a.

Programmeerimiskeel APL Raivo Laanemets 17. mai a. Programmeerimiskeel APL Raivo Laanemets 17. mai 2009. a. Sissejuhatus I APL - A Programming Language I Kenneth E. Iverson (1920-2004) I Elukutselt matemaatik I Uuris matemaatilist notatsiooni I 1960 -

Rohkem

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs

MOOCi „Programmeerimise alused“ ülesannete lahenduste analüüs TARTU ÜLIKOOL LOODUS- JA TÄPPISTEADUSTE VALDKOND Arvutiteaduse instituut Informaatika õppekava Helen Hendrikson MOOCi Programmeerimise alused ülesannete lahenduste analüüs Bakalaureusetöö (9 EAP) Juhendaja:

Rohkem

VL1_praks2_2009s

VL1_praks2_2009s Biomeetria praks 2 Illustreeritud (mittetäielik) tööjuhend Eeltöö 1. Avage MS Excel is oma kursuse ankeedivastuseid sisaldav andmestik (see, mida 1. praktikumiski analüüsisite), 2. nimetage Sheet3 ümber

Rohkem

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier

Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier Mida räägivad logid programmeerimisülesande lahendamise kohta? Heidi Meier 09.02.2019 Miks on ülesannete lahendamise käigu kohta info kogumine oluline? Üha rohkem erinevas eas inimesi õpib programmeerimist.

Rohkem

Microsoft Word - Vorm_TSD_Lisa_1_juhend_2015

Microsoft Word - Vorm_TSD_Lisa_1_juhend_2015 TSD lisa 1 täitmise juhend Olulisemad muudatused deklareerimisel alates 01.01.2015 vorm TSD lisal 1. Alates 01.01.2015 muutus vorm TSD ja tema lisad. Deklaratsioonivorme muutmise peamine eesmärk oli tagada

Rohkem

Pealkiri

Pealkiri Andmebaasid II praktikum Andmebaaside administreerimine Andmete sisestamine KESKKOND, KASUTAJAD, ÕIGUSED Mõisted Tabelid, vaated, trigerid, jpm on objektid Objektid on grupeeritud skeemi Skeemid moodustavad

Rohkem

Matemaatiline analüüs III 1 4. Diferentseeruvad funktsioonid 1. Diferentseeruvus antud punktis. Olgu funktsiooni f : D R määramispiirkond D R selles p

Matemaatiline analüüs III 1 4. Diferentseeruvad funktsioonid 1. Diferentseeruvus antud punktis. Olgu funktsiooni f : D R määramispiirkond D R selles p Matemaatiline analüüs III 4. Diferentseeruvad funktsioonid. Diferentseeruvus antud punktis. Olgu funktsiooni f : D R määramispiirkond D R selles paragravis mingi (lõplik või lõpmatu) intervall ning olgu

Rohkem

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Roman Jagomägis Programmeerimiskeel privaatsust säilit

TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Roman Jagomägis Programmeerimiskeel privaatsust säilit TARTU ÜLIKOOL MATEMAATIKA-INFORMAATIKATEADUSKOND Arvutiteaduse instituut Infotehnoloogia eriala Roman Jagomägis Programmeerimiskeel privaatsust säilitavate rakenduste loomiseks Bakalaureusetöö (4 AP) Juhendaja:

Rohkem

loogika_kyljend_par2.indd

loogika_kyljend_par2.indd LOOGIKA ALUSED enn kasak Õpik anti esimest korda välja pdf-raamatuna (2013) Käesolevat väljaannet oluliselt täiendatud ja muudetud Õpiku väljaandmist on toetanud Tartu Ülikool Õpiku kujunduses on kasutatud

Rohkem

Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vasta

Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vasta Abiarstide tagasiside 2016 Küsimustikule vastas 137 tudengit, kellest 81 (60%) olid V kursuse ning 56 (40%) VI kursuse tudengid. Abiarstina olid vastanutest töötanud 87 tudengit ehk 64%, kellest 79 (91%)

Rohkem

Microsoft Word - TallinnLV_lihtsustatud_manual_asutuse_juhataja_ doc

Microsoft Word - TallinnLV_lihtsustatud_manual_asutuse_juhataja_ doc Tallinna Linnavalitsuse sõnumisaatja kasutusjuhend asutuse juhatajale Sisukord 1. Süsteemi sisenemine...2 2. Parooli lisamine ja vahetamine...2 3. Ametnike lisamine ametiasutuse juurde...2 4. Saatjanimede

Rohkem

Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Kuu Õpitulemus Õppesisu Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppet

Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Kuu Õpitulemus Õppesisu Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppet Matemaatika ainekava 8.klass 4 tundi nädalas, kokku 140 tundi Algebra (65 t.) Geomeetria (60 t.) Ajavaru kordamiseks (15 õppetundi) septembernovember korrastab hulkliikmeid Hulkliige. Tehted liidab, lahutab

Rohkem

loogikaYL_netis_2018_NAIDISED.indd

loogikaYL_netis_2018_NAIDISED.indd . Lihtne nagu AB Igas reas ja veerus peavad tähed A, B ja esinema vaid korra. Väljaspool ruudustikku antud tähed näitavad, mis täht on selles suunas esimene. Vastuseks kirjutage ringidesse sattuvad tähed

Rohkem

Praks 1

Praks 1 Biomeetria praks 3 Illustreeritud (mittetäielik) tööjuhend Eeltöö 1. Avage MS Excel is oma kursuse ankeedivastuseid sisaldav andmestik, 2. lisage uus tööleht, 3. nimetage see ümber leheküljeks Praks3 ja

Rohkem

Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Dian

Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Dian Õppematerjalide esitamine Moodle is (alustajatele) seminar sarjas Lõunatund e-õppega 12. septembril 2017 õppedisainerid Ly Sõõrd (LT valdkond) ja Diana Lõvi (SV valdkond) Järgmised e-lõunad: 10. oktoober

Rohkem

loeng2

loeng2 Automaadid, keeled, translaatorid Kompilaatori struktuur Leksiline analüüs Regulaaravaldised Leksiline analüüs Süntaks analüüs Semantiline analüüs Analüüs Masinkoodi genereerimine Teisendamine (opt, registrid)

Rohkem

Pealkiri on selline

Pealkiri on selline Kuidas keerulisemad alluvad muudaksid oma käitumist, kui juht seda soovib? Jaana S. Liigand-Juhkam Millest tuleb juttu? - Kuidas enesekehtestamist suhtlemises kasutada? - Miks kardetakse ennast kehtestada?

Rohkem

PowerPoint Presentation

PowerPoint Presentation Kick-off 30.06.2014 Toetuse kasutamise leping Kadri Klaos 30.06.2014 Lepingu struktuur Eritingimused Üldtingimused Lisa I, Projekti sisukirjeldus Lisa II, Projekti eelarve Lisa III, Projekti rahastamis-

Rohkem

G aiasoft Programmi VERP ja Omniva Arvekeskuse liidese häälestamine ja arvete saatmine-lugemine VERP 6.3 ja VERP 6.3E Versioon ja hilisemad K

G aiasoft Programmi VERP ja Omniva Arvekeskuse liidese häälestamine ja arvete saatmine-lugemine VERP 6.3 ja VERP 6.3E Versioon ja hilisemad K Programmi VERP ja Omniva Arvekeskuse liidese häälestamine ja arvete saatmine-lugemine VERP 6.3 ja VERP 6.3E Versioon 6.3.1.51 ja hilisemad Kasutaja juhend 2016 Sisukord 1. Sissejuhatus...3 2. Liidese häälestus...3

Rohkem

Kaupmehed ja ehitusmeistrid Selle laiendusega mängimiseks on vajalik Carcassonne põhimäng. Laiendit võib mängus kasutada täielikult või osaliselt ning

Kaupmehed ja ehitusmeistrid Selle laiendusega mängimiseks on vajalik Carcassonne põhimäng. Laiendit võib mängus kasutada täielikult või osaliselt ning Kaupmehed ja ehitusmeistrid Selle laiendusega mängimiseks on vajalik Carcassonne põhimäng. Laiendit võib mängus kasutada täielikult või osaliselt ning seda saab kombineerida teiste Carcassonne laiendustega.

Rohkem

MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite l

MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite l MS Word Sisukord Uue dokumendi loomine... 2 Dokumendi salvestamine... 3 Faili nimi... 4 Teksti sisestamine... 6 Klaviatuuril mitteleiduvat sümbolite lisamine... 6 Uue dokumendi loomine Dokumendi salvestamine

Rohkem

Microsoft Word - Referaat.docx

Microsoft Word - Referaat.docx Tartu Ülikool Andmeturve Referaat teemal: CVE-2016-1499 Koostaja: Sander Sats Kursus: Informaatika Tartu 2016 Sissejuhatus Käesolev referaat on kirjutatud seoses Tartu Ülikooli kursuse MTAT.03.134 Andmeturve

Rohkem

PHP

PHP PHP Autorid: Aleksandr Vaskin Aleksandr Bogdanov Keelest Skriptikeel skript teeb oma tööd pärast seda, kui toimus mingi sündmus* Orienteeritud programmeerija eesmärkide saavutamiseks (mugavus on tähtsam

Rohkem

ArcGIS Online Konto loomine Veebikaardi loomine Rakenduste tegemine - esitlus

ArcGIS Online Konto loomine Veebikaardi loomine Rakenduste tegemine - esitlus PILVI TAUER Tallinna Tehnikagümnaasium ArcGIS Online 1.Konto loomine 2.Veebikaardi loomine 3.Rakenduste tegemine - esitlus Avaliku konto loomine Ava ArcGIS Online keskkond http://www.arcgis.com/ ning logi

Rohkem

Antennide vastastikune takistus

Antennide vastastikune takistus Antennide vastastikune takistus Eelmises peatükis leidsime antenni kiirgustakistuse arvestamata antenni lähedal teisi objekte. Teised objektid, näiteks teised antennielemendid, võivad aga mõjutada antenni

Rohkem

VKE definitsioon

VKE definitsioon Väike- ja keskmise suurusega ettevõtete (VKE) definitsioon vastavalt Euroopa Komisjoni määruse 364/2004/EÜ Lisa 1-le. 1. Esiteks tuleb välja selgitada, kas tegemist on ettevõttega. Kõige pealt on VKE-na

Rohkem

ITI Loogika arvutiteaduses

ITI Loogika arvutiteaduses Lauseloogika: Loomulik tuletus Loomuliku tuletuse süsteemid on liik tõestussüsteeme nagu Hilbeti süsteemidki. Neile on omane, et igal konnektiivil on oma sissetoomise (intoduction) ja väljaviimise (elimination)

Rohkem

E-arvete juhend

E-arvete juhend E- arvete seadistamine ja saatmine Omniva kaudu Standard Books 7.2 põhjal Mai 2015 Sisukord Sissejuhatus... 3 Seadistamine... 3 Registreerimine... 4 E- arve konto... 5 Vastuvõtu eelistus... 5 Valik E-

Rohkem

PowerPointi esitlus

PowerPointi esitlus Regulaaravaldised ja skriptimine Windows ja UNIX operatsioonisüsteemides WINDOWS 1. slaid Windows käsurida Käsureaks nimetan programme: cmd.exe powershell.exe Nendesse saab kirjutada käske, millega näiteks

Rohkem

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019

PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019 PÄRNU TÄISKASVANUTE GÜMNAASIUM ESITLUSE KOOSTAMISE JUHEND Pärnu 2019 SISUKORD 1. SLAIDIESITLUS... 3 1.1. Esitlustarkvara... 3 1.2. Slaidiesitluse sisu... 3 1.3. Slaidiesitluse vormistamine... 4 1.3.1 Slaidid...

Rohkem

1. Üliõpilased 1.1 Tõendid Vali menüüst: Üliõpilased tõendid tõendite trükkimine. Avaneb vorm Tõendite trükkimine, vali tõendi liik Tõend õppim

1. Üliõpilased 1.1 Tõendid Vali menüüst: Üliõpilased tõendid tõendite trükkimine. Avaneb vorm Tõendite trükkimine, vali tõendi liik Tõend õppim 1. Üliõpilased 1.1 Tõendid Vali menüüst: Üliõpilased tõendid tõendite trükkimine. Avaneb vorm Tõendite trükkimine, vali tõendi liik. 1.1.1 Tõend õppimise kohta TLÜ-s Seda tõendiliiki saab väljastada ainult

Rohkem

Microsoft Word - installation-guide.doc

Microsoft Word - installation-guide.doc Dokumendi ajalugu: Versioon Kuupäev Tegevus Autor 1.0 12.04.2008 Dokumendi loomine Maris Aavik 1.1 13.04.2008 Täiendamine Maris Aavik 1.2 13.04.2008 Täiendamine Andres Kalle 1.3 12.05.2008 Täiendused Kerli

Rohkem

Operatsioonisüsteemide ehitus

Operatsioonisüsteemide ehitus Lõimed Ülevaade Lõime mõiste Lõimede mudelid Probleemid lõimedega seoses Pthreads Solarise lõimed Windows 2000 lõimed Linuxi lõimed Java lõimed VARMO VENE & MEELIS ROOS 2 Ühe- ja mitmelõimelised protsessid

Rohkem

Andmebaasid, MTAT Andmebaasikeeled 11.loeng

Andmebaasid, MTAT Andmebaasikeeled 11.loeng Andmebaasid, MTAT.03.264 Andmebaasikeeled 11. loeng Anne Villems Eksamiaegade valimine Kas on vaja eksamiaega mai lõpus? I eksami aeg. valikud: 3., 4. või 5. juuni kell 10.00 II eksami aeg. 17. kell 12.00

Rohkem

Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööa

Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööa Hoia oma arvuti turvaline ja kiire 1.Leia start nupust alustades Juhtpaneel 2.Juhtpaneeli aadressiribalt leia Kõik juhtpaneeli üksused 3.Avanenud tööaknas leia Windows Update 4.Lase arvutil kontrollida

Rohkem

(Microsoft PowerPoint - seminar_6_n\365uded-ainemudel tagasiside.ppt [Compatibility Mode])

(Microsoft PowerPoint - seminar_6_n\365uded-ainemudel tagasiside.ppt [Compatibility Mode]) Tarkvara projekt seminar VI Eelmise iteratsiooni tagasivaade, testimine, installatsioonijuhend, järgmise iteratsiooni näited. Karel Kravik Administratiivset:protestid Probleem: protestide hulk ja kvaliteet

Rohkem

Microsoft PowerPoint - IRZ0020_praktikum4.pptx

Microsoft PowerPoint - IRZ0020_praktikum4.pptx IRZ0020 Kodeerimine i ja krüpteerimine praktikum 4 Julia Berdnikova, julia.berdnikova@ttu.ee www.lr.ttu.ee/~juliad l 1 Infoedastussüsteemi struktuurskeem Saatja Vastuvõtja Infoallikas Kooder Modulaator

Rohkem

6. KLASSI MATEMAATIKA E-TASEMETÖÖ ERISTUSKIRI Alus: haridus- ja teadusministri määrus nr 54, vastu võetud 15. detsembril E-TASEMETÖÖ EESMÄRK Tas

6. KLASSI MATEMAATIKA E-TASEMETÖÖ ERISTUSKIRI Alus: haridus- ja teadusministri määrus nr 54, vastu võetud 15. detsembril E-TASEMETÖÖ EESMÄRK Tas 6. KLASSI MATEMAATIKA E-TASEMETÖÖ ERISTUSKIRI Alus: haridus- ja teadusministri määrus nr 54, vastu võetud 15. detsembril 2015. E-TASEMETÖÖ EESMÄRK Tasemetööga läbiviimise eesmärk on hinnata riiklike õppekavade

Rohkem

Mida me teame? Margus Niitsoo

Mida me teame? Margus Niitsoo Mida me teame? Margus Niitsoo Tänased teemad Tagasisidest Õppimisest TÜ informaatika esmakursuslased Väljalangevusest Üle kogu Ülikooli TÜ informaatika + IT Kokkuvõte Tagasisidest NB! Tagasiside Tagasiside

Rohkem

M16 Final Decision_Recalculation of MTR for EMT

M16 Final Decision_Recalculation of MTR for EMT 1 OTSUS Tallinn 22.juuni 2007 J.1-45/07/7 Mobiiltelefonivõrgus häälkõne lõpetamise hinnakohustuse kehtestamine AS EMT- le Sideameti 21. märtsi 2006. a otsusega nr J.1-50/06/2 tunnistati AS EMT (edaspidi

Rohkem

Statistikatarkvara

Statistikatarkvara Sissejuhatus statistika erialasse, sissejuhatus matemaatika erialasse, 20. september 2018 Statistikatarkvara põgus ülevaade Krista Fischer Statistikatarkvara kategooriad Võib jagada mitut moodi: Tarkvara,

Rohkem

MTAT Operatsioonisüsteemid - Turvalisus

MTAT Operatsioonisüsteemid - Turvalisus Regulaaravaldised ja skriptimine Windows ja UNIX operatsioonisüstemides WINDOWS 1. slaid Windows käsurida Käsureaks nimetan programme: cmd.exe powershell.exe command.com Nendesse saab kirjutada käske,

Rohkem

Algoritmid ja andmestruktuurid

Algoritmid ja andmestruktuurid Algoritmid ja andmestruktuurid Arvutipraktikum 2017/2018 sügissemestril J.Liivi 2-202, E12-14 J.Liivi 2-202, T14-16 kodu.ut.ee/~kiho/ads/fall17 Jüri Kiho jyri.kiho@ut.ee Eesmärgid Paremini omandada, kinnistada

Rohkem

Microsoft Word - VOTA_dok_menetlemine_OIS_ doc

Microsoft Word - VOTA_dok_menetlemine_OIS_ doc Varasemate õpingute ja töökogemuse arvestamine (VÕTA ) dokumentide menetlemise protsess ÕISis Koostanud: Ele Hansen Ele Mägi Tartu 2012 1. Aine ülekandmine-õppekavajärgne aine Varasemalt sooritatud aine

Rohkem

VL1_praks6_2010k

VL1_praks6_2010k Biomeetria praks 6 Illustreeritud (mittetäielik) tööjuhend Eeltöö 1. Avage MS Excel is oma kursuse ankeedivastuseid sisaldav andmestik, 2. lisage uus tööleht (Insert / Lisa -> Worksheet / Tööleht), nimetage

Rohkem

8.klass 4 tundi nädalas, kokku 140 tundi Hulkliikmed ( 45 tundi) Õppesisu Hulkliige. Hulkliikmete liitmine ja lahutamine ning korrutamine ja jagamine

8.klass 4 tundi nädalas, kokku 140 tundi Hulkliikmed ( 45 tundi) Õppesisu Hulkliige. Hulkliikmete liitmine ja lahutamine ning korrutamine ja jagamine 8.klass 4 tundi nädalas, kokku 140 tundi Hulkliikmed ( 45 tundi) Hulkliige. Hulkliikmete liitmine ja lahutamine ning korrutamine ja jagamine üksliikmega. Hulkliikme tegurdamine ühise teguri sulgudest väljatoomisega.

Rohkem

Praks 1

Praks 1 Biomeetria praks 6 Illustreeritud (mittetäielik) tööjuhend Eeltöö 1. Avage MS Excel is ankeedivastuseid sisaldav andmestik, 2. lisage uus tööleht, nimetage see ümber leheküljeks Praks6 ja 3. kopeerige

Rohkem

19. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Arvridade koonduvustunnused Sisukord 19 Arvridade koonduvustunnused Vahelduvat

19. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, Arvridade koonduvustunnused Sisukord 19 Arvridade koonduvustunnused Vahelduvat 9. Marek Kolk, Kõrgem matemaatika, Tartu Ülikool, 203-4. 9 Arvridade koonduvustunnused Sisukord 9 Arvridade koonduvustunnused 23 9. Vahelduvate märkidega read.......................... 24 9.2 Leibniz i

Rohkem

KASUTUSJUHEND

KASUTUSJUHEND KASUTUSJUHEND Sissejuhatus Kui valvesüsteem on valvessepanekuks valmis ning puuduvad rikke- ning häireteated, kuvatakse sõrmistiku displeil kellaaeg, kuupäev ning tekst Enter Your Code sisestage kood Peale

Rohkem

Operatsioonisüsteemi ülesanded

Operatsioonisüsteemi ülesanded Praktikum 2 OPERATSIOONISÜSTEEMIDE MASSPAIGALDUS Operatsioonisüsteemide masspaigaldus Suure arvu arvutisüsteemide korral ei ole mõistlik operatsioonisüsteeme paigaldada manuaalselt. Operatsioonisüsteemide

Rohkem

P9_10 estonian.cdr

P9_10 estonian.cdr Registreerige oma toode ja saage abi kodulehelt www.philips.com/welcome P9/10 Eestikeelne kasutusjuhend 2 Ühendage P9 kõlar Bluetooth ühenduse kaudu oma Bluetooth seadmega, nagu näiteks ipadiga, iphone'iga,

Rohkem

PRESENTATION HEADER IN GREY CAPITALS Subheader in orange Presented by Date Columbus is a part of the registered trademark Columbus IT

PRESENTATION HEADER IN GREY CAPITALS Subheader in orange Presented by Date Columbus is a part of the registered trademark Columbus IT PRESENTATION HEADER IN GREY CAPITALS Subheader in orange Presented by Date Columbus is a part of the registered trademark Columbus IT Täisautomatiseeritud ostujuhtimise lahenduse loomine Selveri näitel

Rohkem

Microsoft Word - EHR.docx

Microsoft Word - EHR.docx earvekeskus E-ARVE TELLIMUSTE JUHEND 1 Sisukord E-arvete tellimused... 3 Klientide tellimused... 3 E-arve tellimuse lisamine... 3 E-arve tellimuse muutmine... 9 Minu tellimused... 10 Minu tellimuse sisestamine...

Rohkem

Praks 1

Praks 1 Biomeetria praks 6 Illustreeritud (mittetäielik) tööjuhend Eeltöö 1. Avage MS Excel is oma kursuse ankeedivastuseid sisaldav andmestik, 2. lisage uus tööleht, nimetage see ümber leheküljeks Praks6 ja 3.

Rohkem

Loeng03

Loeng03 Loeng 03 Failiõigused ja -manipulatsioon Operatsioonisüsteemide administreerimine ja sidumine I233 Katrin Loodus, Tallinn 2015 Failid ja kataloogid Mis on fail? Linuxi laadsetes süsteemides on kõik failid

Rohkem

3D mänguarenduse kursus (MTAT ) Loeng 3 Jaanus Uri 2013

3D mänguarenduse kursus (MTAT ) Loeng 3 Jaanus Uri 2013 3D mänguarenduse kursus (MTAT.03.283) Loeng 3 Jaanus Uri 2013 Teemad Tee leidmine ja navigatsioon Andmete protseduuriline genereerimine Projektijuhtimine Tee leidmine Navigatsiooni võrgustik (navigation

Rohkem

Pealkiri

Pealkiri Andmebaasid (6EAP) I praktikum Mida praktikumides tehakse? Õpitakse SQL i Tehakse andmebaas ope (igas praktikumis natuke, kuni lõpuks saab valmis) Tehakse andmebaas edu (kui ope on valmis, tehakse edu,

Rohkem

2016 aasta märtsi tulumaksu laekumine omavalitsustele See ei olnud ette arvatav Tõesti ei olnud, seda pole juhtunud juba tükk aega. Graafikult näeme,

2016 aasta märtsi tulumaksu laekumine omavalitsustele See ei olnud ette arvatav Tõesti ei olnud, seda pole juhtunud juba tükk aega. Graafikult näeme, 2016 märtsi tulumaksu laekumine omavalitsustele See ei olnud ette arvatav Tõesti ei olnud, seda pole juhtunud juba tükk aega. Graafikult näeme, et märtsis laekus tulumaksu eelmise märtsist vähem ka 2009

Rohkem

Microsoft Word - Vx610 EMV KASUTUSJUHEND.doc

Microsoft Word - Vx610 EMV KASUTUSJUHEND.doc MAKSETERMINALI KASUTUSJUHEND VERIFONE Vx610 GSM Kliendiabi: (0) 6711 444 (kõik nädalapäevad 24 h) Makseterminalide osakond: (0) 6711 411 (tööpäeviti kell 9.00 17.00) Faks: (0) 6711 420 Email: posgrupp@estcard.ee

Rohkem

MTAT Operatsioonisüsteemid - Turvalisus

MTAT Operatsioonisüsteemid - Turvalisus Regulaaravaldised ja skriptimine Windows ja UNIX operatsioonisüstemides WINDOWS 1. slaid Windows käsurida Käsureaks nimetan programme: cmd.exe powershell.exe command.com (tänapäevastes OS ei kasutata)

Rohkem

E-õppe ajalugu

E-õppe ajalugu Koolituskeskkonnad MTAT.03.142 avaloeng Anne Villems September 2014.a. Põhiterminid Koolituskeskkonnad (Learning environments) IKT hariduses (ICT in education) E-õpe (e-learning) Kaugõpe (distance learning)

Rohkem

SQL

SQL SQL Teine loeng Mõtelda CREATE TABLE ( { INTEGER VARCHAR(10)} [ NOT NULL] ); Standard SQL-86 (ANSI X3.135-1986), ISO võttis üle 1987 SQL-89 (ANSIX3.135-1989) SQL-92 (ISO/IEC 9075:1992)

Rohkem