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