• No results found

Termherschrijfsystemen en Propositie-Algebra

N/A
N/A
Protected

Academic year: 2021

Share "Termherschrijfsystemen en Propositie-Algebra"

Copied!
52
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Termherschrijfsystemen en Propositie-Algebra

Evalien IJsendijk

19 augustus 2010

Bachelorscriptie

Begeleiding: dr. Alban Ponse

x

y

z u

v

−→

x y

v

z

x u v

KdV Instituut voor Wiskunde

Faculteit der Natuurwetenschappen, Wiskunde en Informatica Universiteit van Amsterdam

(2)

Samenvatting

Termherschrijfsystemen is een onderwerp dat vooral binnen de informatica bekend is. In deze scriptie zal een korte inlei-ding in termherschrijfsystemen gegeven worden. Na een aan-tal definities en stellingen, zullen er meerdere termherschrijf-systemen ge¨ıntroduceerd worden. Van deze termherschrijf-systemen zullen ver-schillende eigenschappen bewezen worden. Uiteindelijk gaan we naar propositie-algebra kijken. Er wordt een verband tussen termherschrijfsystemen en equationele specificaties gelegd. We sluiten af met een bewijs van geldigheid en volledigheid van de systemen.

Gegevens

Titel: Termherschrijfsystemen en Propositie-Algebra

Auteur: Evalien IJsendijk, evalienijsendijk@gmail.com, 5742943 Begeleider: dr. Alban Ponse

Tweede beoordelaar: prof. dr. Tom H. Koornwinder Einddatum: 19 augustus 2010

Korteweg de Vries Instituut voor Wiskunde Universiteit van Amsterdam

Science Park 904, 1098 XH Amsterdam http://www.science.uva.nl/math

(3)

Inhoudsopgave

Inleiding 3 1 Termherschrijfsystemen 5 2 CP Free 11 2.1 CP Free en and-then . . . 14 3 CP Contractive 21 3.1 CP Contractive en and-then . . . 25 4 CP Repetition proof 35 4.1 Terminatie . . . 35 5 Propositie-Algebra 37 5.1 CP Free . . . 39 5.2 CP Contractive . . . 40 Populaire samenvatting 41 Appendix 43

(4)
(5)

Inleiding

In 1985 introduceerde Hoare [2] de ternaire operator Conditional : / . . Met variabelen ingevuld, x/y .z, lezen we deze operator als volgt: if y then x else z. Oftewel, als y tot True evalueert, dan evalueren we x, als y tot False evalueert, dan evalueren we z. We noemen y hier de centrale conditie. Voor de expressie x / y . x gebruiken we de notatie y ◦ x. Deze binaire operator noemen we and-then en lezen we als: y and then x.

Een aantal van de equationele wetten die Hoare aanneemt zijn de volgende vier:

x / T . y = x x / F . y = y T / x . F = x

x / (y / z . u) . v = (x / y . v) / z . (x / u . v)

Deze vier wetten defini¨eren een “propositie-algebra” en die noemen we CP Free. Binnen de propositielogica zijn deze vier wetten logische equivalenties. Bovendien is ook x / y . x binnen de propositielogica logisch equivalent aan x, dus lijkt het op het eerste gezicht enigzins vreemd om de and-then notatie te gebruiken. Echter, binnen de propositie-algebra kan de evaluatie van y een zij-effect hebben op de evaluatie van x. Dat maakt de notatie and-then binnen de propositie-algebra dus wel degelijk nuttig en we kunnen dus niet zeggen dat x / y . x logisch equivalent is aan x.

Een zogeheten valuatie-algebra identificeert twee proposities als deze onder elke mogelijke valuatie tot hetzelfde resultaat (True of False) eva-lueren. Over propositie-algebra’s willen we graag geldigheid en volledigheid bewijzen: geldigheid betekent hier dat twee proposities tot hetzelfde resul-taat evalueren in een valuatie-algebra als ze in de propositie-algebra bewijs-baar gelijk zijn, en volledigheid betekent dat als in een klasse (vari¨eteit) van valuatie-algebra’s twee proposities steeds tot hetzelfde resultaat evalueren, ze dan ook in de betreffende propositie-algebra bewijsbaar gelijk zijn. Be-halve CP Free, zullen we ook gaan kijken naar de propositie-algebra’s CP Contractive en CP Repetition proof die elk twee meer axioma’s hebben dan CP Free.

(6)

Geldigheid blijkt eenvoudig te bewijzen zijn, maar volledigheid niet. Echter, door gebruik te maken van zogeheten termherschrijfsystemen, wordt ook volledigheid eenvoudiger te bewijzen. Termherschrijfsystemen kunnen va-nuit equationele wetten ontstaan door deze te richten. Dat wil zeggen dat we het gelijkteken vervangen door een pijl, die naar links of naar rechts gericht is. Zoals het woord al zegt, bekijken we termherschrijfsystemen over een verzameling termen. Zo een termherschrijfsysteem bestaat dan uit allemaal regels, herschrijfregels, die je vertellen hoe je een term om kan schrijven naar een andere term. Als we van de systemen uit de propositie-algebra termherschrijfsystemen maken, dan blijkt dat we voor een aantal systemen inderdaad volledigheid eenvoudiger kunnen bewijzen.

Tenslotte wil ik hier van de gelegenheid gebruik maken om mijn begeleider, dr. Alban Ponse, hartelijk te bedanken voor al zijn hulp. Ook dr. Inge Bethke en prof. dr. Tom Koornwinder wil ik graag bedanken voor hun hulp en commentaar.

(7)

Hoofdstuk 1

Termherschrijfsystemen

We beginnen met een inleiding in het onderwerp termherschrijfsystemen. Hiertoe behandelen we enkele definities, lemma’s en stellingen.

Definitie 1.1. Een signatuur Σ is een niet-lege verzameling van opera-torsymbolen, waarbij elk operatorsymbool een gegeven ariteit (het aantal argumenten dat we in een operatorsymbool kunnen invullen) heeft. Een operatorsymbool met ariteit 0 noemen we een constantesymbool.

Definitie 1.2. Zij X een verzameling variabelen. De verzameling termen T erΣ(X) over een signatuur Σ wordt inductief gedefinieerd:

(i) x ∈ T erΣ(X) ∀x ∈ X;

(ii) Als F een operator symbool is met ariteit n ≥ 0 en t1, . . . , tn∈ T erΣ(X),

dan F (t1, . . . , tn) ∈ T erΣ(X).

Definitie 1.3. Een term heet gesloten als deze geen variabelen bevat. De verzameling van gesloten termen noteren we met T erΣ(∅).

Definitie 1.4. Een herschrijfregel voor een signatuur Σ is een paar (l, r), met l, r ∈ T erΣ(X). Hierbij mag l geen variabele zijn en moet elke

vari-abele die in r voorkomt, ook in l voorkomen. Zo een herschrijfregel wordt genoteerd als ρ : l → r.

Stel (l, r) is een herschrijfregel. Laat σ een substitutie zijn die elke variabele in l en r door een bepaalde term vervangt. De resulterende herschrijfregel is (lσ, rσ). Als er een term t bestaat die ofwel gelijk is aan lσ, ofwel een subterm bevat die gelijk is aan lσ, dan zeggen we dat we de herschrijfregel (l, r) kunnen toepassen op t. lσ wordt dan vervangen door rσ.

Als zo een term t meerdere subtermen heeft die gelijk zijn aan lσ, dan is het toepassen van de herschrijfregel op een van die subtermen al een correcte herschijving.

(8)

Definitie 1.5. Laat (Σ, R) een termherschrijfsysteem zijn met s, t ∈ T erΣ(X).

We schrijven s  t als s ≡ t of als s → t, dus als er een herschrijfregel is die we op (een subterm van) s kunnen toepassen, of als er een u is zodat s → u en u  t.

Definitie 1.6. Een termherschrijfsysteem (TRS) is een paar (Σ, R), waarbij Σ een signatuur is en R een verzameling van herschrijfregels voor Σ.

Definitie 1.7. Een term heet een normaalvorm als er geen herschrijfregels meer op toepasbaar zijn.

Definitie 1.8. Een termherschrijfsysteem heet terminerend als elke rij herschrijvingen eindigt. Een termherschrijfsysteem noemen we terminerend voor gesloten termen als elke rij herschrijvingen, die begint met een gesloten term, eindigt.

Definitie 1.9. Een termherschrijfsysteem heet zwak confluent als voor elk paar herschrijvingingen s → t1 en s → t2, er een term t is zodat t1  t

en t2  t.

Definitie 1.10. Een termherschrijfsysteem heet confluent als voor elk paar herschrijvingingen s  t1 en s  t2, er een term t is zodat t1  t en t2 t.

Definitie 1.11. Een termherschrijfsysteem heet volledig als dit terminerend en confluent is. We noemen een termherschrijfsysteem volledig voor geloten termen als dit terminerend voor gesloten termen en confluent is.

Volledige termherschrijfsystemen zijn eigenlijk de enige systemen waar we ge¨ınteresseerd in zijn. Volledige termherschrijfsystemen hebben namelijk de mooie eigenschap dat elke term tot een unieke normaalvorm herschrijft. Hierdoor kunnen we beslissen of twee gesloten termen gelijk zijn aan elkaar. Dit wordt ook wel het word problem genoemd. Dit zouden we natuurlijk ook kunnen bekijken voor open termen, dan krijgen we het zogeheten uniform word problem. Wij zullen ons beperken tot gesloten termen, omdat dat genoeg is om ons doel te bereiken.

Lemma 1.12 (Newman). Een termherschrijfsysteem dat zwak confluent en terminerend is, is confluent.

Voor een bewijs verwijzen we naar [3, Theorem 1.2.1].

Uit lemma 1.12 volgt dus dat een zwak confluent en terminerend termherschrijfsysteem, een volledig termherschrijfsysteem impliceert. Stelling 1.13. Als (Σ, R) een volledig termherschrijfsysteem is, dan her-schrijft elke term tot een unieke normaalvorm.

(9)

Bewijs. Laat (Σ, R) een volledig termherschrijfsysteem zijn. (Σ, R) is ter-minerend, dus elke rij herschrijvingen eindigt. Dit betekent dat elke term herschrijft tot een normaalvorm. Immers, normaalvormen zijn de enige ter-men waar geen herschrijfregels meer op toepasbaar zijn.

Stel nu dat er een term is die niet tot een unieke normaalvorm her-schrijft. Oftewel, er is een term s die zowel naar t1 als t2 herschrijft, met t1

en t2 normaalvormen en t1 6= t2. Uit de confluentie van (Σ, R) volgt nu dat

er een term t bestaat zodat t1  t en t2  t. Maar t1 en t2 zijn

normaalvor-men, dus er zijn geen herschrijfregels meer op toepasbaar. Zo een term t kan dus niet bestaan. Dit is dus in tegenspraak met onze aanname dat er een term s bestaat die naar twee verschillende normaalvormen herschrijft. Dus elke term herschrijft tot een unieke normaalvorm.

Om zwakke confluentie van een termherschrijfsysteem te bewijzen, bekijken we eerst de volgende definities.

Definitie 1.14. Een termherschrijfsysteem heet links-lineair als aan de linkerkant van elke herschrijfregel elke variabele maximaal ´e´en maal voorkomt. Wij zullen ons in eerste instantie bezig houden met termherschrijfsystemen die links-lineair zijn.

Definitie 1.15. Een context C is een incomplete term, dat wil zeggen, een term die mogelijk lege plaatsen bevat (oningevulde argumenten van een operatorsymbool). We noteren met C[u1, . . . , un] het resultaat van het in

volgorde vervangen van de lege plaatsten door u1, . . . , un.

Definitie 1.16. Het patroon van een herschrijfregel ρ : l → r is de context l, hierbij is  de substitutie (x) =  voor alle variabelen x. Oftewel, we vervangen alle variabelen uit l door .

Het patroon van een herschrijfregel (l, r) bestaat dus uit de functiesymbolen en constantesymbolen van l. We kunnen dit patroon ook grafisch weergeven, het volgende voorbeeld zal dat verduidelijken.

Voorbeeld 1.17. Laat (Σ, R) een termherschrijfsysteem zijn met Σ = {F, G, a, b}, waarbij F een binair functiesymbool is, G een unair functiesym-bool en a en b constantesymbolen zijn. R bestaat uit de volgende herschrijf-regels:

ρ1: F (G(x), y) → x

(10)

Het patroon van ρ1 en ρ2 is dan:

Definitie 1.18. Een redex van een herschrijfregel ρ : l → r is een substitutie-instantie lσ (voor zekere substitutie σ). We zeggen nu dat lσ een ρ-redex

is.

Naast het patroon van een herschrijfregel, kunnen we ook het patroon van een redex defini¨eren.

Definitie 1.19. Laat ρ : l → r een herschrijfregel zijn, lσ een redex van ρ

en P het patroon van ρ. Het redex-patroon van lσ is P .

Definitie 1.20. Twee redex-voorkomens in een term t overlappen als hun redex-patronen minimaal ´e´en voorkomen van een overeenkomstig functie-symbool delen.

We merken op dat een redex ook kan overlappen met zichzelf. Als deze over-lap echter triviaal is, oftewel totale overover-lap, dan beschouwen we deze niet als overlap, tenzij er twee verschillende herschrijfregels zijn die (modulo her-noeming van variabelen) dezelfde linkerkant, maar verschillende rechterkan-ten hebben. Termherschrijfsystemen met dit soort herschrijfregels beschouwen wij echter niet.

We kunnen ook de overlap tussen twee herschrijfregels bekijken. Definitie 1.21. Twee herschrijfregels ρ1 en ρ2 overlappen als er een term

t bestaat die een ρ1-redex en een ρ2-redex bevat, zodanig dat deze redexen

overlappen.

Redex-overlap kan op twee manieren plaatsvinden en we onderscheiden de gevallen dat de betreffende redexen al dan niet genest zijn. Geneste redex-overlap wil zeggen dat de ene redex binnen de substitutie van de andere redex voorkomt. Dit soort overlap is echter niet problematisch. In het andere geval zeggen we dat de herschrijfregels zelf overlap hebben. Stel we hebben de herschrijfregels ρ1 : l1 → r1 en ρ2 : l2 → r2. Dan zijn er substituties σ

en τ en een term s ongelijk aan een variabele zodanig dat l1 = C[s] voor

zekere context C[ ] en sσ = lτ2. In het geval dat ρ1 en ρ2 dezelfde regel zijn,

mag C[ ] hier niet de lege context zijn (dus s = l1 wordt uitgesloten). Stel

nu dat ρ1 en ρ2 overlap hebben, dan geldt dus dat l1σ = Cσ[sσ] en dat deze

term op twee manieren kan worden herschreven, namelijk met ρ1 naar rσ1

(11)

mogelijk kiezen, noemen we de resulterende termen een kritiek paar. (In [3] heet sσ dan een mgci (most general common instance) van s en l2). Dit

wordt bereikt door σ zo te kiezen dat σ geen variabelen verandert die niet in s voorkomen en geen variabelen introduceert die al in C[ ] voorkomen.

In voorbeeld 1.17 overlappen de herschrijfregels ρ1 en ρ2: we kiezen

s = G(x) en C[ ] = F (, y) en xσ = xτ = a (en σ en τ op andere variabelen de identiteit). We vinden nu dat de term lσ1 = F (G(a), y) op twee manieren herschreven kan worden. Door ρ1 toe te passen vinden we a, door ρ2 toe te

passen, vinden we F (b, y). De termen a en F (b, y) vormen dus een kritiek paar.

Zwakke confluentie kunnen we nu met behulp van het volgende lemma bewijzen.

Lemma 1.22 (Kritieke paar lemma). Een termherschrijfsysteem is zwak confluent dan en slechts dan als alle kritieke paren tot dezelfde term her-schrijven.

Voor een bewijs verwijzen we naar [3, lemma 2.7.15].

Om terminatie voor gesloten termen te bewijzen bekijken we de volgende definities.

Definitie 1.23. Laat (Σ, R) een termherschrijfsysteem zijn. Voor elke F ∈ Σ met ariteit n nemen we een afbeelding f (F ) : Nn → N, waarbij we 0 tot N rekenen. Het gewicht van een term F (t1, . . . , tn) ∈ T erΣ(∅) defini¨eren

we recursief door |F (t1, . . . , tn)| = f (F )(|t1|, . . . , |tn|). Bovendien moet voor

elke i met 1 ≤ i ≤ n gelden dat als |si| > |ti|, dan ook

|F (t1, . . . , ti−1, si, ti+1, . . . , tn)| > |F (t1, . . . , ti−1, ti, ti+1, . . . , tn)| en voor alle

(l, r) ∈ R moet gelden dat |l| > |r|.

We kunnen nu terminatie voor gesloten termen bewijzen door aan alle ge-sloten termen een gewicht toe te kennen. Als dan voor alle (l, r) ∈ R geldt dat |l| > |r| en als |u| > |v|, dat dan ook |C[u]| > |C[v]|, waarbij C een willekeurige context is en u, v ∈ T erΣ(∅). Onze gewichtsfunctie is een

af-beelding naar N. N is van onder begrensd, dus als we inderdaad hebben dat het gewicht van een term daalt nadat er een herschrijfregel op is toegepast, dan kunnen we een term niet oneindig lang door blijven herschrijven.

Zoals al eerder gezegd, geeft terminatie en confluentie een volledig termherschrijfsysteem. We hebben gezien dat dit de enige systemen zijn waar we ge¨ınteresseerd in zijn. Echter, wat te doen als we op een on-volledig termherschrijfsysteem stuiten? In dat geval kunnen we herschrijfre-gels toevoegen zodat het systeem wel volledig wordt. Hierbij moeten de toegevoegde herschrijfregels wel aan een voorwaarde voldoen. Om deze voorwaarde duidelijk te maken, hebben we kennis uit hoofdstuk 5 nodig. We veronderstellen hier dat het begrip equationele specificatie en de relatie tussen zo’n equationele specificatie en een termherschrijfsysteem bekend is

(12)

(zie definitie 5.1 en 5.2). Uit definitie 5.2 volgt dat als (Σ, R) een termher-schrijfsysteem is, dat (Σ, R=) dan een equationele specificatie is. We mogen alleen herschrijfregels aan R toevoegen als herschrijvingen die ontstaan door toevoeging van herschrijfregels aan R niet leiden tot nieuwe gelijkheden in (Σ, R=).

(13)

Hoofdstuk 2

CP Free

Zij A een verzameling constantesymbolen ongelijk aan T of F . We defini¨eren een termherschrijfsysteem (Σ, CP f r), met Σ = { / . , T, F, a | a ∈ A}. / . (Conditional ) is een operatorsymbool met ariteit 3. T (True), F (False) en a ∈ A zijn constantesymbolen en hebben dus ariteit 0. CP f r bestaat uit de volgende vier herschrijfregels:

(CP1) x / T . y → x (CP2) x / F . y → y (CP3) T / x . F → x

(CP4) x / (y / z . u) . v → (x / y . v) / z . (x / u . v)

Stelling 2.1. Het termherschrijfsysteem (Σ, CP f r) is een volledig termher-schrijfsysteem voor gesloten termen.

Bewijs. Een termherschrijfsysteem is volledig als dit confluent en terminerend is. We bekijken termen uit T erΣ(X), waarbij X een verzameling variabelen

is: X = {x, y, z, r, s, u, v, . . .}.

Om zwakke confluentie te kunnen bewijzen, bekijken we de kritieke paren van de herschrijfregels.

CP1 en CP2 overlappen niet. CP1 met CP3 geeft: • T / T . F −−−→ TCP 1

• T / T . F −−−→ TCP 3 CP1 met CP4 geeft:

• x / (y / T . u) . v−−−→ x / y . vCP 1

(14)

CP2 met CP3 geeft: • T / F . F −−−→ FCP 2 • T / T . F −−−→ FCP 3 CP2 met CP4 geeft: • x / (y / F . u) . v−−−→ x / u . vCP 2 • x / (y / F . u) . v−−−→ (x / y . v) / F . (x / u . v)CP 4 −−−→ x / u . vCP 1 CP3 met CP4 geeft: • T / (y / z . u) . F −−−→ y / z . uCP 3 • T / (y / z . u) . F −−−→ (T / y . F ) / z . (T / u . F )CP 4 −−−→ y / z . uCP 3 • x / (T / z . F ) . v−−−→ x / z . vCP 3 • x / (T / z . F ) . v−−−→ (x / T . v) / z . (x / F . v)CP 4 CP 1 −−−→ x / z . (x / F . v) CP 2 −−−→ x / z . v CP4 met CP4 geeft: • x /(y / (r / z . s) . u) . v CP 4 −−−→ x / ((y / r . u) / z . (y / s . u)) . v CP 4 −−−→ (x / (y / r . u) . v) / z . (x / (y / s . u) . v) CP 4 −−−→ ((x / y . v) / r . (x / u . v)) / z . ((x / y . v) / s . (x / u . v)) • x/(y / (r / z . s) . u) . v CP 4 −−−→ (x / y . v) / (r / z . s) . (x / u . v) CP 4 −−−→ ((x / y . v) / r . (x / u . v)) / z . ((x / y . v) / s . (x / u . v)) Alle kritieke paren reduceren tot dezelfde term, dus (Σ, CP f r) is zwak con-fluent.

Om terminatie voor gesloten termen te kunnen bewijzen, kennen we gewichten toe aan de gesloten termen in T erΣ(X), dit zijn dus termen

uit T erΣ(∅). We kiezen:

|a| = 4 ∀ a ∈ A

|T | = |F | = 3

(15)

We merken op dat voor alle u ∈ T erΣ(∅) geldt dat |u| > 2. We gebruiken

hier dat ab > a · b als a ≥ e en b > 1 en we gebruiken dat a · b > a + b als a, b > 2. Hieruit volgt dan:

(CP 1) |u / T . v| = (|u| + |v|)|T | = (|u| + |v|)3 > |u| (CP 2) |u / F . v| = (|u| + |v|)|F | = (|u| + |v|)3 > |v| (CP 3) |T / u . F | = (|T | + |F |)|u| = 6|u| > |u| (CP 4) |u / (v / w . r) . s| = (|u| + |s|)|v/w.r| = (|u| + |s|)(|v|+|r|)|w| > ((|u| + |s|)(|v|+|r|))|w| > ((|u| + |s|)|v|+ (|u| + |s|)|r|)|w| = (|u / v . s| + |u / r . s|)|w| = |(u / v . s) / w . (u / r . s)| Stel |u| > |v|, dan volgt:

|u / w . s| = (|u| + |s|)|w| > (|v| + |s|)|w| = |v / w . s| |w / u . s| = (|w| + |s|)|u| > (|w| + |s|)|v| = |w / v . s| |w / s . u| = (|w| + |u|)|s| > (|w| + |v|)|s| = |w / s . v|

(16)

Dus (Σ, CP f r) is terminerend voor gesloten termen. Newman’s lemma (lemma 1.12) geeft nu dat (Σ, CP f r) confluent is. Dit geeft vervolgens dat (Σ, CP f r) een volledig termherschrijfsysteem voor gesloten termen is. Stelling 2.2. Een term u uit T erΣ(∅) is een normaalvorm met betrekking

tot (Σ, CP f r) als

u = a | T | F | u1/ a . u2 (2.1)

met a ∈ A, u1 en u2 normaalvormen en niet (u1= T `en u2 = F ).

Bewijs. Het moge duidelijk zijn dat de bovenstaande termen (termen uit (2.1)) inderdaad normaalvormen zijn, er zijn immers geen herschrijfregels meer op toepasbaar. Het enige dat we nog na moeten gaan, is dat deze normaalvormen ook echt de enige mogelijke normaalvormen zijn.

Stel er is nog een andere normaalvorm v, waarbij v ongelijk is aan een normaalvorm uit (2.1). Dat betekent dat v van de volgende vorm moet zijn: v = v1/ v2. v3, waarbij v1, v2en v3 normaalvormen zijn en niet (v1 = T

`en v2 = F ), in dat geval zouden we namelijk CP3 kunnen toepassen.

v2 is ongelijk aan a, want we hadden gesteld dat v ongelijk is aan

een normaalvorm uit (2.1). v2 is ook ongelijk aan T en F , anders kunnen

we namelijk de herschrijfregels CP1 en CP2 toepassen. Dus v2 is gelijk aan

v01/ v20 . v03, waarbij v10, v20 en v03 normaalvormen zijn en niet (v01 = T `en v02 = F ). Dat betekent dat v van de volgende vorm is: v = v1/ (v01/ v20 .

v03) . v3. Echter, hier kunnen we herschrijfregel CP4 op toepassen. Dus de

normaalvormen uit (2.1) zijn de enige normaalvormen.

2.1

CP Free en and-then

We defini¨eren een termherschrijfsysteem (Σ0, CP f r0) met Σ0 = Σ ∪ { ◦ }. Hierbij is ◦ (and-then) een operatorsymbool met ariteit 2. De verzameling herschrijfregels CP f r0 bestaat uit de herschrijfregels CPfr samen met de volgende zes herschrijfregels:

(CP5) x / y . x → y ◦ x (CP6) T ◦ x → x (CP7) F ◦ x → x (CP8) (x / y . z) ◦ u → (x ◦ u) / y . (z ◦ u) (CP9) x / (y ◦ z) . u → y ◦ (x / z . u) (CP10) (x ◦ y) ◦ z → x ◦ (y ◦ z)

Stelling 2.3. Het termherschrijfsysteem (Σ0, CP f r0) is volledig voor ges-loten termen.

(17)

Bewijs. Om zwakke confluentie te bewijzen, bekijken we weer de kritieke paren. Uit stelling 3.1 weten we al dat (Σ, CP f r) een volledig termherschri-jfsysteem is. CP5 met CP1 geeft:

• x / T . x−−−→ T ◦ xCP 5 −−−→ xCP 6 • x / T . x−−−→ xCP 1

CP5 met CP2 geeft:

• x / F . x−−−→ F ◦ xCP 5 −−−→ xCP 7 • x / F . x−−−→ xCP 2

CP5 overlapt niet met CP3. CP5 met CP4 geeft:

• x / (y / z . u) . x−−−→ (y / z . u) ◦ xCP 5 −−−→ (y ◦ x) / z . (u ◦ x)CP 8 • x / (y / z . u) . x−−−→ (x / y . x) / z . (x / u . x)CP 4 CP 5 −−−→ (y ◦ x) / z . (u ◦ x) • x / (y / z . y) . v−−−→ x / (z ◦ y) . vCP 5 −−−→ z ◦ (x / y . v)CP 9 • x / (y / z . y) . v−−−→ (x / y . v) / z . (x / y . v)CP 4 −−−→ z ◦ (x / y . v)CP 5 CP5 overlapt niet met CP5, CP6 en CP7. CP5 met CP8 geeft:

• (x / y . x) ◦ z−−−→ (y ◦ x) ◦ zCP 5 −−−→ y ◦ (x ◦ z)CP 10

• (x / y . x) ◦ z−−−→ (x ◦ z) / y . (x ◦ z)CP 8 −−−→ y ◦ (x ◦ z)CP 5 CP5 met CP9 geeft:

• x / (y ◦ z) . x−−−→ (y ◦ z) ◦ xCP 5 −−−→ y ◦ (z ◦ x)CP 10 • x / (y ◦ z) . x−−−→ y ◦ (x / z . x)CP 9 −−−→ y ◦ (z ◦ x)CP 5

CP5 overlapt niet met CP10. CP6 overlapt niet met CP1, CP2, CP3, CP4, CP6, CP7 en CP8. CP6 met CP9 geeft: • x / (T ◦ y) . z−−−→ x / y . zCP 6 • x / (T ◦ y) . z−−−→ T ◦ (x / y . z)CP 9 −−−→ x / y . zCP 6 CP6 met CP10 geeft: • (T ◦ x) ◦ y−−−→ x ◦ yCP 6 • (T ◦ x) ◦ y−−−→ T ◦ (x ◦ y)CP 10 −−−→ x ◦ yCP 6

(18)

CP7 overlapt niet met CP1, CP2, CP3, CP4, CP7 en CP8. CP7 met CP9 geeft: • x / (F ◦ y) . z−−−→ x / y . zCP 7 • x / (F ◦ y) . z−−−→ F ◦ (x / y . z)CP 9 −−−→ x / y . zCP 7 CP7 met CP10 geeft: • (F ◦ x) ◦ y−−−→ x ◦ yCP 7 • (F ◦ x) ◦ y−−−→ F ◦ (x ◦ y)CP 10 −−−→ x ◦ yCP 6 CP8 met CP1 geeft: • (x / T . y) ◦ z−−−→ (x ◦ z) / T . (y ◦ z)CP 8 −−−→ x ◦ zCP 1 • (x / T . y) ◦ z−−−→ x ◦ zCP 1 CP8 met CP2 geeft: • (x / F . y) ◦ z−−−→ (x ◦ z) / F . (y ◦ z)CP 8 −−−→ y ◦ zCP 2 • (x / F . y) ◦ z−−−→ y ◦ zCP 2 CP8 met CP3 geeft: • (T / x . F ) ◦ y−−−→ (T ◦ y) / x . (F ◦ y)CP 8 −−−→ y / x . (F ◦ y)CP 6 CP 7 −−−→ y / x . y−−−→ x ◦ yCP 5 • (T / x . F ) ◦ y−−−→ x ◦ yCP 3 CP8 met CP4 geeft: • (x / (y / z . u) . v) ◦ w−−−→ (x ◦ w) / (y / z . u) . (v ◦ w)CP 8 CP 4 −−−→ ((x ◦ w) / y . (v ◦ w)) / z . ((x ◦ w) / u . (v ◦ w)) • (x / (y / z . u) . v) ◦ w−−−→ ((x / y . v) / z . (x / u . v)) ◦ wCP 4 CP 8 −−−→ ((x / y . v) ◦ w) / z . ((x / u . v) ◦ w) CP 8 −−−→ ((x ◦ w) / y . (v ◦ w)) / z . ((x ◦ w) / u . (v ◦ w)) CP8 overlapt niet met CP8. CP8 met CP9 geeft:

• (x / (y ◦ z) . u) ◦ v−−−→ (x ◦ v) / (y ◦ z) . (u ◦ v)CP 8 CP 9 −−−→ y ◦ ((x ◦ v) / z . (u ◦ v)) • (x / (y ◦ z) . u) ◦ v−−−→ (y ◦ (x / z . u)) ◦ vCP 9 −−−→ y ◦ ((x / z . u) ◦ v)CP 10 CP 8 −−−→ y ◦ ((x ◦ v) / z . (u ◦ v))

(19)

• x / ((y / z . u) ◦ v) . w−−−→ x / ((y ◦ v) / z . (u ◦ v)) . wCP 8 CP 4 −−−→ (x / (y ◦ v) . w) / z . (x / (u ◦ v) . w) CP 9 −−−→ (y ◦ (x / v . w)) / z . (u ◦ (x / v . w)) • x / ((y / z . u) ◦ v) . w−−−→ (y / z . u) ◦ (x / v . w)CP 9 CP 8 −−−→ (y ◦ (x / v . w)) / z . (u ◦ (x / v . w)) CP8 met CP10 geeft: • ((x / y . z) ◦ u) ◦ v−−−→ ((x ◦ u) / y . (z ◦ u)) ◦ vCP 8 CP 8 −−−→ ((x ◦ u) ◦ v) / y . ((z ◦ u) ◦ v) CP 10 −−−→ x ◦ (u ◦ v)) / y . (z ◦ (u ◦ v)) • ((x / y . z) ◦ u) ◦ v−−−→ (x / y . z) ◦ (u ◦ v)CP 10 CP 8 −−−→ (x ◦ (u ◦ v)) / y . (z ◦ (u ◦ v)) CP9 overlapt niet met CP1 en CP2. CP9 met CP3 geeft:

• T / (x ◦ y) . F −−−→ x ◦ (T / y . F )CP 9 −−−→ x ◦ yCP 3 • T / (x ◦ y) . F −−−→ x ◦ yCP 3 CP9 met CP4 geeft: • x / (y / (z ◦ u) . v) . w−−−→ x / (z ◦ (y / u . v)) . wCP 9 CP 9 −−−→ z ◦ (x / (y / u . v) . w) CP 4 −−−→ z ◦ ((x / y . w) / u . (x / v . w)) • x / (y / (z ◦ u) . v) . w−−−→ (x / y . w) / (z ◦ u) . (x / v . w)CP 4 CP 9 −−−→ z ◦ ((x / y . w) / u . (x / v . w)) CP9 overlapt niet met CP9. CP9 met CP10 geeft:

• x / ((y ◦ z) ◦ u) . v−−−→ (y ◦ z) ◦ (x / u . v)CP 9 −−−→ y ◦ (z ◦ (x / u . v))CP 10 • x / ((y ◦ z) ◦ u) . v−−−→ x / (y ◦ (z ◦ u)) . vCP 10 −−−→ y ◦ (x / (z ◦ u) . v)CP 9

CP 9

−−−→ y ◦ (z ◦ (x / u . v))

CP10 overlapt niet met CP1, CP2, CP3, CP4 en CP5. CP10 met CP10 geeft:

• ((x ◦ y) ◦ z) ◦ u−−−→ (x ◦ (y ◦ z)) ◦ uCP 10 −−−→ x ◦ ((y ◦ z) ◦ u)CP 10

CP 10

−−−→ x ◦ (y ◦ (z ◦ u))

(20)

Alle kritieke paren herschrijven tot dezelfde term en dus kunnen we con-cluderen dat (Σ0, CP f r0) zwak confluent is. Om terminatie voor gesloten termen te bewijzen, kennen we weer gewichten toe aan de gesloten termen uit T erΣ0(X), oftewel we bekijken de termen uit T erΣ0(∅). We kiezen:

|a| = 4 ∀ a ∈ A

|T | = |F | = 3

|u / v . w| = (|u| + |w|)|v| ∀ u, v, w ∈ T erΣ(∅) |u ◦ v| = |v||u| ∀ u, v ∈ T erΣ(∅)

In stelling 2.1 hebben we al bewezen dat (Σ, CP f r) terminerend voor geslo-ten termen is met deze gewichgeslo-ten.

(CP 5) |u / v . u| = (|u| + |u|)|v| = (2|u|)|v| > |u||v| = |v ◦ u| (CP 6) |T ◦ u| = |u||T | = |u|3 > |u| (CP 7) |F ◦ u| = |u||F | = |u|3 > |u| (CP 8) |(u / v . w) ◦ r| = |r||u/v.w| = |r|(|u|+|w|)|v| > (|r||u|+|w|)|v| > (|r||u|+ |r||w|)|v| = (|u ◦ r| + |w ◦ r|)|v| = |(u ◦ r) / v . (w ◦ r)| (CP 9) |u / (v ◦ w) . r| = (|u| + |r|)|v◦w| = (|u| + |r|)|w||v| > ((|u| + |r|)|w|)|v| = |u / w . r||v| = |v ◦ (u / w . r)|

(21)

(CP 10) |(u ◦ v) ◦ w| = |w||u◦v| = |w||v||u| > (|w||v|)|u| = |v ◦ w||u| = |u ◦ (v ◦ w)| Stel |u| > |v|, dan volgt:

|u ◦ w| = |w||u| > |w||v| = |v ◦ w| |w ◦ u| = |u||w| > |v||w| = |w ◦ v|

(Σ0, CP f r0) is dus terminerend voor gesloten termen. Newman’s lemma (lemma 1.12) geeft nu dat (Σ0, CP f r0) confluent is, en daarmee ook volledig voor gesloten termen.

(22)
(23)

Hoofdstuk 3

CP Contractive

We defini¨eren een termherschrijfsysteem (Σ, CP cr). Σ is dezelfde verzame-ling als gedefinieerd in hoofdstuk 2. CP cr is de verzameverzame-ling CP f r samen met de volgende vier herschrijfregels:

(CPcr1) (x / a . y) / a . z → x / a . z (CPcr2) x / a . (y / a . z) → x / a . z (CPcr3) a / a . x → T / a . x (CPcr4) x / a . a → x / a . F

Hierbij geldt dat a ∈ A, waar A ⊂ Σ een verzameling constantesymbolen ongelijk aan T of F is.

Stelling 3.1. Het termherschrijfsysteem (Σ, CP cr) is volledig voor gesloten termen.

Bewijs. We bekijken weer termen uit T erΣ(X), waarbij X een verzameling

variabelen is: X = {x, y, z, u, v, . . . }. Uit stelling 2.1 weten we al dat CP Free een volledig termherschrijfsysteem is. We beschouwen de kritieke paren van de herschrijfregels.

CPcr1 overlapt met met zowel CP1 als CP2 niet. CPcr1 met CP3 geeft:

• (T / a . F ) / a . z−−−→ a / a . zCP 3 −−−−→ T / a . xCP cr3 • (T / a . F ) / a . z−−−−→ T / a . zCP cr1

(24)

CPcr1 met CP4 geeft: • u / ((x / a . y) / a . z) . v−−−→ (u / (x / a . y) . v) / a . (u / z . v)CP 4 CP 4 −−−→ ((u / x . v) / a . (u / y . v)) / a . (u / z . v) CP cr1 −−−−→ (u / x . v) / a . (u / z . v) • u / ((x / a . y) / a . z) . v−−−−→ u / (x / a . z) . vCP cr1 CP 4 −−−→ (u / x . v) / a . (u / z . v) CPcr1 met CPcr1 geeft: • ((x / a . y) / a . z) / a . u−−−−→ (x / a . y) / a . uCP cr1 −−−−→ x / a . uCP cr1 • ((x / a . y) / a . z) / a . u−−−−→ (x / a . z) / a . uCP cr1 −−−−→ x / a . uCP cr1 Cpcr1 met Cpcr2 geeft: • (x / a . y) / a . (u / a . z)−−−−→ x / a . (u / a . z)CP cr1 −−−−→ x / a . zCP cr2 • (x / a . y) / a . (u / a . z)−−−−→ (x / a . y) / a . zCP cr2 −−−−→ x / a . zCP cr1 • (x / a . (y / a . z)) / a . u−−−−→ x / a . uCP cr1 • (x / a . (y / a . z)) / a . u−−−−→ (x / a . z) / a . uCP cr2 −−−−→ x / a . uCP cr1 • x / a . ((y / a . z) / a . u)−−−−→ x / a . (y / a . u)CP cr1 −−−−→ x / a . uCP cr2 • x / a . ((y / a . z) / a . u)−−−−→ x / a . uCP cr2 CPcr1 met CPcr3 geeft: • (a / a . y) / a . z−−−−→ a / a . zCP cr1 −−−−→ T / a . zCP cr3 • (a / a . y) / a . z−−−−→ (T / a . y) / a . zCP cr3 −−−−→ T / a . zCP cr1 Cpcr1 met Cpcr4 geeft: • (x / a . y) / a . a−−−−→ x / a . aCP cr1 −−−−→ x / a . FCP cr4 • (x / a . y) / a . a−−−−→ (x / a . y) / a . FCP cr4 −−−−→ x / a . FCP cr1 • (x / a . a) / a . z−−−−→ x / a . zCP cr1 • (x / a . a) / a . z−−−−→ (x / a . F ) / a . zCP cr4 −−−−→ x / a . zCP cr1

(25)

CPcr2 overlapt niet met CP1 als CP2. CPcr2 met CP3 geeft: • x / a . (T / a . F )−−−−→ x / a . FCP cr2 • x / a . (T / a . F )−−−→ x / a . aCP 3 −−−−→ x / a . FCP cr4 CPcr2 met CP4 geeft: • x / (y / a . (z / a . u)) . v CP cr2 −−−−→ x / (y / a . u) . v CP 4 −−−→ (x / y . v) / a . (x / u . v) • x / (y / a . (z / a . u)) . v CP 4 −−−→ (x / y . v) / a . (x / (z / a . u) . v) CP 4 −−−→ (x / y . v) / a . ((x / z . v) / a . (x / u . v)) CP cr2 −−−−→ (x / y . v) / a . (x / u . v) CPcr2 met CPcr2 geeft: • x / a . (y / a . (z / a . u))−−−−→ x / a . (z / a . u)CP cr2 −−−−→ x / a . uCP cr2 • x / a . (y / a . (z / a . u))−−−−→ x / a . (y / a . u)CP cr2 −−−−→ x / a . uCP cr2 CPcr2 met CPcr3 geeft: • a / a . (y / a . z)−−−−→ a / a . zCP cr2 −−−−→ T / a . zCP cr3 • a / a . (y / a . z)−−−−→ T / a . (y / a . z)CP cr3 −−−−→ T / a . zCP cr2 • x / a . (a / a . z)−−−−→ x / a . zCP cr2 • x / a . (a / a . z)−−−−→ x / a . (T / a . z)CP cr3 −−−−→ x / a . zCP cr2 CPcr2 met CPcr4 geeft: • x / a . (y / a . a)−−−−→ x / a . aCP cr2 −−−−→ x / a . FCP cr4 • x / a . (y / a . a)−−−−→ x / a . (y / a . F )CP cr4 −−−−→ x / a . FCP cr2 CPcr3 met CPcr4 geeft: • a / a . a−−−−→ T / a . aCP cr3 −−−−→ T / a . FCP cr4 −−−→ aCP 3 • a / a . a−−−−→ a / a . FCP cr4 −−−−→ T / a . FCP cr3 −−−→ aCP 3

Alle kritieke paren reduceren tot dezelfde term, dus het termherschrijfsys-teem (Σ, CP cr) is zwak confluent.

(26)

Om terminatie voor gesloten termen te kunnen concluderen kennen we gewichten toe aan de gesloten termen uit T erΣ(X), we bekijken dus de

termen uit T erΣ(∅). We kiezen net als in het bewijs van stelling 2.1:

|a| = 4 ∀ a ∈ A

|T | = |F | = 3

|u / v . w| = (|u| + |w|)|v| ∀ u, v, w ∈ T erΣ(∅)

Gegeven deze gewichten, weten we al dat (Σ, CP f r) terminerend voor ge-sloten termen is.

(CP cr1) |(u / a . v) / a . w| = (|u / a . v| + |w|)|a| = ((|u| + |v|)|a|+ |w|)|a| = ((|u| + |v|)4+ |w|)4 > (|u| + |w|)4

= |u / a . w|

(CP cr2) |u / a . (v / a . w)| = (|u| + |v / a . w|)|a| = (|u| + (|v| + |w|)|a|)|a| = (|u| + (|v| + |w|)4)4 > (|u| + |w|)4

= |u / a . w| (CP cr3) |a / a . u| = (|a| + |u|)|a|

= (4 + |u|)4 > (3 + |u|)4 = (|T | + |u|)|a| = |T / a . u| (CP cr4) |u / a . a| = (|u| + |a|)|a|

= (|u| + 4)4 > (|u| + 3)4 = (|u| + |F |)|a| = |u / a . F |

We kunnen nu concluderen dat (Σ, CP cr) terminerend voor gesloten termen is. Newman’s lemma (lemma 1.12) geeft nu dat (Σ, CP cr) confluent is, en daarmee ook een volledig termherschrijfsysteem voor gesloten termen is.

(27)

Stelling 3.2. Een term u uit T erΣ(∅) is een normaalvorm met betrekking

tot (Σ, CP cr) als

u = a | T | F | u1/ a . u2 (3.1)

met a ∈ A, u1 6= a en u2 6= a normaalvormen en niet (u1 = T `en u2 = F )

en de centrale conditie van u1 en u2, mits deze aanwezig is, is ongelijk aan

a.

Bewijs. Uit stelling 2.2 weten we dat elke term uit T erΣ(∅) met betrekking

tot (Σ, CP f r) tot een normaalvorm uit (2.1) herschrijft. We hebben nu echter ook de herschrijfregels CPcr1, CPcr2, CPcr3 en CPcr4. Dat betekent dat de centrale conditie van u1 ongelijk aan a moet zijn, anders kunnen we

de herschrijfregel CPcr1 toepassen. De centrale conditie van u2 moet ook

ongelijk aan a zijn, anders kunnen we CPcr2 toepassen. u1 en u2 moeten

bovendien ongelijk aan a zijn, anders kunnen we CPcr3 en CPcr4 toepassen. Dit geeft precies de normaalvormen uit (3.1).

3.1

CP Contractive en and-then

We defini¨eren een termherschrijfsysteem (Σ0, CP cr0). Σ0 is dezelfde verza-meling als de in hoofdstuk 2 gedefinieerde verzaverza-meling Σ0. CP cr0 bestaat uit de herschrijfregels CP f r0, CP cr en de volgende herschrijfregels:

(CPcr5) (a ◦ x) / a . y → x / a . y (CPcr6) a ◦ (x / a . y) → x / a . y (CPcr7) x / a . (a ◦ y) → x / a . y (CPcr8) a ◦ a → a (CPcr9) a ◦ (a ◦ x) → a ◦ x

Hierbij geldt weer dat a ∈ A, waarbij A ⊂ Σ een verzameling constantesym-bolen ongelijk aan T of F is.

Stelling 3.3. Het termherschrijfsysteem (Σ0, CP cr0) is volledig voor ges-loten termen.

Bewijs. Om zwakke confluentie te bewijzen, bekijken we weer de kritieke paren. Uit stelling 2.3 weten we al dat (Σ0, CP f r0) en (Σ, CP cr) volledige termherschrijfsystemen zijn. CPcr1 met CP5 geeft:

• (x / a . x) / a . y−−−−→ x / a . yCP cr1

• (x / a . x) / a . y−−−→ (a ◦ x) / a . yCP 5 −−−−→ x / a . yCP cr5

• (x / a . y) / a . (x / a . y)−−−−→ x / a . (x / a . y)CP cr1 −−−−→ x / a . yCP cr2 • (x / a . y) / a . (x / a . y)−−−→ a ◦ (x / a . y)CP 5 −−−−→ x / a . yCP cr6

(28)

CPcr1 heeft geen kritiek paar met CP6 en CP7. CPcr1 met CP8 geeft: • ((x / a . y) / a . z) ◦ u−−−−→ (x / a . z) ◦ uCP cr1 −−−→ (x ◦ u) / a . (z ◦ u)CP 8 • ((x / a . y) / a . z) ◦ u−−−→ ((x / a . y) ◦ u) / a . (z ◦ u)CP 8 CP 8 −−−→ ((x ◦ u) / a . (y ◦ u)) / a . (z ◦ u) CP cr1 −−−−→ (x ◦ u) / a . (z ◦ u)

CPcr1 overlapt niet met CP9 en CP10. CPcr1 met CPcr5 geeft: • ((a ◦ x) / a . y) / a . z−−−−→ (a ◦ x) / a . zCP cr1 −−−−→ x / a . zCP cr5 • ((a ◦ x) / a . y) / a . z−−−−→ (x / a . y) / a . zCP cr5 −−−−→ x / a . zCP cr1 CPcr1 met CPcr6 geeft: • a ◦ ((x / a . y) / a . z)−−−−→ a ◦ (x / a . z)CP cr1 −−−−→ x / a . zCP cr6 • a ◦ ((x / a . y) / a . z)−−−−→ (x / a . y) / a . zCP cr6 −−−−→ x / a . zCP cr1 CPcr1 met CPcr7 geeft: • (x / a . y) / a . (a ◦ z)−−−−→ x / a . (a ◦ z)CP cr1 −−−−→ x / a . zCP cr7 • (x / a . y) / a . (a ◦ z)−−−−→ (x / a . y) / a . zCP cr7 −−−−→ x / a . zCP cr1 • (x / a . (a ◦ y)) / a . z−−−−→ x / a . zCP cr1 • (x / a . (a ◦ y)) / a . z−−−−→ (x / a . y) / a . zCP cr7 −−−−→ x / a . zCP cr1 CPcr1 overlapt niet met CPcr8 en CPcr9. CPcr2 met CP5 geeft:

• x / a . (y / a . y)−−−−→ x / a . yCP cr2

• x / a . (y / a . y)−−−→ x / a . (a ◦ y)CP 5 −−−−→ x / a . yCP cr7

• (x / a . y) / a . (x / a . y)−−−−→ (x / a . y) / a . yCP cr2 −−−−→ x / a . yCP cr1 • (x / a . y) / a . (x / a . y)−−−→ a ◦ (x / a . y)CP 5 −−−−→ x / a . yCP cr6 CPcr2 overlapt niet met CP6 en CP7. CPcr2 met CP8 geeft:

• (x / a . (y / a . z)) ◦ u−−−−→ (x / a . z) ◦ uCP cr2 −−−→ (x ◦ u) / a . (z ◦ u)CP 8 • (x / a . (y / a . z)) ◦ u−−−→ (x ◦ u) / a . ((y / a . z) ◦ u)CP 8 CP 8 −−−→ (x ◦ u) / a . ((y ◦ u) / a . (z ◦ u)) CP cr2 −−−−→ (x ◦ u) / a . (z ◦ u)

(29)

CPcr2 overlapt niet met CP9 en CP10. CPcr2 met CPcr5 geeft: • x / a . ((a ◦ y) / a . z)−−−−→ x / a . zCP cr2 • x / a . ((a ◦ y) / a . z)−−−−→ x / a . (y / a . z)CP cr5 −−−−→ x / a . zCP cr2 • (a ◦ x) / a . (y / a . z)−−−−→ (a ◦ x) / a . zCP cr2 • (a ◦ x) / a . (y / a . z)−−−−→ x / a . (y / a . z)CP cr5 −−−−→ x / a . zCP cr2 CPcr2 met CPcr6 geeft: • a ◦ (x / a . (y / a . z))−−−−→ a ◦ (x / a . z)CP cr2 −−−−→ x / a . zCP cr6 • a ◦ (x / a . (y / a . z))−−−−→ x / a . (y / a . z)CP cr6 −−−−→ x / a . zCP cr2 CPcr2 met CPcr7 geeft: • x / a . (y / a . (a ◦ z))−−−−→ x / a . (a ◦ z)CP cr2 −−−−→ x / a . zCP cr7 • x / a . (y / a . (a ◦ z))−−−−→ x / a . (y / a . z)CP cr7 −−−−→ x / a . zCP cr2 CPcr2 overlapt niet met CPcr8 en CPcr9. CPcr3 met CP5 geeft:

• a / a . a−−−−→ T / a . aCP cr3 −−−−→ T / a . FCP cr4 −−−→ aCP 3 • a / a . a−−−→ a ◦ aCP 5 −−−−→ aCP cr8

Cpcr3 overlapt niet met CP6 en CP7. CPcr3 met CP8 geeft:

• (a / a . x) ◦ y−−−−→ (T / a . x) ◦ yCP cr3 −−−→ (T ◦ y) / a . (x ◦ y)CP 8

CP 6

−−−→ y / a . (x ◦ y)

• (a / a . x) ◦ y−−−→ (a ◦ y) / a . (x ◦ y)CP 8 −−−−→ y / a . (x ◦ y)CP cr5 CPcr3 overlapt niet met CP9, CP10 en CPcr5. CPcr3 met CPcr6 geeft:

• a ◦ (a / a . x)−−−−→ a ◦ (T / a . x)CP cr3 −−−−→ T / a . xCP cr6 • a ◦ (a / a . x)−−−−→ a / a . xCP cr6 −−−−→ T / a . xCP cr3 CPcr3 met CPcr7 geeft:

• a / a . (a ◦ x)−−−−→ T / a . (a ◦ x)CP cr3 −−−−→ T / a . xCP cr7 • a / a . (a ◦ x)−−−−→ a / a . xCP cr7 −−−−→ T / a . xCP cr3

(30)

CPcr3 overlapt niet met CPcr8 en CPcr9. CPcr4 met CP5 geeft: • a / a . a−−−−→ a / a . FCP cr4 −−−−→ T / a . FCP cr3 −−−→ aCP 3

• a / a . a−−−→ a ◦ aCP 5 −−−−→ aCP cr8

CPcr4 overlapt niet met CP6 en CP7. CPcr4 met CP8 geeft:

• (x / a . a) ◦ y−−−−→ (x / a . F ) ◦ yCP cr4 −−−→ (x ◦ y) / a . (F ◦ y)CP 8

CP 7

−−−→ (x ◦ y) / a . y

• (x / a . a) ◦ y−−−→ (x ◦ y) / a . (a ◦ y)CP 8 −−−−→ (x ◦ y) / a . yCP cr7 CPcr4 overlapt niet met CP9 en CP10. CPcr4 met CPcr5 geeft:

• (a ◦ x) / a . a−−−−→ (a ◦ x) / a . FCP cr4 −−−−→ x / a . FCP cr5 • (a ◦ x) / a . a−−−−→ x / a . aCP cr5 −−−−→ x / a . FCP cr4 CPcr4 met CPcr6 geeft:

• a ◦ (x / a . a)−−−−→ a ◦ (x / a . F )CP cr4 −−−−→ x / a . FCP cr6 • a ◦ (x / a . a)−−−−→ x / a . aCP cr6 −−−−→ x / a . FCP cr4

CPcr4 overlapt niet met CPcr7, CPcr8 en CPcr9. CPcr5 overlapt niet met CP1, CP2 en CP3. CPcr5 met CP4 geeft: • x / ((a ◦ y) / a . z) . u−−−−→ x / (y / a . z) . uCP cr5 CP 4 −−−→ (x / y . u) / a . (x / z . u) • x / ((a ◦ y) / a . z) . u−−−→ (x / (a ◦ y) . u) / a . (x / z . u)CP 4 CP 9 −−−→ (a ◦ (x / y . u)) / a . (x / z . u) CP cr6 −−−−→ (x / y . u) / a . (x / z . u) CPcr5 met CP5 geeft: • (a ◦ x) / a . (a ◦ x)−−−−→ x / a . (a ◦ x)CP cr5 −−−−→ x / a . xCP cr7 −−−→ a ◦ xCP 5 • (a ◦ x) / a . (a ◦ x)−−−→ a ◦ (a ◦ x)CP 5 −−−−→ a ◦ xCP cr9

CPcr5 overlapt niet met CP6 en CP7. CPcr5 met CP8 geeft:

• ((a ◦ x) / a . y) ◦ z−−−−→ (x / a . y) ◦ zCP cr5 −−−→ (x ◦ z) / a . (y ◦ z)CP 8 • ((a ◦ x) / a . y) ◦ z−−−→ ((a ◦ x) ◦ z) / a . (y ◦ z)CP 8 CP 10 −−−→ (a ◦ (x ◦ z)) / a . (y ◦ z) CP 8 −−−→ (x ◦ z) / a . (y ◦ z)

(31)

CPcr5 overlapt niet met CP9 en CP10. CPcr5 met CPcr1 geeft: • ((a ◦ x) / a . y) / a . z−−−−→ (x / a . y) / a . zCP cr5 −−−−→ x / a . zCP cr1 • ((a ◦ x) / a . y) / a . z−−−−→ (a ◦ x) / a . zCP cr1 −−−−→ x / a . zCP cr5 CPcr5 met Cpcr2 geeft: • x / a . ((a ◦ y) / a . z)−−−−→ x / a . (y / a . z)CP cr5 −−−−→ x / a . zCP cr2 • x / a . ((a ◦ y) / a . z)−−−−→ x / a . zCP cr2 • (a ◦ x) / a . (y / a . z)−−−−→ x / a . (y / a . z)CP cr5 −−−−→ x / a . zCP cr2 • (a ◦ x) / a . (y / a . z)−−−−→ (a ◦ x) / a . zCP cr2 −−−−→ x / a . zCP cr5 CPcr5 overlapt niet met CPcr3. CPcr5 met CPcr4 geeft:

• (a ◦ x) / a . a−−−−→ x / a . aCP cr5 −−−−→ x / a . FCP cr4 • (a ◦ x) / a . a−−−−→ (a ◦ x) / a . FCP cr4 −−−−→ x / a . FCP cr5 CPcr5 overlapt niet met CPcr5. CPcr5 met CPcr6 geeft:

• a ◦ ((a ◦ x) / a . y)−−−−→ a ◦ (x / a . y)CP cr5 −−−−→ x / a . yCP cr6 • a ◦ ((a ◦ x) / a . y)−−−−→ (a ◦ x) / a . yCP cr6 −−−−→ x / a . yCP cr5 • (a ◦ (x / a . y)) / a . z−−−−→ (x / a . y) / a . zCP cr5 • (a ◦ (x / a . y)) / a . z−−−−→ (x / a . y) / a . zCP cr6 CPcr5 met CPcr7 geeft: • (a ◦ x) / a . (a ◦ y)−−−−→ x / a . (a ◦ y)CP cr5 −−−−→ x / a . yCP cr7 • (a ◦ x) / a . (a ◦ y)−−−−→ (a ◦ x) / a . yCP cr7 −−−−→ x / a . yCP cr5 CPcr5 met CPcr8 geeft: • (a ◦ a) / a . x−−−−→ a / a . xCP cr5 • (a ◦ a) / a . x−−−−→ a / a . xCP cr8 CPcr5 met CPcr9 geeft: • (a ◦ (a ◦ x)) / a . y−−−−→ (a ◦ x) / a . yCP cr5 • (a ◦ (a ◦ x)) / a . y−−−−→ (a ◦ x) / a . yCP cr9

(32)

CPcr6 overlapt niet met CP1 en CP2, CPcr6 met CP3 geeft: • a ◦ (T / a . F )−−−−→ T / a . FCP cr6 −−−→ aCP 3

• a ◦ (T / a . F )−−−→ a ◦ aCP 3 −−−−→ aCP cr9

CPcr6 overlapt niet met CP4. CPcr6 met CP5 geeft: • a ◦ (x / a . x)−−−−→ x / a . xCP cr6 −−−→ a ◦ xCP 5 • a ◦ (x / a . x)−−−→ a ◦ (a ◦ x)CP 5 −−−−−→ a ◦ xCP cr10

CPcr6 overlapt niet met CP6, CP7 en CP8. CPcr6 met CP9 geeft: • x / (a ◦ (y / a . z)) . u−−−−→ x / (y / a . z) . uCP cr6 CP 4 −−−→ (x / y . u) / a . (x / z . u) • x / (a ◦ (y / a . z)) . u−−−→ a ◦ (x / (y / a . z) . u)CP 9 CP 4 −−−→ a ◦ ((x / y . u) / a . (x / z . u)) CP cr6 −−−−→ (x / y . u) / a . (x / z . u) CPcr6 met CP10 geeft: • (a ◦ (x / a . y)) ◦ z−−−−→ (x / a . y) ◦ zCP cr6 −−−→ (x ◦ z) / a . (y ◦ z)CP 8 • (a ◦ (x / a . y)) ◦ z−−−→ a ◦ ((x / a . y) ◦ z)CP 10 CP 8 −−−→ a ◦ ((x ◦ z) / a . (y ◦ z)) CP cr6 −−−−→ (x ◦ z) / a . (y ◦ z) CPcr6 met CPcr1 geeft: • a ◦ ((x / a . y) / a . z)−−−−→ (x / a . y) / a . zCP cr6 −−−−→ x / a . zCP cr1 • a ◦ ((x / a . y) / a . z)−−−−→ a ◦ (x / a . z)CP cr1 −−−−→ x / a . zCP cr6 CPcr6 met CPcr2 geeft: • a ◦ (x / a . (y / a . z))−−−−→ x / a . (y / a . z)CP cr6 −−−−→ x / a . zCP cr2 • a ◦ (x / a . (y / a . z))−−−−→ a ◦ (x / a . z)CP cr2 −−−−→ x / a . zCP cr6 CPcr6 met CPcr3 geeft: • a ◦ (a / a . x)−−−−→ a / a . xCP cr6 −−−−→ T / a . xCP cr3 • a ◦ (a / a . x)−−−−→ a ◦ (T / a . x)CP cr3 −−−−→ T / a . xCP cr6

(33)

CPcr6 met CPcr4 geeft:

• a ◦ (x / a . a)−−−−→ x / a . aCP cr6 −−−−→ x / a . FCP cr4 • a ◦ (x / a . a)−−−−→ a ◦ (x / a . F )CP cr4 −−−−→ x / a . FCP cr6 CPcr6 overlapt niet met CPcr6. CPcr6 met CPcr7 geeft:

• a ◦ (x / a . (a ◦ z))−−−−→ x / a . (a ◦ z)CP cr6 −−−−→ x / a . zCP cr7 • a ◦ (x / a . (a ◦ z))−−−−→ a ◦ (x / a . z)CP cr7 −−−−→ x / a . zCP cr6 • x / a . (a ◦ (y / a . z))−−−−→ x / a . (y / a . z)CP cr6

• x / a . (a ◦ (y / a . z))−−−−→ x / a . (y / a . z)CP cr7

CPcr6 overlapt niet met CPcr8 en CPcr9. CPcr7 overlapt niet met CP1, CP2 en CP3. CPcr7 met CP4 geeft: • x / (y / a . (a ◦ z)) . u−−−−→ x / (y / a . z) . uCP cr7 CP 4 −−−→ (x / y . u) / a . (x / z . u) • x / (y / a . (a ◦ z)) . u−−−→ (x / y . u) / a . (x / (a ◦ z) . u)CP 4 CP 9 −−−→ (x / y . u) / a . (a ◦ (x / z . u)) CP cr7 −−−−→ (x / y . u) / a . (x / z . u) CPcr7 met CP5 geeft: • (a ◦ x) / a . (a ◦ x)−−−−→ (a ◦ x) / a . xCP cr7 −−−−→ x / a . xCP cr5 CP 5 −−−→ a ◦ x • (a ◦ x) / a . (a ◦ x)−−−→ a ◦ (a ◦ x)CP 5 −−−−→ a ◦ xCP cr9 CPcr7 overlapt niet met CP6 en CP7. CPcr7 met CP8 geeft:

• (x / a . (a ◦ y)) ◦ z−−−−→ (x / a . y) ◦ zCP cr7 −−−→ (x ◦ z) / a . (y ◦ z)CP 8 • (x / a . (a ◦ y)) ◦ z−−−→ (x ◦ z) / a . ((a ◦ y) ◦ z)CP 8 CP 10 −−−→ (x ◦ z) / a . (a ◦ (y ◦ z)) CP cr7 −−−−→ (x ◦ z) / a . (y ◦ z)

CPcr7 overlapt niet met CP9, CP10 en CPcr7. Cpcr7 met CPcr8 geeft: • x / a . (a ◦ a)−−−−→ x / a . aCP cr7

(34)

CPcr7 met CPcr9 geeft:

• x / a . (a ◦ (a ◦ x))−−−−→ x / a . (a ◦ x)CP cr7 • x / a . (a ◦ (a ◦ x))−−−−→ x / a . (a ◦ x)CP cr9

CPcr8 overlapt niet met CP1, CP2, CP3, CP4, CP5, CP6, CP7 en CP8. CPcr8 met CP9 geeft: • x / (a ◦ a) . y−−−−→ x / a . yCP cr8 • x / (a ◦ a) . y−−−→ a ◦ (x / a . y)CP 9 −−−→ x / a . yCP 6 CPcr8 met CP10 geeft: • (a ◦ a) ◦ x−−−−→ a ◦ xCP cr8 • (a ◦ a) ◦ x−−−→ a ◦ (a ◦ x)CP 10 −−−−→ a ◦ xCP cr9

CPcr8 overlapt niet met CPcr8. CPcr8 met CPcr9 geeft: • a ◦ (a ◦ a)−−−−→ a ◦ aCP cr8

• a ◦ (a ◦ a)−−−−→ a ◦ aCP cr9

CPcr9 overlapt niet met CP1, CP2, CP3, CP4, CP5, CP6, CP7 en CP8. CPcr9 met CP9 geeft: • x / (a ◦ (a ◦ y)) . z−−−−→ x / (a ◦ y) . zCP cr9 −−−→ a ◦ (x / y . z)CP 9 • x / (a ◦ (a ◦ y)) . z−−−→ a ◦ (x / (a ◦ y) . z)CP 9 −−−→ a ◦ (a ◦ (x / y . z))CP 9 CP cr9 −−−−→ a ◦ (x / y . z) CPcr9 met CP10 geeft: • (a ◦ (a ◦ x)) ◦ y−−−−→ (a ◦ x) ◦ yCP cr9 −−−→ a ◦ (x ◦ y)CP 10 • (a ◦ (a ◦ x)) ◦ y−−−→ a ◦ ((a ◦ x) ◦ y)CP 10 −−−→ a ◦ (a ◦ (x ◦ y))CP 10 CP cr9 −−−−→ a ◦ (x ◦ y) CPcr9 met CPcr9 geeft: • a ◦ (a ◦ (a ◦ x))−−−−→ a ◦ (a ◦ x)CP cr9 • a ◦ (a ◦ (a ◦ x))−−−−→ a ◦ (a ◦ x)CP cr9

Alle kritieke paren herschrijven tot dezelfde term en dus kunnen we con-cluderen dat (Σ0, CP cr0) zwak confluent is. Om terminatie voor gesloten

(35)

termen te bewijzen, kennen we weer gewichten toe aan de gesloten termen uit T erΣ0(X), oftewel we bekijken de termen uit T erΣ0(∅). We kiezen net

als in het bewijs van stelling 2.1 en 2.3:

|a| = 4 ∀ a ∈ A

|T | = |F | = 3

|u / v . w| = (|u| + |w|)|v| ∀ u, v, w ∈ T erΣ(∅) |u ◦ v| = |v||u| ∀ u, v ∈ T erΣ(∅)

In stelling 2.3 en 3.1 hebben we al bewezen dat (Σ0, CP f r0) en (Σ, CP cr) terminerend zijn met deze gewichten. We gaan dus alleen nog CPcr5 t/m Cpcr9 na.

(CP cr5) |(a ◦ u) / a . v| = (|a ◦ u| + |v|)|a| = (|u||a|+ |v|)|a| = (|u|4+ |v|)4 > (|u| + |v|)4 = (|u| + |v|)|a| = |u / a . v|

(CP cr6) |a ◦ (u / a . v)| = |u / a . v||a| = ((|u| + |v|)|a|)|a| > (|u| + |v|)|a| = |u / a . v|

(CP cr7) |u / a . (a ◦ v)| = (|u| + |a ◦ v|)|a| = (|u| + |v||a|)|a| > (|u| + |v|)|a| = |u / a . v|

(CP cr8) |a ◦ a| = |a||a| = 44 > |a|

(36)

(CP cr9) |a ◦ (a ◦ u)| = |a ◦ u||a| = (|u||a|)|a| = (|u|4)4 > |u|4 = |u||a| = |a ◦ u|

We kunnen nu concluderen dat (Σ0, CP cr0) terminerend voor gesloten ter-men is. Newman’s lemma (lemma 1.12) geeft nu dat (Σ0, CP cr0) confluent is. Hieruit volgt dat (Σ0, CP cr0) een volledig termherschrijfsysteem voor gesloten termen is.

(37)

Hoofdstuk 4

CP Repetition proof

We defini¨eren een termherschrijfsysteem (Σ, CP rp), waarbij Σ hetzelfde is als de in hoofdstuk 2 gedefinieerde Σ. CP rp bestaat uit CP f r samen met de volgende twee herschrijfregels:

(CPrp1) (x / a . y) / a . z → (x / a . x) / a . z (CPrp2) x / a . (y / a . z) → x / a . (z / a . z)

We veronderstellen hier dat definitie 5.1 en 5.2 bekend zijn. Van de termher-schrijfsystemen (Σ, CP f r), (Σ, CP cr) en (Σ, CP rp) kunnen we de equa-tionele specificaties (Σ, CP f r=), (Σ, CP cr=) en (Σ, CP rp=) maken. We vinden dan dat voor gesloten termen u en v, u =f r v impliceert dat u =rp v,

wat weer impliceert dat u =cr v. Oftewel, het systeem CP Repetition proof,

ligt “tussen” de systemen CP Free en CP Contractive in. Voor CP Free en CP Contractive hebben we volledigheid voor gesloten termen van de termherschrijfsystemen bewezen. Doordat CP Repetition proof hiertussen ligt, zou je verwachten dat ook dit systeem volledig voor gesloten termen is. Echter, we blijken niet een eenvoudig herschrijfsysteem te kunnen vinden, zo dat we inderdaad volledigheid voor gesloten termen kunnen bewijzen.

4.1

Terminatie

We merken op dat het termherschrijfsysteem (Σ, CP rp) niet termineert. Beschouw de term (x / a . x) / a . y. Deze term kunnen we oneindig lang blijven herschrijven met CPrp1.

Als we bij dit systeem and-then zouden toevoegen, dan lijkt dit in eerste instantie het probleem op te lossen. We krijgen dan namelijk de herschrijfregels CP f r0 samen met de volgende twee:

(CPrp1) (x / a . y) / a . z → (a ◦ x) / a . z (CPrp2) x / a . (y / a . z) → x / a . (a ◦ z)

(38)

Dit is ook meteen de motivatie waarom we de herschrijfregel CP 5 : x / y . x → y ◦ x, zo gericht hebben. Dit leek een oplossing te bieden om zwakke conflu-entie voor (Σ, CP rp) te bewijzen.

Als we nu kijken naar het kritieke paar van CPrp1 en CP3, dan vinden we het volgende:

• (T / a . F ) / a . x−−−−→ (a ◦ T ) / a . xCP rp1 • (T / a . F ) / a . x−−−→ a / a . xCP 3

Hieruit volgt dat we de herschrijfregel (a ◦ T ) / a . x−−−−→ a / a . x aan onzeCP rp3 huidige herschrijfregels zouden willen toevoegen om ons systeem volledig te maken. We bekijken nu het kritieke paar van CPrp1 en CPrp3:

• ((a ◦ T ) / a . x) / a . z−−−−→ (a ◦ (a ◦ T )) / a . zCP rp1

• ((a ◦ T ) / a . x) / a . z−−−−→ (a / a . x) / a . zCP rp3 −−−−→ (a ◦ a) / a . zCP rp1 Hieruit volgt dat we de herschrijfregel

(a ◦ (a ◦ T )) / a . z−−−−→ (a ◦ a) / a . zCP rp4

aan onze herschrijfregels zouden willen toevoegen om ons systeem volledig te maken. Als we nu het kritieke paar van CPrp1 en CPrp4 bekijken, dan vinden we dat we de volgende herschrijfregel zouden moeten toevoegen:

(a ◦ (a ◦ (a ◦ T ))) / a . z−−−−→ (a ◦ (a ◦ a)) / a . z.CP rp5

Het moge duidelijk zijn dat elke keer als we zo een herschrijfregel toevoegen, er weer een nieuwe bijkomt. Dit gaat zo oneindig lang door. Op deze manier kunnen we dus geen zwakke confluentie bewijzen. We hadden natuurlijk de herschrijfregel CP rp3 (en alle daarna volgende herschrijfregels) de andere kant op kunnen richten, maar ook dan stuiten we op eenzelfde probleem. We kunnen dus geen voor de hand liggend termherschrijfsysteem vinden dat bewijst dat CP rp volledig is. Of zo een systeem ¨uberhaupt bestaat, blijft twijfelachtig.

(39)

Hoofdstuk 5

Propositie-Algebra

Binnen de propositie-algebra evalueren we termen. Het grote verschil met de propositielogica is dat er binnen de propositie-algebra zij-effecten kunnen optreden. Zoals ook in de inleiding vermeld, wil dat zeggen dat als we bijvoorbeeld de term x / y . x hebben, we niet kunnen concluderen dat deze gelijk is aan x. Dit zouden we binnen de propositielogica wel kunnen doen. In de propositie-algebra kan de evaluatie van y een zij-effect hebben op de evaluatie van x.

Definitie 5.1. Zij X een verzameling variabelen. Een equationele spe-cificatie is een paar E = (Σ, E), waarbij Σ een signatuur is en E een verzameling van vergelijkingen s = t, waarbij s, t ∈ T erΣ(X).

Definitie 5.2. Gegeven een termherschrijfsysteem R = (Σ, R). Dan is R== (Σ, R=), met R= = {u = v|u → v ∈ R}, een equationele specificatie.

Binnen de propositie-algebra bestaan er zogeheten valuaties. Een valuatie H kent aan elke gesloten term T of F toe.

We herhalen de volgende definities uit [1].

Definitie 5.3. Zij A een verzameling constantesymbolen, B de soort van Booleans en V al de soort van valuaties. De (twee-soortige) signatuur ΣV al(A)

van een valuatie-algebra is als volgt gedefinieerd: ΣV al(A) = {T : B, F : B, TV al: V al, FV al: V al,

ya: V al → B, a • : V al → V al | a ∈ A}.

T en F zijn dus constantesymbolen van soort B, TV al en FV al zijn

con-stantesymbolen van soort V al, het functiesymbool ya wordt de yield van a

(40)

Definitie 5.4. Een ΣV al(A)-algebra A is een valuatie-algebra als voor

alle a ∈ A aan de volgende axioma’s is voldaan: ya(TV al) = T

ya(FV al) = F

a • TV al = TV al

a • FV al = FV al

Gegeven een valuatie H schrijven we a • H in plaats van a • (H).

De elementen in A modelleren atomaire proposities, dit zijn termen die na evaluatie ofwel T , ofwel F opleveren. Als we a over H hebben ge-evalueerd (notatie a/H), is er een zij-effect ontstaan dat de valuatie H verandert in de valuatie a • H.

Definitie 5.5. Laat A een valuatie-algebra zijn, H een valuatie in A en u, v, w ∈ T erΣ(∅) gesloten termen. Evaluaties en (valuatie) afgeleiden zijn

als volgt recursief gedefinieerd: T /H = T F/H = F a/H = ya(H) (u / v . w)/H = ( u/(v • H) als v/H = T w/(v • H) als v/H = F T • H = H F • H = H (u / v . w) • H = ( u • (v • H) als v/H = T w • (v • H) als v/H = F

We defini¨eren een aantal vari¨eteiten van valuatie-algebra’s, hiermee bedoe-len we een verzameling valuatie-algebra’s die aan een aantal vergelijkingen voldoen.

Definitie 5.6. (i) De vari¨eteit fr van valuatie-algebra’s met free valuaties wordt gedefinieerd door de vergelijkingen uit definitie 5.4.

(ii) De vari¨eteit rp van valuatie-algebra’s met repetition proof valuaties wordt gedefinieerd door de vergelijkingen uit definitie 5.4 en de vol-gende vergelijking voor alle a ∈ A:

(41)

(iii) De vari¨eteit cr van valuatie-algebra’s met contractive valuaties wordt gedefinieerd door de vergelijkingen uit definitie 5.4 en de volgende vergelijkingen voor alle a ∈ A:

ya(x) = ya(a • x)

a • (a • x) = a • x

Definitie 5.7. Laat K een vari¨eteit van valuatie-algebra’s over A zijn. Dan zijn de termen u en v ∈ T erΣ(∅) K-equivalent als u/H = v/H voor alle

A ∈ K en H ∈ A. Een congruentie is een equivalentie die behouden blijft onder toepassing van operatoren. Laat =K de grootste congruentie zijn die

bevat is in de K-equivalentie. Termen u en v zijn K-congruent als u =K v.

5.1

CP Free

In hoofdstuk 2 hebben we een termherschrijfsysteem (Σ, CP f r) gedefini¨eerd. Hier kunnen we een equationele specificatie (Σ, CP f r=) van maken, CP f r= bestaat dan uit de volgende vergelijkingen:

(CP 1=) x / T . y = x (CP 2=) x / F . y = y (CP 3=) T / x . F = x

(CP 4=) x / (y / z . u) . v = (x / y . v) / z . (x / u . v)

Stelling 5.8 (Geldigheid). Als voor termen u en v ∈ T erΣ(∅) geldt CP f r=`

u = v, dan u/H = v/H en u • H = v • H, met H ∈ A, voor alle valuatie-algebra’s A.

Bewijs. Zie de appendix voor een bewijs.

Lemma 5.9. Als u =f r v voor normaalvormen u, v ∈ T erΣ(∅), dan u ≡ v.

Bewijs. Stel u =f r v voor normaalvormen u en v. Vervang dan elke subterm

in u en v die uit een enkel voorkomen van een atoom a bestaat door T /a.F . Dit resulteert dan in u0 en v0. Dan geldt dat u0 =f r v0. In lemma 6.1 van [1]

is al bewezen dat dan geldt u0 ≡ v0 en dus ook u ≡ v.

Stelling 5.10 (Volledigheid). Als u =f r v voor u, v ∈ T erΣ(∅), dan CP f r=`

u = v.

Bewijs. Stel u =f r v, met u, v ∈ T erΣ(∅). We weten dat elke term tot een

unieke normaalvorm reduceert, dus er zijn normaalvormen u0, v0 ∈ T erΣ(∅) zodat CP f r= ` u = u0 en CP f r= ` v = v0. Wegens geldigheid kunnen we nu concluderen dat u0 =f r v0. Lemma 5.9 geeft nu dat u0 ≡ v0. Oftewel,

(42)

5.2

CP Contractive

In hoofdstuk 3 hebben we een termherschrijfsysteem (Σ, CP cr) gedefini¨eerd. Hier kunnen we een equationele specificatie (Σ, CP cr=) van maken, CP cr= bestaat dan uit CP f r=, samen met de volgende vergelijkingen:

(CPcr1) (x / a . y) / a . z = x / a . z (CPcr2) x / a . (y / a . z) = x / a . z

We merken op dat de herschrijfregels CPcr3 en CPcr4 geen nieuwe gelijkhe-den toevoegen en dus al ‘bevat’ zijn in CPcr1 en CPcr2. Immers, er geldt: T / a . x = (T / a . F ) / a . x = a / a . x en x / a . F = x / a . (T / a . F ) = x / a . a.

Stelling 5.11 (Geldigheid). Als voor termen u en v ∈ T erΣ(∅) geldt CP cr=`

u = v, dan u/H = v/H en u • H = v • H, met H ∈ A, voor alle valuatie-algebra’s A in de vari¨eteit cr.

Bewijs. Zie de appendix voor een bewijs.

Lemma 5.12. Als u =cr v voor normaalvormen u, v ∈ T erΣ(∅), dan u ≡ v.

Bewijs. Dit volgt met een soortgelijk bewijs als het bewijs van lemma 5.9. Stelling 5.13 (Volledigheid). Als u =cr v voor u, v ∈ T erΣ(∅), dan CP cr=`

u = v.

Bewijs. Stel u =cr v, met u, v ∈ T erΣ(∅). We weten dat elke term tot een

unieke normaalvorm reduceert, dus er zijn normaalvormen u0, v0 ∈ T erΣ(∅) zodat CP cr= ` u = u0 en CP cr= ` v = v0. Wegens geldigheid kunnen we

nu concluderen dat u0 =cr v0. Lemma 5.12 geeft nu dat u0 ≡ v0. Oftewel,

(43)

Populaire samenvatting

Termen als de volgende vier zijn ons allen welbekend: 2 + 3 + 4

5 + 2 + 2 7 + 2 2 · 4 + 1

Het is voor ons heel duidelijk dat we deze vier regels veel simpeler op zouden kunnen schrijven. In plaats van deze ’ingewikkelde’ termen, zouden we net zo goed ’9’ kunnen schrijven, dit is tevens een stuk leesbaarder. Maar hoe weten we nu wanneer we een term om kunnen schrijven naar een andere term? Een manier om die regels duidelijk te maken, is met behulp van term-herschrijfsystemen. Een termherschrijfsysteem bestaat uit een verzameling regels, herschrijfregels, die vertellen hoe je een term om kan schrijven naar een andere term. Daarnaast bestaat zo een termherschrijfsysteem uit een verzameling functiesymbolen, in ons voorbeeld zouden dit de symbolen ’+’en ’·’ zijn. Stel we hebben nu een termherschrijfsysteem dat ons vertelt dat we bovenstaande regels tot ’9’ kunnen herschrijven, en een verzameling {+, ·} als functiesymbolen. Dan krijgen we dus:

2 + 3 + 4 → 9 5 + 2 + 2 → 9 7 + 2 → 9 2 · 4 + 1 → 9

Dit maakt onze termen inderdaad een stuk eenvoudiger.

Als een termherschrijfsysteem aan bepaalde voorwaarden voldoet, dan noemen we dit termherschrijfsysteem volledig. Volledige termherschrijf-systemen zijn de enige termherschrijf-systemen die voor ons interessant zijn. Volledigheid van een termherschrijfsysteem heeft namelijk als gevolg dat elke term in eindig veel stapjes herschreven kan worden tot een unieke andere term, die niet meer herschreven kan worden.

(44)

In de termherschrijfsystemen die in deze scriptie besproken worden, wordt gebruik gemaakt van twee speciale functiesymbolen. Het eerste functiesym-bool wordt de conditional genoemd en schrijven we als: / . , dit is dus een drie-plaatsig functiesymbool, waarbij op de puntjes termen ingevuld kunnen worden: x / y . z. De conditional lezen we als: if y then x else z. Oftewel, als y geldt dan bekijken we x, anders z. Het tweede functiesymbool wordt and-then genoemd en schrijven we als: ◦ , ook hier geldt weer dat we op de puntjes termen in mogen vullen: x ◦ y. And-then lezen we als: x and then y. Oftewel, we bekijken eerst x en dan y.

We hebben zojuist gezien dat we de herschrijfregels aangeven met ’→’. We zouden die pijltjes ook kunnen vervangen door gelijktekens. Het systeem dat we op die manier krijgen (dus met ’=’ in plaats van ’→’ in de herschrijfregels), noemen we een equationele specificatie. Van een termher-schrijfsysteem kunnen we dus een equationele specificatie maken, en van een equationele specificatie zouden we ook weer een termherschrijfsysteem kun-nen maken (in het algemeen kan dit op veel verschillende manieren).

In de propositie-algebra zijn een aantal van die equationele speci-ficaties gegeven. Door hier volledige termherschrijfsystemen van te maken, wordt het eenvoudiger om bepaalde stellingen over die equationele specifi-caties te bewijzen.

(45)

Appendix

Stelling 5.14 (Geldigheid). Als voor termen u en v ∈ T erΣ(∅) geldt CP f r=`

u = v, dan u/H = v/H en u • H = v • H, met H ∈ A, voor alle valuatie-algebra’s A.

Bewijs. Laat A een valuatie-algebra zijn met H ∈ A, dan: (u / T . v)/H = ( u/(T • H) als T /H = T v/(T • H) als T /H = F = u/(T • H) = u/H (u / F . v)/H = ( u/(F • H) als F/H = T v/(F • H) als F/H = F = v/(F • H) = v/H (T / u . F )/H = (

T /(u • H) als u/H = T F/(u • H) als u/H = F =

(

T als u/H = T F als u/H = F = u/H

(46)

(u / (v / w . r) . s)/H = ( u/((v / w . r) • H) als (v / w . r)/H = T s/((v / w . r) • H) als (v / w . r)/H = F =            u/((v / w . r) • H) als ( v/(w • H) = T als w/H = T r/(w • H) = T als w/H = F s/((v / w . r) • H) als ( v/(w • H) = F als w/H = T r/(w • H) = F als w/H = F =            ( u/(v • (w • H)) als v/(w • H) = T en w/H = T s/(v • (w • H)) als v/(w • H) = F en w/H = T ( u/(r • (w • H)) als r/(w • H) = T en w/H = F s/(r • (w • H)) als r/(w • H) = F en w/H = F = ( (u / v . s)/(w • H) als w/H = T (u / r . s)/(w • H) als w/H = F = ((u / v . s) / w . (u / r . s))/H (u / T . v) • H = ( u • (T • H) als T /H = T v • (T • H) als T /H = F = u • (T • H) = u • H (u / F . v) • H = ( u • (F • H) als F/H = T v • (F • H) als F/H = F = v • (F • H) = v • H (T / u . F ) • H = ( T • (u • H) als u/H = T F • (u • H) als u/H = F = ( u • H als u/H = T u • H als u/H = F = u • H

(47)

(u / (s / w . r) . s) • H = ( u • ((s / w . r) • H) als (s / w . r)/H = T s • ((s / w . r) • H) als (s / w . r)/H = F =            u • ((s / w . r) • H) als ( s/H = T en w/h = T r/H = T en w/h = F s • ((s / w . r) • H) als ( s/H = F en w/h = T r/H = F en w/h = F =            ( u • (s • (w • H)) als s/H = T en w/H = T s • (s • (w • H)) als s/H = F en w/H = T ( u • (r • (w • H)) als r/H = T en w/H = F s • (r • (w • H)) als r/H = F en w/H = F = ( (u / s . s) • (w • H) als w/H = T (u / r . s) • (w • H) als w/H = F = ((u / s . s) / w . (u / r . s)) • H

Stelling 5.15 (Geldigheid). Als voor termen u en v ∈ T erΣ(∅) geldt CP cr=`

u = v, dan u/H = v/H en u • H = v • H, met H ∈ A, voor alle valuatie-algebra’s A in de vari¨eteit cr.

Bewijs. Laat A een valuatie-algebra zijn met H ∈ A, dan: ((u / a . v) / a . w)/H =

(

(u / a . v)/(a • H) als a/H = T w/(a • H) als a/H = F =      (

u/(a • (a • H)) als a/(a • H) = T en a/H = T v/(a • (a • H)) als a/(a • H) = F en a/H = T w/(a • H) als a/H = F

=      (

u/(a • H) als a/H = T en a/H = T v/(a • H) als a/H = F en a/H = T w/(a • H) als a/H = F

= (

u/(a • H) als a/H = T w/(a • H) als a/H = F = (u / a . w)/H

(48)

(u / a . (v / a . w))/H = (

u/(a • H) als a/H = T (v / a . w)/(a • H) als a/H = F =     

u/(a • H) als a/H = T (

v/(a • (a • H)) als a/(a • H) = T en a/H = F w/(a • (a • H)) als a/(a • H) = F en a/H = F =     

u/(a • H) als a/H = T (

v/(a • H) als a/H = T en a/H = F w/(a • H) als a/H = F en a/H = F =

(

u/(a • H) als a/H = T w/(a • H) als a/H = F = (u / a . w)/H ((u / a . v) / a . w) • H = ( (u / a . v) • (a • H) als a/H = T w • (a • H) als a/H = F =      (

u • (a • (a • H)) als a/(a • H) = T en a/H = T v • (a • (a • H)) als a/(a • H) = F en a/H = T w • (a • H) als a/H = F =      (

u • (a • H) als a/H = T en a/H = T v • (a • H) als a/H = F en a/H = T w • (a • H) als a/H = F = ( u • (a • H) als a/H = T w • (a • H) als a/H = F = (u / a . w) • H

(49)

(u / a . (v / a . w)) • H = ( u • (a • H) als a/H = T (v / a . w) • (a • H) als a/H = F =      u • (a • H) als a/H = T (

v • (a • (a • H)) als a/(a • H) = T en a/H = F w • (a • (a • H)) als a/(a • H) = F en a/H = F =      u • (a • H) als a/H = T (

v • (a • H) als a/H = T en a/H = F w • (a • H) als a/H = F en a/H = F =

(

u • (a • H) als a/H = T w • (a • H) als a/H = F = (u / a . w) • H

(50)
(51)

Bibliografie

[1] J.A. Bergstra and A. Ponse. Proposition Algebra. Verschijnt in Transactions on Computational Logic. Auteursversie beschikbaar op http://tocl.acm.org/accepted/405ponse.pdf, July 2010.

[2] C.A.R. Hoare. A couple of novelties in the propositional calculus. Zeitschr. f . Math. Logik und Grundlagen d. Math., 31(2), 173-8, 1985. [3] Terese. Term Rewriting Systems. Cambridge Tracts in Theoretical

(52)

Referenties

GERELATEERDE DOCUMENTEN

--- Deze notulen worden in dezelfde of eerstvolgende A.L.V, vastgesteld en ten blijke daarvan door de voorzitter-- en de secretaris van die vergadering ondertekend--- Artikel13—

De vraag of het kijken naar een programma als ‘Oh Oh Daar Gaan We Weer’ invloed heeft op het alcoholgebruik van jongeren, kan verschillend..

• bijvoorbeeld de waarde dat veel drinken tijdens vakanties niet verkeerd is of dat veel drinken en dronkenschap tijdens vakanties de norm is 1. 12 maximumscore 1 1 =

3p 19 † Bereken dit andere tijdstip in twee decimalen nauwkeurig.. In figuur 9 is de grafiek getekend van V als functie van t op dit

De driehoeken F OB en EOB zijn congruent omdat ze rechthoekig zijn, een gemeen- schappelijke zijde en bij B dezelfde hoek hebben.. Ook de rechthoekige driehoeken CDO en ADO

Net zo als we met de integraal voor een gewone functie van ´e´en variabel de oppervlakte onder een grafiek berekenen, geeft de integraal voor een functie van twee variabelen het

Bij de leefstijlbenadering plaats je mensen niet in hokjes, maar je hebt een zekere abstractie nodig om iets te kunnen zeggen over de woonwensen van de consument.. van der Heide

Voorstel ra