Datatyper 2 generatorbasis for T er en endelig mengde T -produsenter som En utspenner hele verdimengden V tilsammen T. utgangspunktet kunne en type ha

Like dokumenter
: set T, add : set T T set T

x as U == if P (x) th x qua U el fi


var y :{x :T R}; S endvar y

Aksiom 3.1 (Likhet av mengder). La A og B være mengder. Da er A og B like hvis og bare hvis de har akkurat de samme elementene.

Forelesning januar 2006 Induktive denisjoner og utsagnslogikk

INF4170 { Logikk. Forelesning 1: Utsagnslogikk. Arild Waaler. 20. august Institutt for informatikk, Universitetet i Oslo

Hvis Ole følger inf3170, så liker Ole logikk. Ole følger inf3170, og Ole følger ikke inf3170. Ole følger inf3170, eller Ole følger ikke inf3170.

INF3140 Modeller for parallellitet INF3140/4140: Programanalyse

Dagens plan. INF3170 Logikk. Syntaks: Utsagnslogiske formler. Motivasjon

Forelesning 6: Frste-ordens logikk: syntaks og semantikk Roger Antonsen februar 2006

INF1800 Forelesning 17

INF1800 LOGIKK OG BEREGNBARHET

Notat om Peanos aksiomer for MAT1140

9 Lineærtransformasjoner TMA4110 høsten 2018

Plenumsregning 9. Diverse ukeoppgaver. Roger Antonsen april Oppgaver fra forelesningene. Oppgave (fra forelesningen 10/3).

Lineærtransformasjoner

Definisjon 1.1 (Sunnhet). Sekventkalkylen LK er sunn hvis enhver LK-bevisbar sekvent er gyldig.

Notat 05 for MAT Relasjoner, operasjoner, ringer. 5.1 Relasjoner

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

Injektive og surjektive funksjoner

MAT1030 Forelesning 19

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

Generell rekursjon og induksjon. at(n) + bt(n 1) + ct(n 2) = 0

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord

Forelesning 9: Frsteordens logikk { kompletthet Roger Antonsen mars 2006

Typisk: Kan det være både nøkkelord og navn, så skal det ansees som nøkkelord

MAT1030 Diskret matematikk

INF3170 Forelesning 4

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

Dette krever ikke noe nytt aksiom. Hvorfor? Og hvorfor må vi anta at A ikke er tom? Merk at vi har:

MAT1030 Diskret matematikk

Oppgaver fra forelesningene. MAT1030 Diskret matematikk. Oppgave (fra forelesningen 10/3) Definisjon. Plenumsregning 9: Diverse ukeoppgaver

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

Skanning del I INF /01/15 1

Løsningsskisser til oppgaver i Kapittel Integrerende faktor

Løsningsforslag øving 7

Scanning - I Kap. 2. Hva scanneren gjør

Skanning del I. Kapittel 2 INF 3110/ INF

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

Dagens tema Innføring i ML - del IV

UNIVERSITETET I OSLO

Anbefalte oppgaver - Løsningsforslag

MAT1030 Diskret matematikk

Plan: Parameter-overføring Alias Typer (Ghezzi&Jazayeri kap.3 frem til 3.3.1) IN 211 Programmeringsspråk

Mengder, relasjoner og funksjoner

Plan. Fortsetter med ML: lister og rekursive typer/funksjoner unntak let-uttrykk moduler og abstrakte datatyper høyere-ordens funksjoner

Forelesning 2: Induktive definisjoner, utsagnslogikk og sekventkalkyle Christian Mahesh Hansen januar 2007

Slides til 1.6 og 1.7. Andreas Leopold Knutsen

FOL: syntaks og representasjon. 15. og 16. forelesning

Notat med oppgaver for MAT1140

Fortsetter med ML: Repetisjon av lister Typer Unntak Moduler og abstrakte datatyper Introduksjon til høyere-ordens funksjoner

Slides til 12.1 Formelt språk og formell grammatikk

Dagens plan. INF3170 Logikk. Induktive definisjoner. Eksempel. Definisjon (Induktiv definisjon) Eksempel

LO118D Forelesning 6 (DM)

LØSNINGSFORSLAG UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet. Oppgave 1 Mengdelære (10 poeng)

1/28. Forelesning Forelesning / fun f (_,0) = true. 2 f(0,_)=true. 3 f_ =false; 4 val f = fn : int * int -> bool

Litt mer mengdelære. INF3170 Logikk. Multimengder. Definisjon (Multimengde) Eksempel

x A e x = x e = x. (2)

INF3170 Forelesning 2

TMA4123/TMA4125 Matematikk 4M/4N Vår 2013

INF1800 Forelesning 18

INF1800 LOGIKK OG BEREGNBARHET

Repetisjon og noen løse tråder

Finne løsninger på ligninger numerisk: Newton-Raphson metoden og Fikspunktiterasjon MAT111, høsten 2017

Repetisjon: Statiske språk uten rekursive metoder (C1 og C2) Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Introduksjon til Hoare-logikk. og abstrakte typer. Kompendium nr 55 IN 217. Ole Christian Lingj rde. Universitetet i Oslo. Institutt for informatikk

Dagens tema Kjøresystemer (Ghezzi&Jazayeri 2.6, 2.7)

Det utsagnslogiske spraket: konnektiver og formler. Semantikk: Denisjon av sannhet og gyldighet

MAT1030 Forelesning 18

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF5110 V2013 Stoff som i boka står i kap 4, men som er generelt stoff om grammatikker

Rest fra sist. MAT1030 Diskret Matematikk. Rest fra sist. Rest fra sist. Eksempel (Fortsatt) Eksempel. Forelesning 18: Generell rekursjon og induksjon

Generell induksjon og rekursjon. MAT1030 Diskret matematikk. Generell induksjon og rekursjon. Generell induksjon og rekursjon.

Semantisk Analyse del I

BOKMÅL Side 1 av 5. KONTERINGSEKSAMEN I FAG TDT4102 Prosedyre og objektorientert programmering. Onsdag 6. august 2008 Kl

UNIVERSITETET I OSLO

Anatomien til en kompilator - I

Nivå 1: Formelspråket. Formelle bevis: språk-nivåer 2: Sekventer, P 1,P 2,...,P Nivå n Q, n 0, omtaler formler. En - er en påstand om logisk konsekven

UNIVERSITETET I OSLO

Eivind Gard Lund. 24. Mars 2009 Foilene bygger på 2009 utgaven av Andreas Svendsen

7 Ordnede ringer, hele tall, induksjon

UNIVERSITETET I OSLO

Løsningsforslag til eksamen i IN 211 høsten 2002

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

Kap.4 Funksjoner. Tre viktig ting ifm. funksjoner: parameter (input) oppskrift (body) for å beregne resultat (output)

Kap.4 del I Top Down Parsering INF5110 v2005. Arne Maus Ifi, UiO

Plan. Fortsetter med ML: lister og rekursive typer/funksjoner unntak let-uttrykk moduler og abstrakte datatyper høyere-ordens funksjoner

INF5110 V2012 Kapittel 4: Parsering ovenfra-ned

Mekanisert snittsøk i elementær tallteori. Hovedpunkter i foredraget

Oppfriskningskurs dag 2

INF2810: Funksjonell Programmering. En metasirkulær evaluator

Transkript:

datatype T representerer en mengde verdier, V En T (av type T )., er praktisk også å assosiere med T en mengde funksjoner, Det uten T i domenet kalles en (relativ) T -konstant. T - produsent med kodomene forskjellig fra T kalles T -observatorer. funksjoner Datatyper 1 F T som opererer på T -verdier., = T (V T,F T ). Datatypen er dermed et par: T -funksjon i F Hver T ha forekomst(er) av T i prolen. En skal -funksjon med kodomenet T kalles en T -produsent. En T - T 0, 1: Nat og ^+^: Nat Nat Nat er Natprodusenter Eksempler: (0 og 1 er Nat-konstanter). ^<^: Nat Nat Bool er en Nat-observator. 1

Datatyper 2 generatorbasis for T er en endelig mengde T -produsenter som En utspenner hele verdimengden V tilsammen T. utgangspunktet kunne en type ha ere alternative generatorbaser, I men vi forlanger i det følgende at hver type T har nøyaktig generatorbasis G én T Funksjonene i G. T T -generatorene. kalles lønner seg å velge G Det T liten som mulig. Hvis T -generatorer så argumenter av andre typer enn T, kalles disse underliggende har typer. uttrykk av type T, som bare inneholder generatorer Variabelfrie også generatorer for underliggende typer), kalles basale T - (evt. Mengden GU uttrykk. T basale T -uttrykk kalles generatoruniverset av for T. Ifølge forutsetningen om generatorbasis er alle T -verdier uttrykt i GU T. 2

Datatyper 3: eksempler av Boolske verdier: Typen F Bool {f, t: Bool, ^: Bool Bool, = ^ ^, ^ ^,...: Bool Bool Bool,...} G Bool = {f, t} GU Bool = {f, t} F Nat = {0, 1, 2,...: Nat, tall: Naturlige Nat Nat (Suksessor-funksjon), S^: ^+^, ^ ^ ^,...: ^, Nat Nat Nat, ^=^, ^ ^,...: ^<^, Nat Nat Bool,...} G Nat {0, S^} GU = Nat {0, S0, SS0, SSS0,...} = begge typene er der en-entydig korrespondanse mellom basaluttrykkene For i GU og de abstrakte verdiene som V -mengden er å inneholde. Vi sier da at generatorbasis er en-til-en, 1-1, ment at basaluttrykkene er verdiene: V og Bool =GU Bool V, Nat =GU Nat. {0, 1, ^+^} er en generatorbasis for Nat som ikke er 1-1. 3

Datatyper 4: eksempler Sekvenser seq T er typen av sekvenser av verdier av type T. La V T = {a,b,...}. F seq T = {ε: seq T, ^ : T seq T, ^ ^: seq T T seq T, ^ ^: T seq T seq T, ^ ^: seq T seq T seq T, #^: seq T Nat, ^in^: T seq T Bool,...} G seq T = {ε, ^ ^} GU seq T = {ε, ε a, ε b,...,ε a a, ε a b,...} fornuftige generatorbaser: {ε, ^ ^}, {ε, ^, ^ ^}(ikke 1-1). Andre G seq T {ε, ^ ^}) er 1-1 uansett T. G (og T gir V 1-1 seq T =GU seq T. Mengder F set T = { : set T, {^}: T set T, add: set T T set T T set T Bool, ^ ^: set T set T set T,...} ^ ^: G set T {, add} GU = set T {, add(,a), add(,b),..., = add(add(, a),a), add(add(, a), b),...} generatorbasis: {, {^}, ^ ^}. Alternativ generatorbasis for set T (med T uspesisert) er 1-1. Ingen 4

Subtyper innfører følgende relasjoner mellom typer: = (navnelikhet), Vi (subtype) og (disjunkthet). De er alle syntaktisk den- men på en slik måte at de har semantiske konsekvenser for ert, verdimengder: T U V typenes T V U T U V, T V U =. med subtyperelasjonen er å myke opp og forsterke Hensikten typing, bl.a. ved å kontrollere denerthet av uttrykk med streng partielle funksjoner. av type-riktig uttrykk må justeres for subtyper: Et Denisjonen av type T er enten en variabel av type T, eller et uttrykk uttrykk f(e 1,...,e n ), n 0, hvor f : T 1... T n T, og T ei T i hvor e i har typen T ei, i=1,...,n. (Også begrepene produsent- og observatorfunksjon må justeres.) 5

Syntaktiske subtyper heltallstypen Int kan det ikke uten videre angis en en-til-en For F.eks. basis {0, S^ (suksessor), N^ (negasjon)} generatorbasis. gir generatoruniverset: {0, S0, N0, SS0, SN0, NS0, NN0,...}. passelig syntaks innfører vi tre basale subtyper til Int, disjunkte Ved pr. denisjon, samt mellomliggende typer: Int by Zero,Nat1,Neg1 Nat = Zero Nat1 with = Neg Zero Neg1 = Nzo Nat1 Neg1 en familie av slike syntaktiske subtyper skal hver generator ha en I subtype som kodomene. Ved også å restriktere domenene slik: basal 0 : Zero, S^ : Nat Nat1, N^ : Nat1 Neg1 func {0, S^, N^} en en-til-en generatorbasis med generatoruniverset: utgjør GU Int {0, S0, SS0, SSS0,..., NS0, NSS0, NSSS0,...}= V = Int. Merk at {0, S^} er generatorbasis for subtypen Nat. 6

Semantisk denisjon av ikke-basiske funksjoner Alle funksjoner er denert syntaktisk ved prol. Semantikken generatorer er gitt implisitt (ved at de utspenner en verdimengde). av Semantikken til andre funksjoner kan gis ved eksplisitt denisjon: f(x 1,...,x n ) == HS, V[HS] {x 1,...,x n } denisjon: Direkte inneholder bare kjente funksjoner (inkl. generatorer). HS Eksempel: func S2^ : Nat Nat1 S2x == SSx Rekursjon (direkte): HS inneholder forekomster av funksjonen som deneres. Eksempel: ^+^ : Nat Nat Nat func x+y == if y =0th x el S(x+Py) fi hvor funksjonene if^th^el^fi, ^=^ og P^ (predesessor) antas kjente. 7

terminerer for y x, men ikke for y>x. Rekursjonen er x y veldenert for y x og udenert for y>x. Derfor udenert uttrykk har ingen verdi. Et SS0 S0 = S(SS0 SS0) = S0 Eksempler: funksjonsdenisjon f(...) == HS betyr formelt at aksiomet En - f(...) == HS tilføyes formallogikken, men gir i tillegg Partielle funksjoner 1 ^ ^ : Nat Nat Nat func x y == if x=y th 0 el S(x Sy) fi 0 S0 = S(0 SS0) = SS(0 SSS0) =... func f : T T f(x) == f(x) er udenert x : T. informasjon om denertheten av funksjonen f. 8

Partielle funksjoner 2 rekursjon svarer operasjonelt til en regneprosess Ikke-terminerende som aldri tar slutt. Det er bedre å avbryte øyeblikkelig med (og feilmelding). Derfor leveregelen: Abort if Ill-Dened abort (AID). innfører derfor et uttrykk uten verdi, som leder til abort ved Vi Uttrykket har typen, som er tom, V evaluering. og er =, til alle andre typer. Dermed er et formelt akseptabelt subtype i enhver posisjon. argument funksjonsdenisjoner er bedre i praktisk forstand og Følgende mer eksplisitte enn denisjonene på forrige foil. dessuten x y == if y x th if x=y th 0 el S(x Sy) fiel fi f(x) == 9

Partielle funksjoner 3 denisjon f(...) == HS kan ses som en ligning med Rekursiv som ukjent. Den kan ha mange løsninger. Isåfall ønsker f den minst denerte løsningen, det såkalte minste kspunkt vi denerthetsordningen ^ ^. etter f g, der f, g : T U, betyr at funksjonen g er veldenert der f f g x:t d f(x) (d g(x) f(x)=g(x)) = er det, og har da samme verdi: sier at g er bedre denert enn f (eller lik), og at f er en Vi til g. Vi har: f g g f f =g. approksimasjon Eksempel: har d Vi x y og x y d x y Følgelig gjelder ^ ^ ^ ^ t. Int Int Int. hvis begge funksjoner tolkes med prol 10

Denerthet av uttrykk, monotonitet bruker notasjonen ^ ^ som en relasjon mellom uttrykk: Vi også e 1 e de1 2 = (d e2 e 1 ) =e 2 Sterk likhet, ==, er en nyttig relasjon for å resonnere om som ikke alltid er veldenerte: uttrykk e 1 ==e 2 = e1 e 2 e 2 e 1 Vi har: e 1 ==e 2 d e1 =d e2 (d e1 e 1 =e 2 ). eller == er implementerbare (om udenerthet kan Verken ikke-terminering). For eksempel skal == ha ver- skyldes t, men hvis betyr ikke-terminering, kan ikke uttrykket dien og er dermed udenert. terminere må en funksjon være monoton mht. denerthet for å Generelt implementeres: e 1 e 2 f(...,e 1,...) f(...,e 2,...). kunne 11

Totalitet og strikthet funksjon er total hvis den har verdi for alle veldenerte (og En argumenter: d e1 d e2... d typeriktige) en d f(e1,e 2,...,e n. ) En funksjon er partiell hvis den ikke er total. funksjon strikt i i'te argument, e En er i en applikasjon bare, hvis veldenert om argumentet er det: d f(e1,e kan være 2,...,e d n ) e i. funksjon er strikt hvis den er strikt i alle argumenter. Strikthet En til call by value av argumenter. Generatorer er totale og svarer strikte. trenger ikke-strikte funksjoner, f.eks. Boolske operatorer: Uttrykket Vi x y x y x, for x, y :Nat, skal være veldenert (lik t) for alle verdier av x og y, også om x er mindre enn y. 12

Generatorinduksjon er en måte å sveipe over et generatorunivers Generatorinduksjon ved å betrakte en generator av gangen. Eksempler: genbas Nat : 0 : Zero, S^ : Nat Nat1 ^+^ : Nat Nat Nat func x+y == case y of 0 x Sy S(x+y ) fo x+0 == x, x+sy == S(x+y) eller: ^ ^ : Nat Nat Nat func x y == case y of 0 x Sy case x 0 of Sx x y fo fo x 0 == x, 0 Sy ==, Sx Sy == x y eller: P^ : Nat1 Nat func Px == case x of Sx x fo, eller : PSx == x 13

Terminerende Generator-Induksjon (TGI) syntaktisk termineringskontroll: Enkel argument skal være syntaktisk enklere i hvert rekursive Induktivt kall enn i venstresiden i case-frie aksiomer. er lett å lage sterkere syntaktisk kontroll, f.eks. anvende Det ovenfor leksikogrask hvis ere argumenter er induktive. kriteriet eksempelet, Ackermann-funksjonen, er enten første argument i I rekursivt kall enklere, eller det er lik argumentet i venstresiden et og andre argument er enklere. Ack : Nat Nat Nat func Ack (x, y) == case x of 0 Sy Sx case y of Ack (x, S0) Sy Ack (x, Ack (Sx, y)) fo fo 0 Ack (0,y) == Sy, Ack (Sx, 0) == Ack (x, S0), eller: Ack Sy) == (Sx, Ack (x, Ack y)) (Sx, 14

For spesielt interesserte nner: Ack (0,y) = y+1 Vi (1,y) = y+2 Ack (2,y) = 2+2+...+2 3 Ack (3,y) = 2 2... 2 3 Ack (y+3 to-tall) med denisjoner som tilfredsstiller det enkleste syntaktiske Funksjoner termineringskravet, og som høyst bygger på slike funk- kalles primitivt rekursive. Ackermann-funksjonen er ikke sjoner, Det kan vises at den øker raskere med økende argument- PR. verdier enn noen PR funksjon. (4,y) = 2 Ack 3...2 (y+3 to-tall) (y+3 to-tall) Ack (4, 0) = 2 22 3 = 13 Eksempler: Ack 1) = 2 (4, 3 = 2 16 3 = 65533 222 Ack (4, 2) = 2 2222 3 = 2 65536 3 2 10 19728 15