Matematiikan ohjelmointi. Joakim von Wright



Samankaltaiset tiedostot
Miten tehdää. ään n virheettömi. miä ohjelmia. Ralph-Johan Back Joakim von Wright Åbo Akademi TUCS Formaalit menetelmät t ohjelmoinnissa ryhmä

Rakenteiset päättelyketjut ja avoin lähdekoodi

E-math - sa hko inen oppimisympa risto matematiikan opiskeluun. Ralph-Johan Back Åbo Akademi (Virtuaaliopetuksen päivät 2013)

2 Sanoja järjestävän funktion ohjelmoiminen

Logiikka 1/5 Sisältö ESITIEDOT:

4.3. Matemaattinen induktio

Matematiikan olemus Juha Oikkonen

Diskreetit rakenteet. 3. Logiikka. Oulun yliopisto Tietojenkäsittelytieteiden laitos 2015 / 2016 Periodi 1

Johdatus matematiikkaan

Täydentäviä muistiinpanoja laskennan rajoista

Todistusmenetelmiä Miksi pitää todistaa?

811120P Diskreetit rakenteet

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 8. syyskuuta 2016

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Matematiikan tukikurssi

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 3. joulukuuta 2015

DFA:n käyttäytyminen ja säännölliset kielet

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

Oleelliset vaikeudet OT:ssa 1/2

Perusopetuksen matematiikan pitkittäisarviointi

-Matematiikka on aksiomaattinen järjestelmä. -uusi tieto voidaan perustella edellisten tietojen avulla, tätä kutsutaan todistamiseksi

Symbolinen laskin perinteisissa pitka n matematiikan ylioppilaskirjoituksissa

Todistusteoriaa. Kun kielen syntaksi on tarkasti määritelty, voidaan myös määritellä täsmällisesti, mitä pätevällä päättelyllä tarkoitetaan.

Johdatus matematiikkaan Tero Kilpeläinen

Johdanto. TIE303 Formaalit menetelmät, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos.

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

T Syksy 2004 Logiikka tietotekniikassa: perusteet Laskuharjoitus 12 (opetusmoniste, kappaleet )

Määrittelyvaihe. Projektinhallinta

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä, todistuksia ym., osa I

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

5.1 Semanttisten puiden muodostaminen

LUKU II HOMOLOGIA-ALGEBRAA. 1. Joukko-oppia

Lisää kvanttoreista ja päättelyä sekä predikaattilogiikan totuustaulukot 1. Negaation siirto kvanttorin ohi

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 2. helmikuuta 2012

14/20: Keittokirja I

Insinöörimatematiikka A

Ohjelmistojen mallintaminen, mallintaminen ja UML

Kahden suoran leikkauspiste ja välinen kulma (suoraparvia)

Johdatus matematiikkaan

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

} {{ } kertaa jotain

Matematiikan opetuksen kehittäminen avoimen lähdekoodin ohjelmistojen avulla Petri Salmela & Petri Sallasmaa

Todistamisajattelun opettaminen. Iida Kyyrönen

19/20: Ikkuna olio-ohjelmoinnin maailmaan

1. Olio-ohjelmointi 1.1

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

2. Eukleideen algoritmi

Matematiikkaa logiikan avulla

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmoinnin perusteet Y Python

4. Lausekielinen ohjelmointi 4.1

Rinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi

Soveltuvuustutkimus Lifebelt-ohjelman ideologian käytettävyydestä olioorientoituneeseen

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016

Esimerkkejä polynomisista ja ei-polynomisista ongelmista

LAUSEKKEET JA NIIDEN MUUNTAMINEN

Reaaliarvoisen yhden muuttujan funktion derivaatta LaMa 1U syksyllä 2011

Imperatiivisten ohjelmien organisointiparadigmojen. historia

Imperatiivisten ohjelmien organisointiparadigmojen historia

2.1. Tehtävänä on osoittaa induktiolla, että kaikille n N pätee n = 1 n(n + 1). (1)

Approbatur 3, demo 1, ratkaisut A sanoo: Vähintään yksi meistä on retku. Tehtävänä on päätellä, mitä tyyppiä A ja B ovat.

Tarvikkeet: A5-kokoisia papereita, valmiiksi piirrettyjä yksinkertaisia kuvioita, kyniä

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

MS-A0402 Diskreetin matematiikan perusteet Esimerkkejä ym., osa I

Johdatus ohjelmointiin

kontrollivuon analyysejä optimointiensa tueksi ja myös tiettyjen merkitysopillisten

Algoritmin määritelmä [Sipser luku 3.3]

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Toinen muotoilu. {A 1,A 2,...,A n,b } 0, Edellinen sääntö toisin: Lause 2.5.{A 1,A 2,...,A n } B täsmälleen silloin kun 1 / 13

Johdatus matematiikkaan

MATEMATIIKAN KOE, LYHYT OPPIMÄÄRÄ HYVÄN VASTAUKSEN PIIRTEITÄ

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Ohjelmoinnin peruskurssien laaja oppimäärä

Miljö,, samarbete, teknologi

KESKEISET SISÄLLÖT Keskeiset sisällöt voivat vaihdella eri vuositasoilla opetusjärjestelyjen mukaan.

Java-kielen perusteet

Saatteeksi. Lassi Kurittu

Yhtenäisyydestä. Johdanto. Lähipisteavaruus. Tuomas Korppi

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

uv n, v 1, ja uv i w A kaikilla

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Muita vaativuusluokkia

NC-koneet ja niiden ohjelmointi

Tietojenkäsittelyteorian alkeet, osa 2

Johdatus matematiikkaan Tero Kilpeläinen

Turmeleeko ohjelmointi nuorisomme?

ITK130 Ohjelmistojen luonne

Viivakoodin viiteopas

Entscheidungsproblem

Diskreetin matematiikan perusteet Laskuharjoitus 1 / vko 8

1.5 Suljetulla välillä jatkuva funktio. Perusominaisuudet.

Software engineering

Oppimistavoitteet kurssilla Rinnakkaisohjelmointi

Entscheidungsproblem

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

4 Matemaattinen induktio

Transkriptio:

Matematiikan ohjelmointi Joakim von Wright

Formaali menetelmä käytännössä miten todistetaan ohjelman oikeellisuus? miltä todistus näyttn yttää? isot ohjelmat? miljoona riviä koodia nykyajan ohjelmat? rinnakkaisuus, vuorovaikutteisuus,...

Todistamisen asema todistaminen on formaalin menetelmän n ydin mitä tarkoittaa todistus? matematiikan epäformaali todistus geometrian aksiomaattinen todistus logiikan formaali todistus

Epäformaali ja formaali todistus matematiikan kuva todustuksesta vakuuttava periaatteessa formalisoitavissa havainnollinen (surveyable) täysin formaali todistus matematiikassa? ei käytk ytännöllistä

Miiksi formaali todistus? ohjelman oikeellisuustodistus on erilainen todistuksen luotettavuus tärket rkeämpi kuin kauneus todistus pitää saada heti oikeaksi todistukset suuria......mutta sisält ltävät t paljon pieniä rutiinitodistuksia

Ohjelma matemaattisena oliona ohjelmointikielen näkökulman kulma i := 1 s := 0 while i <= n: s := s+i i := i+1 algebrallinen näkökulman kulma i=1 ; s=0 ; while (i n) (s=s+i ; i=i+1)

Ohjelmointilogiikka ohjelmia varten tarvitaan ohjelmointilogiikka tavoitteena oikeellisuuden todistaminen pohjalla klassinen logiikka lisäksi erikoispiirteet muuttujan käsite k erilainen kuin matematiikassa

Ohjelmointilogiikan perusideat oikeellisuusväitt ittämä (ns Hoare-logiikka) {pre} program {post} jos pre pätee alussa niin ohjelman suoritus päättyy tilassa jossa post pätee eri ohjelmointirakenteille omat sääs äännöt todistus jakautuu pienempiin osatodistuksiin pohjatason osatodistukset usein triviaaleja

Ohjelmointilogiikan sääs äännöt sijoitussää ääntö pre post[x:=e] {pre} x=e {post} sekvenssisää ääntö {pre} S1 {mid} {mid} S2 {post} {pre} S1;S2 {post} toistosää ääntö p inv {C & inv} S {inv} inv & C q {C & inv} S {inv} {p} while C S {q}

Osatodistukset i:=0 ; s:=0 ; while (i n) (s:=s+i ; i:=i+1) i:=0 s:=0 while (i n) (s:=s+i ; i:=i+1) s:=s+i ; i:=i+1 s:=s+i i:=i+1

Oikeellisuustodistus todistettava: {n 0} s:=0;i:=0;while(i n)(s:=s+i;i:=i+1) {s=1+2+...+n} sekvenssisää ääntö: : kolme osatodistusta {n 0} s:=0 {n 0 0 & s=0} {n 0 0 & s=0} i:=0 {n 0 0 & s=0 & i=0} {n 0 0 & s=0 & i=0} while(i n)(s:=s+i;i:=i+1) {s=1+2+...+n} väliin tulevat väiittv iittämät t täytyy t keksiä itse

Osatodistus 1 {n 0} s:=0 {n 0 0 & s=0} sijoitussää äännön n avulla saadaan n 0 n 0 0 & 0=0 peruslogiikka todistaa tämänt ensimmäinen inen osatodistus hoidettu, rutiininomaisesti

Todistuksen esittäminen voiko todistus samalla olla formaali ja ihmiselle ymmmärrett rrettävä? ryhmäss ssämme kehitetty esitysmuoto: rakenteinen johto (structured derivation)

Rakenteisten johtojen selailu html-teknologia teknologia todistusta voi katsoa webiltä todistusta voi selailla osatodistus avataan: yksityiskohdat nakyvät todistusta voi kehittää

Rakenteisten johtojen käyttk yttö sopiva matemattisten ratkaisujen esitysmuoto ryhmäss ssämme kehitetää ään n ratkaisumetodiikkaa joka käyttk yttää logiikkaa ja rakenteisia johtoja yhtälöiden ratkaiseminen lausekkeiden sievennys analyysi, ym testaus: yo-matematiikan tehtävi viä

Koulumatematiikka-projekti yhteisprojekti ÅA - TY - Kupittaan lukio pitkän n matematiikan ryhmä käyttää metodiikkaa läpi l koko lukion (op. Mia Peltomäki) vertausryhmäll llä perinteinen opetus kokeilu aloitetty syksyllä 2001, alustavat tulokset lupaavia

Ohjelmointimetodiikka suuren ohjelman oikeaksi todistaminen jälkeenpäin (verifiointi) ei onnistu todistaminen on osa ohjelman rakentamista ryhmäss ssämme kehitetää ään n tarkennuskalkyyli Dijkstran weakest precondition-käsitteeseen perustuva ohjelmointilogiikka ja -metodiikka voimaakkaampi kuin Hoare-logiikka

Tarkennuskalkyyli ohjelmointiilogiikassa määm ääritellään tarkennusrelaatio (refinement, ) S1 S2 tarkoittaa että S2:lla on kaikki S1:n S oikeellisuusominaisuudet S2 on S1:n S uusi/parannettu/laajennettu versio kalkyylin sääs äännöt t kertovat miten saadaan S2S kun tiedetää ään n S1S ja toivottu lisäys

Tarkennusmetodiikka OhjelmaV.2 lisäominaisuuksien oikeellisuustodistus tarkennusaskeleen todistus OhjelmaV.1 perusominaisuuksien oikeellisuustodistus

Käsin todistamisen rajat käsin voidaan todistaa yleisiä sääntöjä pieniä esimerkkejä erityisen vaativia yksityiskohtia nykypäiv ivän n haasteet ohjelmat ovat suuria rinnakkaisuus, vuorovaikutteisuus, jne...

Todistaminen tietokoneella miten hallitaan suuret todistukset? tarvitaan tietokoneen apua tietokoneen käyttk yttö todistustyöss ssä: kertakäytt yttöohjelma (esim 4-väriteoreema, 4 1976) todistusjärjestelm rjestelmä (mekanisoitu logiikka)

Mikä on todistusjärjestelm rjestelmä? interaktiivinen ohjelma joka manipuloi kaavoja tietyt kaavat saavat statuksen teoreema pieni ydin: aksiomat + pääp äättelysäännöt teoreema todistetaan aina formaalisti todistusstrategioita voi ohjelmoida teoreemoja voi sääs äästää,, käyttk yttää,,... mahdollistaa todistusten teollista tuotantoa

Todistusjää äärjestelmän n rakenne todistusjärjestelmä ydin thm ax

Mekanisoitu ohjelmointilogiikka HOL-järjestelm rjestelmä sisält ltää peruslogiikan x y x = y ohjelmointikäsitteet formalisoidaan ; =... while =... todustussää äännöt t todistetaan oikeiksi todistusstrategiat ohjelmoidaan

Mekanisoitu oikeellisuustodistus syötet tetään n todistettava (goal) HOL hyväksyy ja odottaa valitaan sääs ääntö HOL näyttn yttää mitä pitää viellä todistaa (subgoals) tarvittaessa annetaan sääs äännön n argumentit invariantti tämä interaktio vaatii osaamista

Kohti automatisoitua todistusta tarkennuskalkyyli on mekanisoitu (HOL) inkrementaalinen ohjelmointi: osatodistukset sopivan kokoisia todistusta ohjaava tieto sijoitetaan ohjelmatekstiin: esim. invariantit HOL todistaa sen minkä voi ja näyttn yttää mitä vielä tarvitsee todistaa

Nykyajan ohjelmistot rinnakkaisuus useita pankiiautomaattia käytk ytössä yhtaikaa vuorovaikutteisuus käyttäjä ohjaa automaattia, valitsee toimintoja olio-ohjelmointii ohjelmointii jne...

Rinnakkaisuus samanaikainen ohjelmansuoritus rinnakkaiset toiminnot tulkitaan toisensa jälkeen tapahtuviksi (jossain järjestyksessj rjestyksessä) uusi käsite: k epämääräisyys (nondeterminism)

Rinnakkaisuus SA SB? SA SB SB SA

Rinnakkaisuus ohjelmointilogiikassa epämää ääräinen valintaoperaattori ( tai( tai ) rinnakkaisuutta ilmaistaan valinnalla SA;SB SB;SS ;SA uudentyyppisiä todistusehtoja sopivasti laajennettu ohjelmointilogiikka toimii yhä

Vuorovaikutteisuus perinteinen ohjelma laskee tuloksen suorituksen lopputulos riippuu vain lähtl htöarvoista nykypäiv ivän n ohjelma palvelee käyttk yttäjiä käyttäja voi olla ihminen, kone, toinen ohjelma... ohjelmointilogiikan täytyy t huomioida eri osapuolia ja niiden tavoitteet, oikeudet, jne lisätää ään n käsite k peli

Vuorovaikutteisuus ohj.logiikassa oikeellisuusväitt ittämä {pre} prog {post} klassinen tulkinta: ohjelma saavuttaa aina post pelitulkinta: tekemäll llä oikeat valinnat käyttk yttäjä voi varmistaa sen että post saavutetaan sopivasti laajennettu ohjelmointilogiikka toimii yhä

Päätelmät virheettömi miä ohjelmia voi rakentaa formaaleilla menetelmillä on tulevaisuus käytännön n ohjelmistotyöss ssä tavoitteena ohjelmointiympärist ristö jonka yhdessä valikossa on vaihtoehto todista