Id a g Likhetslogikk (1) Likhetslogikk (2) Slutningsregler
Transcription
Id a g Likhetslogikk (1) Likhetslogikk (2) Slutningsregler
E`t=u INF3230/4230 Forelesning 8 – p. 1/30 • t og u kan inneholde variable (tolkninger) der alle ligningene i E er sanne INF3230/4230 Forelesning 8 – p. 3/30 • Hvis E ` t = u holder vil t = u være sann i alle verdener • E ` t = u kalles en sekvent (logisk setning) betyr at t = u følger logisk fra ligningene E (i spesifikasjonen E ) • Notasjonen Likhetslogikk (2) • Induktive teorier • Induksjon: teste generelle egenskaper • Likhetslogikk: resonneringssystem for likhetsspesifikasjoner I dag: Kap. 4 — logikken bak likhets-spesifikasjoner Kongruens: Transitivitet: Symmetri: Refleksivitet: Substitutivitet: E ` t1 = u1 ... E ` t n = un E ` f (t1 , . . . , tn ) = f (u1 , . . . , un ) E ` t 1 = t2 E ` t 2 = t3 E ` t 1 = t3 E`t=u E`u=t E ` t = t for enhver term t E ` lσ = rσ for enhver ligning l = r i E INF3230/4230 Forelesning 8 – p. 4/30 E ` t = u holder dersom denne sekventen kan utledes fra følgende slutningsregler for likhetslogikk: Slutningsregler INF3230/4230 Forelesning 8 – p. 2/30 {e ∗ x = x, x−1 ∗ x = e, x ∗ (y ∗ z) = (x ∗ y) ∗ z} gruppe-aksiomene • Følger x ∗ e = x og (x−1 )−1 = x logisk fra monoider, etc.) • Følger en formel fra ligningene? • Opprinnelig motivasjon bak “omskrivningssystemer” (?) • Mange matematiske teorier gitt som ligninger (grupper, NAT-ADD? • Objekter i Maude • Dynamiske og parallelle systemer • Er s(0) + s(0) = s(s(0)) + 0 i • Er M + N = N + M i NAT-ADD? • Når er to termer “like” i en likhets-spesifikasjon? Likhetslogikk (1) • Neste gang: Begynne med Omskrivingslogikk: Avslutte Del I av kompendiet I dag antagelse(r) konklusjon NAT − ADD ` s(0 + s(s(0))) = s(s(s(0))) NAT − ADD ` s(0) + s(s(0)) = s(s(s(0))) NAT − ADD ` s(s(s(0))) = s(0) + s(s(0)) NAT − ADD ` s(s(0)) + s(0) = s(0) + s(s(0)) 11. 12. 13. NAT − ADD ` s(0) + s(s(0)) = s(0 + s(s(0)) NAT − ADD ` 0 + s(s(0)) = s(s(0)) 8. 9. 10. NAT − ADD ` s(s(0) + s(0)) = s(s(s(0))) NAT − ADD ` s(s(0)) + s(0) = s(s(s(0))) NAT − ADD ` s(0) + s(0) = s(s(0)) 5. 6. NAT − ADD ` s(0 + s(0)) = s(s(0)) 4. 7. NAT − ADD ` s(0) + s(0) = s(0 + s(0)) NAT − ADD ` 0 + s(0) = s(0) 2. 3. NAT − ADD ` s(s(0)) + s(0) = s(s(0) + s(0)) 1. (trans.; from 7, 12) (symm.; from 11) (trans.; from 8, 10) (kongr.; from 9) INF3230/4230 Forelesning 8 – p. 7/30 (subst.; equation 0 + x = x) (subst.; equation s(x) + y = s(x + y)) (trans.; from 1, 6) (kongr.; from 5) (trans.; from 2, 4) (kongr.; from 3) (subst.; equation 0 + x = x) (subst.; equation s(x) + y = s(x + y)) (subst.; equation s(x) + y = s(x + y)) Eksempel på formelt bevis INF3230/4230 Forelesning 8 – p. 5/30 • Bruk slutningsreglene “nedover” til ønsket resultat er bevist • Start med aksiomer (“substitutivitet” og “refleksivitet”) betyr at dersom man vist antagelse(r) så gjelder konklusjon • En slutningsregel Bruk av slutningsregler NAT − ADD ` s(0) + 0 = 0 + s(0) INF3230/4230 Forelesning 8 – p. 6/30 ∗ både l = r og r = l for enhver ligning l = r i E INF3230/4230 Forelesning 8 – p. 8/30 ∗ ∗ • t! E u holder hviss t Esymm u der Esymm inneholder • Korollar: Det er uavgjørbart om t ∗ E u ∗ • (Birkhoff gir) uavgjørbart om t ! E u E ` t = u hviss t !E u • Birkhoff’s teorem: • Vrient! • Uavgjørbart om E ` t = u holder (selv for grunntermer t, u) • Vi ville vise Likhetslogikk (3) NAT − ADD ` s(s(0)) + s(0) = s(0) + s(s(0)) Eksempel: Bevis av NB: Ved å nummerere sekventene kan man lettere angi hvilke regler som er anvendt på hva. NB: Første sekvent må være et aksiom! sekventer ved en av slutningsreglene. • enhver sekvent enten er et aksiom eller følger fra tidligere Et bevis av en sekvent S er en sekvens av sekventer som ender opp med S og der Formelt bevis men der kommutativitet ikke holder! INF3230/4230 Forelesning 8 – p. 11/30 • Men . . . NAT-ADD` M + N = N + M holder ikke! • Det finnes en “modell” der ligningene i NAT-ADD holder, M + N = N + M må gjelde i alle systemer/modeller hvor ligningene i NAT-ADD gjelder • NAT-ADD` M + N = N + M betyr at og NAT-ADD` s(0) + 0 = 0 + s(0) • Har vist NAT-ADD` s(s(0)) + s(0)= s(0) + s(s(0)) • NAT-ADD ` M + N = N + M burde gjelde! Induktive teoremer (1) INF3230/4230 Forelesning 8 – p. 9/30 oppfyller velkjente egenskaper, slik at man er mer sikker på at spesifikasjonen er korrekt. • Kan brukes til å teste at f. eks. spesifikasjoner av funksjoner konfluente spesifikasjoner • Likhetsproblemet er derfor avgjørbart i terminerende og E ` t = u hviss t!E ≡ u!E b + a = a b + b = b NAT − ADD ` M + N = N + M INF3230/4230 Forelesning 8 – p. 12/30 kalles et induktivt teorem og bevises ofte ved induksjon over grunn-konstruktørtermene. • Et slikt uttrykk som holder for alle grunn-(konstruktør)termer holder for alle grunn-konstruktørtermer M og N! termer at • Derimot kan man vise ved induksjon på oppbygning av kommutativitet! • Moteksempelet tilfredstiller NAT-ADD-ligningene men ikke og hvor 0 tolkes av a og s er identitet (s(x)=x) a + b = b a + a = a • Moteksempel: modell med to elementer a og b slik at: Induktive teoremer (2) INF3230/4230 Forelesning 8 – p. 10/30 • Kan man bruke denne metoden til å vise likheter som følger: • Er reverse(reverse(L)) = L for enhver liste L? • Er size(perm(L)) = fak(length(L))? Disse tre ligningene gir en terminerende og konfluent spesifikasjon! Maude kan derved avgjøre alle likheter i dette systemet! e−1 = e. Ved å se på kritiske par får vi at ligningen • Gitt to av gruppeaksiomene {x ∗ e = x, x−1 ∗ x = e}. Maude! • NAT − ADD ` s(s(0)) + s(0) = s(0) + s(s(0)) kan bevises ved • I terminerende og konfluente spesifikasjoner kan vi sjekke om E ` t = u ved å beregne normalformer og sammenligne dem tekstlig: Eksempler Likhetslogikk (4) 0+X X +0 s(X) + Y X + s(Y ) = = = = X X s(X + Y ) s(X + Y ) Lister: INF3230/4230 Forelesning 8 – p. 15/30 kan bygges opp ved nil, og addl Lister (i anbefalt Maude-versjon): det som bygges opp ved nil, ett-elements-liste, og sammenslåing (Assoc, Id: nil) MultiSett: det som kan bygges opp ved none (tom), ett-elements-MultiSett, og sammenslåing (ACI) Mengder: bygges opp ved empty, ett-elements-mengde, og sammenslåing (ACI + idempotens) Binære trær: bygges opp av tomt tre og btree (som tar høyre og venste sub-trær og en verdi) Naturlige Tall : bygges opp ved 0, og s (ekte positive tall: 1 og s) Heltall: bygges opp ved 0, s (etterfølgeren til et ikke-neg. tall) og negeringsfunksjonen (til et pos. tall). Eksempler: I Maude defineres uendelige verdimengder ved konstruktører. Induktivt definerte verdimengder INF3230/4230 Forelesning 8 – p. 13/30 Her har vi en induksjons-hypotese (IH): X + Y = Y + X . Maude reduserer venstresiden til s(X + Y ) og høyresiden til s(Y + X), men disse er jo like ved IH! s(X) + Y = Y + s(X) Dette klarer Maude! • Tilfelle (X:=s(X)): For en vilkårlig X må vi vise at • Tilfelle (X:=0): Må vise: 0 + Y = Y + 0 Vi skal bevise X + Y = Y + X ved induksjon mhp X : Da får vi et delbevis for hver generator: Gitt ligningene Eksempel på induksjonsbevis P (x){x 7→ t} = P (t). kan snakke om x og andre variable, slik at INF3230/4230 Forelesning 8 – p. 16/30 • For konstruktører uten S -argumenter: ingen IH. • For konstruktører med n S -argumenter blir det n IHer. • Notasjonen P (x) brukes her for å angi en boolsk term som Induksjonshypotese: For konstruktører som tar argumenter av sort S kan vi anta at argumentene oppfyller P . Bevis ved induksjon på x: ett delbevis for hver S -konstruktør. Vil vise en egenskap P (x) for (alle verdier av) en variabel x av en sort S som har en induktiv verdimengde. Induksjonsbevis over induktive verdimengder INF3230/4230 Forelesning 8 – p. 14/30 Vi skal nå se på induksjon over induktivt definerte verdimengder, dvs. verdimengder definert ved konstruktører. Maude gjennom et induksjonsbevis – forutsatt at du kan gjøre oppsettet selv! • Maude har ikke induksjon innebygget, men du kan lede • nødvendig for å vise generelle egenskaper ved systemer • bør kunne før master • viktig i de fleste formelle metoder/analyser • hører med i almenutdannelsen • nyttig i mange 3000/4000/5000 kurs Hvorfor lære om induksjon? Induksjon: Motivasjon INF3230/4230 Forelesning 8 – p. 17/30 lth(nil) lth(addl(l,x)) l nil l addl(l’,x) = = = = 0 s(lth(l)) l addl(l l’,x) l0 7→ nil og l0 7→ addl(l00 , x) INF3230/4230 Forelesning 8 – p. 19/30 Vi velger induksjon på l’ (fordi da kan vi lettere bruke 3 og 4): Det er to konstruktører: Må bevise noe for hvert tilfelle: Bør vi bruke induksjon på l eller på l’? Vi ønsker å vise at lth(l l0 ) = lth(l) + lth(l0 ) for alle lister l og l’. 1 2 3 4 Gitt lister med konstruktører nil og addl, samt (nødvendige) likninger for Nat og dessuten Induktive bevis: Eksempel med Lister Ferdig: vi har vist at x − x = 0 for alle naturlige tall x. VS reduseres til x − x og til 0 ved ind.hyp. OK. IH: x − x = 0 Dermed får vi to delbevis: 1. Vis: 0 − 0 = 0. OK 2. For vilkårlig x, vis: s(x) − s(x) = 0. Vi bruker 0 og s som konstruktører for de naturlige tallene. Bevis: ved induksjon på x. Vi ønsker å vise x − x = 0 for alle naturlige tall x. Eksempel: induktivt bevis over naturlige tall P (x) INF3230/4230 Forelesning 8 – p. 18/30 VS står for venstresiden, HS for høyresiden. Resten følger ved Nat-omskriving! lth(l) + s(lth(l0 )). INF3230/4230 Forelesning 8 – p. 20/30 s(lth(l l0 )). s(lth(l) + lth(l 0 )) lth(addl(l l0 , x)) HS = lth(l) + lth(addl(l0 , x)) Induksjonshypotesen gir: VS = lth(l addl(l0 , x)) Ind. hypotese (IH): lth(l l0 ) = lth(l) + lth(l0 ) for alle lister l. 2. Må vise (tilfellet l 0 7→ addl(l0 , x) ) for vilkårlig l0 : lth(l addl(l0 , x)) = lth(l) + lth(addl(l0 , x)) 1. Må vise (tilfellet l 0 → 7 nil ): lth(l nil) = lth(l) + lth(nil) VS lth(l). lth(l) + 0 lth(l). OK. HS Induktive bevis: Eksempel med Lister (2) IH: P (x). vis: P (s(x)) 2. For vilkårlig x, 1. Vis: P (0) Konstruktører 0 og s. for alle naturlige tall x, ved induksjon på x. Bevis av Oppskrift: induksjon over naturlige tall INF3230/4230 Forelesning 8 – p. 21/30 addl(addf (x0 , rev(l)), x). rev(addl(addf (x, l), x0 )) addf (x0 , rev(addf (x, l))) 0 addl(addf (x0 , rev(l)), x) IH addf (x , addl(rev(l), x)) INF3230/4230 Forelesning 8 – p. 23/30 Men l i IH må være en konstant — ellers kan alt vises med IH! Maude kan brukes til å gjøre alle delbevis! Da har vi vist hjelpesetningen, og dermed hovedsetningen! HS VS IH: rev(addf (x, l)) = addl(rev(l), x). 1. Vis rev(addf (x, nil)) = addl(rev(nil), x). Maude klarer dette! 2. Gitt l, vis rev(addf (x, addl(l, x0 ))) = addl(rev(addl(l, x0 )), x). Bevis av hjelpesetningen rev(addf (x, l)) = addl(rev(l), x) ved induksjon på l. Eksempel: Reversering av lister (3) For alle variabel-frie termer får vi likhet! VS går til rev(addl(addl(nil, 5), 2)) og til addl(addl(nil, 2), 5) rev(rev(addl(addl(nil, 2), 5))) = addl(addl(nil, 2), 5) rev(addf (x, rev(l))). Irredusibel. P (nil) P (l) P (addl(l, x)) INF3230/4230 Forelesning 8 – p. 24/30 IH sier altså ikke at P (l) holder for alle l. Da kunne vi brukt substitusjonen {l 7→ addl(l, x)} og vært ferdig. I delbevis 2 (induksjonssteget) er l i IH den samme l som i linjen over. Det kan vi få til i Maude ved å definere denne l-en som en ny konstant. IH: 2. For gitt l, vis: 1. Vis: Bevis av P (l) ved induksjon på l for lister med nil og addl som konstruktører: Oppskrift: Induksjon over lister INF3230/4230 Forelesning 8 – p. 22/30 Vi fikk her hint om en hjelpesetning som ville ha gjort det enkelt. Hvis vi hadde hatt ligningen rev(addf (x, l)) = addl(rev(l), x) (for alle l, x) kunne vi redusere til addl(rev(rev(l)), x), så bruke IH og komme til HS. HS irredusibel. VS Hvor mye klarer Maude? Prøv å teste rev(rev(l)) = l. Begge sider irredusible. Ikke likhet! Men for konkrete termer oppnås likhet! F.eks.: listen av 2 og 5. IH: rev(rev(l)) = l. 2. Gitt l. Vis: rev(rev(addl(l, x))) = addl(l, x)). 1. Vis: rev(rev(nil)) = nil. Maude klarer dette! Bevis rev(rev(l)) = l for alle grunn-termer l ved induksjon på l. Eksempel: Reversering av lister (2) der addf står for addfirst. Terminering og konfluens: opplagt! Se på lister med nil og addl (addlast) som generatorer. 1 rev(nil) = nil 2 rev(addl(l,x)) = addf(x,rev(l)) 3 addf(x,nil) = addl(nil,x) 4 addf(x,addl(l,y)) = addl(addf(x,l),y) Eksempel: Reversering av lister INF3230/4230 Forelesning 8 – p. 27/30 Her blir det to induksjonshypoteser fordi konstruktøren btree har trær i to av argumentene. 2. For vilkårlige vsub og hsub, vis: P (btree(vsub, val, hsub)) IH1: P (vsub) IH2: P (hsub) 1. Vis: P (niltree) Bevis av P (t) ved induksjon på t der t er et binær tre bygget opp ved konstruktørene niltree og btree. Oppsett: Induksjon over binære trær INF3230/4230 Forelesning 8 – p. 25/30 Omtrent helt likt forrige oppskrift! Men her kan vi vise P (x l) istedenfor P (l x) hvis det er lettere. 1. Vis: P (nil) 2. Vis: P (l x) eller P (x l) IH: P (l) (der x er et element og l en gitt liste) Alle slike lister har formen nil eller l x (der x er et element og l en liste). I siste tilfelle: også på formen x l, siden element-sorten er subsort av List. Holder å se på én av disse. rev(niltree) = niltree rev(btree(vsub,val,hsub)) = btree(rev(hsub),val,rev(vsub)) Maude klarer resten! IH2: rev(rev(hsub)) = hsub . IH1: rev(rev(vsub)) = vsub . INF3230/4230 Forelesning 8 – p. 28/30 2. For vilkårlige vsub og hsub, vis: rev(rev(btree(vsub, val, hsub)) = btree(vsub, val, hsub). 1. Vis: rev(rev(niltree)) = niltree. Maude klarer dette! Vi ønsker å vise: rev(rev(t)) = t. Bevis ved induksjon på t. Gitt: INF3230/4230 Forelesning 8 – p. 26/30 Eksempel: Induksjon over binære trær Mengder blir igjen veldig likt. Her kan man i tillegg bruke idempotens x; x = x, der “;” betegner sammenslåing og x et element. Omtrent helt likt forrige oppskrift! x m er det samme som m x siden sammenslåing er AC. 1. Vis: P (none) 2. Vis: P (m x) eller P (x m) IH: P (m) (der x er et element og m et multisett) Multisett bygges med none og sammenslåing med ett element. Konstruktører: none, sammenslåing (Assoc, Comm, Id: none), der element-sorten er subsort av Mset. Konstruktører: nil, sammenslåing (Assoc, Id: nil), der element-sorten er subsort av List. Bevis av P (l) ved induksjon på l Bevis av P (m) ved induksjon på m. Oppskrift: Induksjon over multisett Vi ser nå på den anbefalte definisjonen av lister i Maude: Oppskrift: Induksjon over lister (2) INF3230/4230 Forelesning 8 – p. 29/30 1. Vis: P (c) hvis c er en konstant 2. Vis: P (f (t1, t2, ...)) Anta IH1: P (t1) og IH2: P (t2) og . . . for t1, t2 av av sort S og ethvert funksjonssymbol f . En egenskap P (t) kan vises for alle grunntermer t, ved induksjon på oppbyggingen av termene. Oppsett: 1. en konstant c, eller 2. f (t1, t2, ...) der f er en funksjon og t1, t2, ... er termer (av riktig sort og antall). En grunnterm av en sort S er enten Generelt oppsett: Induksjon over termer • Hva er IH-ene? • Hvordan kan de/den brukes og ikke brukes? • enkle regler, men • pass på: Induksjon er som et spill INF3230/4230 Forelesning 8 – p. 30/30 Eksempler: Induksjon over utledninger i likhetslogikk, induksjon ∗ ∗ over reduksjoner ( og !) (se oppg. 93). Slik kan vi fortsette med induksjon over andre strukturer forutsatt at vi kjenner oppbyggingen, og at denne er definert ved et endelig antall regler/konstruktører. Oppsummering