• No results found

En annen måte å denere F på

In document Terminering av typeordnet omskriving (sider 87-91)

Antagelser videre i oppgaven

6.3.2 En annen måte å denere F på

Signaturen er ikke regulær, ogbf;ZerocF er ikke veldenert fordi den kan enten ha verdien fNateller fNeg. Hadde vi lagt til en deklarasjon f : Zero!Int ville signaturen vært regulær og funksjonenebcF ogbc veldenerte.

FunksjonenbcF (og dermed ogsåbc) er veldenert og beregnbar når signaturen er regulær.

Å velge F =ffwjf 2 w!sg har også en annen svakhet. Anta nemlig at de unødvendige deklarasjonene is even : NzNeg!Bool og is even : NzPos!Boolikkeer med i signaturen

. Den fjerde regelen i eks. 6.1 kan likefullt være

(8y : NzNeg) is even(y);!is even(opp(y)) Siden de ovennevnte deklarasjonene har forsvunnet er imidlertid

bis even(y:NzNeg)c=bis even;NzNegcF(y) = is evenInt(y) og

bis even(opp(y: NzNeg))c= ::: =bis even;NzPoscF(bopp;NzNegcF(y)) = is evenInt(oppNzNeg(y)) og vi ender opp med å måtte vise

is evenInt(y)is evenInt(oppNzNeg(y)) som aldri gjelder for noen fornuftig ordning.

6.3.2 En annen måte å denere

F

Den andre tilnærmingsmåten bøter på dette problemet ved å denere den utypede funk-sjonssymbolmengden

F = ffw0j9sjw0w^f 2w!sg

dvs. dersom f : w!s er en deklarasjon i, så er fw0 med i F for alle sekvenser av typer w0 der w0w. Denne denisjonen har en rekke fordeler. For det første er den nere oppdelt enn den forrige. Uansett om deklarasjonene is even : Nz!Bool og is even : NzNat!Bool er med i signaturen eller ikke, vil

F =f:::;is evenInt;is evenNat;is evenNeg;is evenZero;is evenNzNeg;is evenNzPos;:::g

fordi is even 2 Int!Bool. Den andre fordelen med denne metoden er at det går meget raskt å beregnebcF fordi bf;s1;:::;sncF etter denne siste denisjonene avbcF settes lik fs1;:::;sn. Den tredje fordelen med å velge denne denisjonen av F er at det i dette tilfelle er tilstrekkelig å forlange at signaturen er preregulær. Funksjonen bc er i dette tilfellet alltid veldenert, da bf(t1;:::;tn)c = bf;LS(t1);:::;LS(tn)cF(:::) = fLS(t1);:::;LS(tn)(:::).

Ordningene indusert av at F er denert på denne måten vil, som skal se senere, være minst like sterke som den forrige varianten. Ulempen med en slik større F er at man får mange er symboler å jobbe med. Jeg ville uansett helt klart anbefale denne siste denisjonen av F, men overlater til brukeren å avgjøre dette ved å arbeide med begrepene F og b cF i denne oppgaven.

Man kan selvfølgelig kombinere variantene ved å utvide signaturen. Det eneste kravet man må stille er at den utvidede signaturen blir kvasiregulær, der en kvasiregulær signatur er en signatur som ville vært regulær dersom enhver for slapp deklarasjon f : w!s ble byttet ut med en deklarasjon f : w!LS(f(x : w)). Gitt en preregulær signatur kan denne faktisk alltid utvides til en kvasiregulær signatur, som i sin tur kan strammes inn til en regulær signatur. Jeg vil i mine eksempler bruke den første denisjonen av F, nemlig F =ffwjf 2w!sg, men dette erutelukkendefor å øke leseligheten.

6.4 Funksjonssymbolsprang

Vi begynner dermed å bli klare for å kikke på regelmengden i en speiling. Omskrivningssys-temet i eks. 6.1 var typebevarende, dvs. venstre- og høyresiden i hver regel hadde samme minste type for alle substitusjoner av variablene i regelen. Man er ikke alltidsåheldig med regelmengdene. Eksempelvis ville den første likningen i NatStack-spesikasjonen i eks. 3.1 orienteres til regel (8s:Stack; n:Nat) pop(push(s;n));!s hvis instans når s = empty er ekte typeminskende. La oss derfor heller se på følgende system:

Eksempel 6.8

La det typeminskende systemet Rvære

Typer:

s;s1;s2

Termene kan speiles på måten beskrevet i forrige avsnitt slik at bf(b)c = fs1(b) og bf(g(b))c = fs2(gs1(b)). Systemet kan representeres i form av de utypede regle-ne fs1(b);!fs2(gs1(b)) og a;!b. I en speiling hF;b c;R0i må enhver omskrivning

6.4 Funksjonssymbolsprang t;R!t0 kunne representeres av en omskrivningssekvensbtc;R+!0 bt0c. Dette introduser-er hovedproblemet med speilingintroduser-er, nemlig vanskeligheten av å få dem lukket undintroduser-er regelapplikasjon. Med bruk av den andre regelen ns det en typeordnet omskriv-ning f(g(a));R!f(g(b)), slik at en speiling må oppfyllebf(g(a))c;R+!0 bf(g(b))c. Siden

bf(g(a))c = fs(gs(a)) ogbf(g(b))c = fs2(gs1(b)) blir alle F-funksjonssymbolene for-andret selv om den typeordnede omskrivningen foregår i posisjon 1:1! Det er lett å se at R0=ffs1(b);!fs2(gs1(b)); a;!bg ikkeoppfyller fs(gs(a));R+!0 fs2(gs1(b)) og derfor ikke er en speiling.

Bruk av en typeminskende (instans av en) regel kan altså gi opphav til at funksjons-symboler i btc forandres i bt0c langt fra posisjonen der en typeomskrivning omskrivning t;R!t0 foregår. Jeg vil kalle disse sideeektene av en typeordnet omskrivning for F -funksjonssymbolsprang.

Denisjon 6.7 (

F

-funksjonssymbolsprang)

Anta at det er gitt et typeordnet omskriv-ningssystem h;Ri, en utypet funksjonssymbolmengde F og en termspeilingsfunksjon

bc:T(;X)!T(F;V ). Anta videre at en typeordnet omskrivningt;R!t0 skjer i posisjonp i t. Det har skjedd et F-funksjonssymbolsprang i posisjonq dersom (F-)funksjonssymbolet i posisjonq i termen btc er forskjellig fra funksjonssymbolet i posisjon q i bt0c og det ikke ns en (tom eller ikke-tom) posisjonr slik atq = p:r.

Jeg skriver ofte F-sprangfor F-funksjonssymbolsprang.

Eksempel (forts. av eks. 6.8)

I omskrivningen f(g(a));R!f(g(b)) nevnt i eks. 6.8 er det to F-sprang, i posisjonene og 1.

Det viser seg som vi skal se at F-sprang alltid skjer i posisjoner i en term t mellom roten (posisjon ) og posisjonen p der omskrivningen foretas, og jeg vil derfor få bruk for følgende denisjoner som også vil brukes i beviser i kapittel 8.

Denisjon 6.8

For en termtog en posisjonp = p1:p2:::::pnit, deneres posisjonenp(i), der 0in, ved p(i) = p1:p2:::::pn;i.

Posisjonen p(i) angir altså posisjonen man får når man går i skritt fra posisjon p i t oppover den éntydige veien mot roten.

Eksempel 6.9

Anta at en posisjon p = 1:2:1:3:2. Da er p(0) = 1:2:1:3:2 , p(1) = 1:2:1:3 , p(3) = 1:2 , p(5) = mens p(8) er udenert.

Denisjon 6.9

DybdenDp til en posisjon p er lik lengden til sekvensenp.

I følgende lemmata antar jeg hele tiden at t;R!t0 er en typeordnet omskrivning med en regelapplikasjon i posisjon p og at b c er utvidelsen av en funksjon b cF denert som beskrevet i avsnitt 6.3.

Lemma 6.10

Det kan bare være F-sprang i posisjonene p(0); p(1);:::;p(Dp).

Bevis:

Følger av atbc er en homomor og at en term har trestruktur.2

Et F-sprang kan bare oppstå i en omskrivning dersom regelinstansen som er brukt til omskrivningen er ekte typeminskende, noe som fører til et F-sprang i posisjon p(1). Men termen tjp(1)kan på grunn av monotoni-egenskaper til signaturen være av en større type enn t0jp(1), noe kan føre til et F-sprang i posisjon p(2) osv., så for å gjøre noe med F-sprangene må man vite hvordan de ser ut. Siden jeg i denne oppgaven ikke har antatt at signaturene er monotone, trenger jeg følgende egenskap:

Lemma 6.11

En preregulær signatur er LS-monoton, dvs.

LS(t)LS(t0) =)LS(f(:::;t;:::))LS(f(:::;t0;:::))

Bevis:

Husk at LS(f(t1;:::;tn)) = minfsjf 2s1;:::;sn!s^8i21::njLS(ti)sig. Anta så at LS(f(:::;t;:::)) = s og LS(f(:::;t0;:::)) = s0. Denisjonen av LS gir at s0 ikke kan være større enn s. Situasjonen s ./ s0 kan heller ikke oppstå, fordi både s0 og én eller annen s00 s ville vært minimale typer til f(:::;t0;:::), men det er umulig da preregularitet forlanger at enhver term har éntydig minste type.2

Lemma 6.12

Anta at s0i si,bf;s1;:::;si;:::;sncF = fw og at bf;s1;:::;s0i;:::;sncF = fw0. Da er w0w.

Bevis:

Uansett hvilken av de to tidligere nevnte denisjonene av F og bcF som brukes, følger w0w av denisjonen avbcF og det faktum atbcF er veldenert.2

Disse lemmata fører til at vi kan karakterisere F-sprang der jeg skriver at termen t er lik et symbol f i posisjon p dersom tjp= f(t1;:::;tn) for n0.

Teorem 6.13

La t;R!t0 være en typeordnet omskrivning i posisjon p. Dersom det fore-kommer et F-sprang i posisjon p(i)(1iDp) ogbtc er lik fw i posisjonp(i), og bt0c er likgw0 på samme sted, så er f = gog w0< w.

Bevis:

Denisjonen avb c og b cF gir trivielt f = g. Siden omskrivningssystemet er ty-peminskende, gjelder LS(tjp)LS(t0jp). Itereres lemma 6.11 gir dette LS(tjp(i;1)) LS(t0jp(i;1)). Termen btc er lik symbolet bf;LS(t1);:::;LS(tjp(i;1));:::;LS(tn)cF i posisjon p(i). Tilsvarende erbt0c likbf;LS(t1);:::;LS(t0jp(i;1));:::;LS(tn)cF i posi-sjon p(i). Lemma 6.12 sier da at w0w, og siden det har forekommet et F-sprang, kan disse ikke være like, slik at w0< w.2

Teorem 6.13 indikerer at vi kan kompensere for F-sprang ved å innføre en regel fw(x1;:::;xn);!fw0(x1;:::;xn)

(der variablene x1;:::;xn er innbyrdes disjunkte) i speilingen for hvert par fw;fw0 i F der w0< w. Jeg velger å kalle en slik regel for enekstraregeli R0.

In document Terminering av typeordnet omskriving (sider 87-91)