BOSK F2012, 1. del: Prædikatslogik



Relaterede dokumenter
t a l e n t c a m p d k Matematiske Metoder Anders Friis Anne Ryelund 25. oktober 2014 Slide 1/42

Matematiske metoder - Opgavesæt

BOSK F2011, 1. del: Induktion

BOSK F2011, 1. del: Udsagnslogik

1 < 2 og 1 > 2 (2.1) er begge udsagn. Det første er sandt det andet er falsk. Derimod er

Elementær Matematik. Mængder og udsagn

Matematiske metoder - Opgaver

01017 Diskret Matematik E12 Alle bokse fra logikdelens slides

Baggrundsnote om logiske operatorer

Matematisk Metode Notesamling

Opgaver i logik, torsdag den 20. april

Matematisk induktion

t a l e n t c a m p d k Talteori Anne Ryelund Anders Friis 16. juli 2014 Slide 1/36

Gödel: Über formal unentschiedbare Sätze der Principia Mathematica und verwandter Systeme I, 1931

Noter til Perspektiver i Matematikken

Logik. Helge Elbrønd Jensen og Tom Høholdt Fortolket af Michael Elmegård og Øistein Wind-Willassen.

Introduktion til prædikatlogik

Analyse 2. Gennemgå bevis for Sætning Supplerende opgave 1. Øvelser. Sætning 1. For alle mængder X gælder #X < #P(X).

Forslag til løsning af Opgaver til afsnittet om de naturlige tal (side 80)

De rigtige reelle tal

Funktionsterminologi

//Udskriver System.out.println("Hej " + ditfornavn + " " + ditefternavn + "."); System.out.println("Du er " + dinalder + " aar gammel!

Funktionsterminologi

Diskrete Matematiske Metoder. Jesper Lützen

Kursus 02199: Programmering. Kontrol af programudførelsen. afsnit if (indkomst > ) topskat = (indkomst ) * 0.

Forelæsning Uge 2 Mandag

Spilstrategier. 1 Vindermængde og tabermængde

Matematisk Metode. Jesper Lützen og Ian Kiming

Brug og Misbrug af logiske tegn

Undersøgende aktivitet om primtal. Af Petur Birgir Petersen

Opgave 1. Hvilket af følgende tal er størst? Opgave 2. Hvilket af følgende tal er mindst? Opgave 3. Hvilket af følgende tal er størst?

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

2. Gruppen af primiske restklasser.

Implikationer og Negationer

P vs. NP. Niels Grønbæk Matematisk Institut Københavns Universitet 3. feb. 2012

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Sproget Rascal (v. 2)

Forelæsning Uge 2 Mandag

Spilstrategier. Indhold. Georg Mohr-Konkurrencen. 1 Vindermængde og tabermængde 2. 2 Kopier modpartens træk 4

Aalborg University. Synopsis. Titel: Traveling Salesman Problem

Kalkulus 2 - Grænseovergange, Kontinuitet og Følger

Forelæsning Uge 2 Mandag

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

Primtal - hvor mange, hvordan og hvorfor?

Greenfoot En kort introduktion til Programmering og Objekt-Orientering

Ugeseddel 4 1. marts - 8. marts

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Udsagnslogik. Anker Mørk Thomsen. 6. december 2013

Integer.parseInt(args[0]) konverterer tegnstreng (f.eks. "10") til heltal (10). if (udtryk) else

Bevisteknikker (relevant både ved design og verifikation)

TALTEORI Ligninger og det der ligner.

A. Appendix: Løse ender.

Forelæsning Uge 2 Torsdag

16. december. Resume sidste gang

Gruppeteori. Michael Knudsen. 8. marts For at motivere indførelsen af gruppebegrebet begynder vi med et eksempel.

Sortering. Eksempel: De n tal i sorteret orden

Nogle grundlæggende begreber

Sortering af information er en fundamental og central opgave.

Forelæsning Uge 2 Mandag

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Kalkulus 1 - Opgaver. Anne Ryelund, Anders Friis og Mads Friis. 20. januar 2015

Logik. Af Peter Harremoës Niels Brock

Sortering. Eksempel: De n tal i sorteret orden

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Skriftlig eksamen i Datalogi

Boolsk algebra For IT studerende

Appendiks 6: Universet som en matematisk struktur

16. marts P NP. Essentielle spørgsmål: NP P? Et problem Q kaldes NP -fuldstændigt 1 Q NP 2 R NP : R pol Q. Resume sidste gang

Boolsk algebra For IT studerende

Kapitel 3 Betinget logik i C#

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

DANMARKS TEKNISKE UNIVERSITET

Noter til C# Programmering Iteration

Polynomier. Indhold. Georg Mohr-Konkurrencen. 1 Polynomier 2. 2 Polynomiumsdivision 4. 3 Algebraens fundamentalsætning og rødder 6

Divisorer. Introduktion. Divisorer og delelighed. Divisionsalgoritmen. Definition (Divisor) Lad d og n være hele tal. Hvis der findes et helt tal q så

t a l e n t c a m p d k Matematik Intro Mads Friis, stud.scient 7. november 2015 Slide 1/25

Euklids algoritme og kædebrøker

Et udtryk på formena n kaldes en potens med grundtal a og eksponent n. Vi vil kun betragte potenser hvor grundtallet er positivt, altså a>0.

Sortering af information er en fundamental og central opgave.

Klassetrinsgruppering=0-3 klasse

4 ledtråde til at hjælpe dig i arbejdet med dit Solar Plexus

Eksempler på elevbesvarelser af gådedelen:

Talteori. Teori og problemløsning. Indhold. Talteori - Teori og problemløsning, august 2013, Kirsten Rosenkilde.

Algoritmer og invarianter

Sproget Limba. Til brug i G1 og K1. Dat1E 2003

brikkerne til regning & matematik tal og algebra F+E+D preben bernitt

3 Algebraisk Specifikation af Abstrakte Datatyper.

Omskrivningsregler. Frank Nasser. 10. december 2011

Design by Contract Bertrand Meyer Design and Programming by Contract. Oversigt. Prædikater

Resultatskema kommunen: Hvordan har du det? 2011 I procent, antal i parentes

Beck Depressions Test - ( søg: BDI = Beck Depression Inventory). Hvilket af disse 4 x 21 udsagn beskriver bedst, det som du føler?

JESUS ACADEMY TEMA: GUDS FULDE RUSTNING

Tip til 1. runde af Georg Mohr-Konkurrencen. Talteori. Georg Mohr-Konkurrencen

Jeg foretager her en kort indføring af polynomier over såvel de reelle som

Vejledende løsninger

Trivselsmåling 2015, klasse Varde Kommune

Trivselsmåling 2015 Mellemtrin

Induktive og rekursive definitioner

Tip til 1. runde af Georg Mohr-Konkurrencen Algebra

Algebra - Teori og problemløsning

Transkript:

ε > 0. δ > 0. x. x a < δ f (x) L < ε February 8, 2012

Prædikater Vi skal lære om prædikatslogik lad os starte med prædikater. Et prædikat er et orakel der svarer ja eller nej. Eller mere præcist: Prædikater Et prædikat er en funktion fra en mængde som vi kalder prædikatets domæne til mængden af sandhedsværdier: {S, F }. Vi bruger tit mængden af naturlige tal N som domæne. Et eksempel på et prædikat med domæne N er følgende: { S hvis man som n-årig kan modtage efterløn eller pension E(n) = F hvis man ikke kan. I skrivende stund har vi eksempelvis E(60) = S og E(32) = F. Bemærk at det ikke går at spørge om E( 10) er sandt eller falsk for vi er røget ud af domænet.

Hotdogprædikatet og Java Hotdogprædikatet H med domæne N er tankevækkende: { S hvis der er muligt at spise n hotdogs på 10 min. P(n) = F ellers I Java vil det se omtrent sådan ud: Hotdogprædikatet i Java public static boolean hotdog(int n) { return n <= 68; } Metoden tager et argument af typen int der nogenlunde modsvarer N og returnerer en værdi af typen boolean.

Hotdogs eller efterløn: Universel kvantifikation Lad n N være et vilkårligt naturligt tal. Hvis n 60 har vi at E(n) holder. Hvis n 68 har vi at H(n) holder. Og da n 60 n 68 har vi at prædikatet D med domæne N givet ved D(n) = E(n) H(n) giver sandt, uanset input. Dette skriver vi n N. D(n). Universel kvantifikation For et prædikat P med domæne D skriver vi d D. P(d) og mener at P giver sand på alle elementerne i domænet. Tænk gerne maskinelt : Løb alle værdierne i domænet igennem og hvis P faktisk svarer sand til dem alle så har vi d D. P(d). Men hvis en eller flere giver falsk går den ikke, så er d D. P(d) selv falsk og d D. P(d) sand.

Universel kvantifikation: for og imod d D. P(d) er sand hvis P altid returnerer sand. Derfor: Den svære at bevise universel kvantifikation For at bevise d D. P(d) skal vi godtgøre at P(d) = S uanset valg af d D. Da D kan være endda overordentlig stor fører vi tit et abstrakt argument: lad d D være vilkårligt,..., P(d) er sand. Den lette at modbevise universel kvantifikation For at modbevise d D. P(d) skal vi blot hitte et vidne, det vil sige et element i D som giver falsk. Eksempelvis har vi ikke n N. E(n) H(n). Hvorfor ikke? Tag n = 1 N, vi får E(1) H(1) = F S = F. Liden tue kan vælte stort læs. Hvis man kan finde den.

At bevise (!) universel kvantifikation i Java Undertiden kan vi eftervise universel kvantifikation i Java. Metoden er sjældent anvendelig men giver en vis intuition. Vi vil vise at n {1, 2, 3, 4, 5}. n! n n n. Gennemløb i Java boolean result = true; for(int n = 1; n <= 5; n++) { boolean ntruth = fact(n) <= n * n * n; result = result && ntruth; } System.out.println("Udsagnet er : " + result); Output Udsagnet er : true

At modbevise (!!) universel kvantifikation i Java At modbevise universel kvantifikation i Java er mere realistisk. Vi lader programmet finde modeksemplet for os. Vi vil modbevise følgende, som man kunne forledes til at tro efter forrige slide: n {1, 2, 3,...}. n! n n n. Gennemløb i Java for(int n = 1; true; n++) { if(fact(n) > n*n*n) { System.out.println("n = "+n+" er modeksempel."); break; } } Output n = 6 er modeksempel.

Hotdogs og efterløn: Eksistentiel kvantifikation Vi så at n N. E(n) H(n) ikke gik, fordi E(1) H(1) = F. Omvendt har vi 64 N og E(64) H(64) = S S = S. Der findes altså et element i domænet som gør prædikatet sandt. Dette skriver vi n N. E(n) H(n). Eksistentiel kvantifikation For et prædikat P med domæne D skriver vi d D. P(d) og mener at P giver sand på et eller flere elementer i domænet. Tænk igen maskinelt : Løb alle værdierne i domænet igennem, hvis P svarer sand en eller flere gange, så har vi d D. P(d). Men hvis alle elementer giver falsk går den ikke, så er d D. P(d) selv falsk og d. P(d) sand.

Eksistentiel kvantifikation: for og imod d D. P(d) holder hvis P er sand for mindst et element. Derfor: Den lette at bevise eksistentiel kvantifikation Vi viser d D. P(d) ved at fremvise et vidne, det vil sige et element d D så P(d) holder. I tilfældet n N. E(n) H(n) er 64 et sådant vidne. Den svære at modbevise eksistentiel kvantifikation For at modbevise d D. P(d) skal vi godtgøre P(d) = F uanset valg af d D. Vi fører hyppigt et abstrakt argument i stil med følgende: lad d D være vilkårligt,..., P(d) er falsk.

At bevise eksistentiel kvantifikation i Java Vi viser eksistentiel kvantifikation ved at rode rundt i domænet indtil vi (måske) finder et vidne. Til tider kan Java tage slæbet, lad os eksempelvis eftervise n N. n 2 + (n + 7) 2 = (n + 32) 2. Gennemløb i Java for(int n = 0; true; n++) { if(n*n + (n+7)*(n+7) == (n+32)*(n+32)) { System.out.println("n = " + n + " er vidne."); break; } } Output n = 65 er vidne.

Indlejrede kvantorer Vi kan gerne have prædikater over mere end en variabel og dermed bruge mere end en kvantor. Det ser flot ud, men man angriber bare fra venstre mod højre. Her er et eksempel: n N. m N. m 2n. Hvis du giver mig et tal, så kan jeg give dig et tal som er mindst dobbelt så stort. Eller mere formelt: Lad n N være vilkårligt. Vi skal vise m N. m 2n og prøver med m = 2n N. Vi har at m = 2n 2n så den er ok. Vi viser altså al- og eksistenskvantor som vi plejer.

Flere indlejrede kvantorer Mon rækkefølgen har betydning? Lad os prøve den anden version m N. n N. m 2n. Jeg kan give dig et tal som er mindst dobbelt så stort som ethvert tal du kan give mig. Så skal m være stort. Vi prøver modbevis: Lad m N være vilkårligt, vi prøver at modbevise n N. m 2n. Vi skal altså finde n N så m 2n ikke går. Vi prøver n = m + 1 og får m 2m < 2m + 2 = 2(m + 1) = 2n. Rækkefølgen har altså betydning. Før kunne vi vælge m efter n, her skal vi præstere m som det første. Og den går ikke.

Indlejrede kvantorer er indlejrede løkker Tænk gerne indlejrede løkker for indlejrede kvantorer. Her viser vi det første eksempel, dog med lidt mindre domæner: n {1, 2, 3,..., 10}. m {1, 2, 3,..., 20}. m 2n. Løkken er Java boolean forall, exists; forall = true; for(int n = 1; n <= 10; n++) { exists = false; for(int m = 1; m <= 20; m++) { exists = exists m >= 2*n; } forall = forall && exists; } System.out.println("Løkkelogikken siger: " + forall);

Nogle tal er mere lige end andre Et tal er lige hvis 2 går op i det. Eller mere præcist med kvantorer: Lig(e)heds prædikatet L : N {S, F} L(n) = m N. n = 2m. Er eksempelvis 10 lige? Ja, L(10) = S for 5 N og 10 = 2 5. Et tal er omvendt ulige hvis det er 2 gange noget plus en: Ulig(e)heds prædikatet U : N {S, F} U(n) = m N. n = 2m + 1. Er 117 ulige. Ja, U(117) = S for 58 N og 117 = 2 58 + 1.

Efter ulighed kommer lighed Det synes rimeligt (måske ganske trivielt) at der følger et lige tal efter et ulige. Vi kan faktisk vise det præcist: Sætning: Lige tal følger ulige n N. U(n) L(n + 1). Bevis: Lad n N være vilkårligt. For at vise implikationen antager vi at U(n) er sand, altså at m N. n = 2m + 1. Vi kan altså vælge l N så n = 2l + 1. Vi vil gerne vise at L(n + 1) holder, altså at m N. n + 1 = 2m. Vi skal med andre ord finde et m N med egenskaben n + 1 = 2m. Vi prøver med l + 1 N: n + 1 = 2l + 1 + 1 = 2l + 2 = 2(l + 1).

L er dominant Vi skruer lidt op: Hvordan går det med produktet af et lige og et ulige tal? Vi fornemmer lighed ja vi kan vise det helt præcist: Sætning: U er recessiv n N. m N. L(n) U(m) L(nm). Bevis: Lad n N være vilkårligt. Lad m N være vilkårligt. Vi antager L(n) U(m) altså at L(n) = S og U(m) = S. Vi kan vælge l N så n = 2l og vi kan vælge k N så m = 2k + 1. Vi skal vise at L(nm) holder, altså at j N. nm = 2j. Vi regner: nm = 2l(2k + 1) = 4lk + 2l = 2(2lk + l). Så vi kan vælge j = 2lk + 1 N og så er L(nm) vist.

De Morgan og kvantorerne, del I Vi modbeviser en alkvantor ved at finde et element der gør prædikatet falsk. Vi beviser en eksistenskvantor ved at finde et element der gør prædikatet sand. De er snublende ens. De Morgan negerer alkvantorer ( d D. P(d) ) d D. P(d). Venstresiden er sand netop når der findes et d D så P(d) er falsk. Og højresiden går det ligeså. Det er lidt det samme som De Morgan fra udsagnslogikken: (p q) p q.

De Morgan og kvantorerne, del II Vi beviser en alkvantor ved at vise at prædikatet holder for alle elementer i domænet. Vi modbeviser en eksistenskvantor ved at vise at prædikatet fejler for alle elementer i domænet. Igen er sammenhængen nærliggende: De Morgan negerer eksistenskvantorer ( d D. P(d) ) d D. P(d). Venstresiden er sand netop når P(d) er falsk for alle d D. Og højresiden går det ligeså. Igen modsvarer det De Morgan fra udsagnslogikken: (p q) p q.

Et prim(a) eksempel, del I 17 er primtal, det har kun de trivielle divisorer 1 og 17. På græsk: n N. ( m N. 17 = nm ) n = 1 n = 17. 42 er næppe et primtal. Så vi forventer at have ( n N. ( m N. 42 = nm ) ) n = 1 n = 42. Magen til suppedas skal man lede længe efter. Vi må omskrive lidt.

Et prim(a)) eksempel, del II Vi regner derudad, først negerer vi en alkvantor og så er det udsagnslogik resten af vejen: ( n N. ( m N. 42 = nm ) ) n = 1 n = 42 ( ( m ) ) n N. N. 42 = nm n = 1 n = 42 ( n N. ( m N. 42 = nm ) ) n = 1 n = 42 n N. ( m N. 42 = nm ) n 1 n 42. Der skal med andre ord findes en ikke-triviel divisor netop hvad man ville forvente af et sammensat tal. 7 er et godt bud her.