• No results found

Representatie van expressies in het verificatieprogramma VERA 79

N/A
N/A
Protected

Academic year: 2021

Share "Representatie van expressies in het verificatieprogramma VERA 79"

Copied!
21
0
0

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

Hele tekst

(1)

VERA 79

Citation for published version (APA):

Benthem Jutting, van, L. S., & Wieringa, R. M. A. (1979). Representatie van expressies in het

verificatieprogramma VERA 79. (Eindhoven University of Technology : Dept of Mathematics : memorandum; Vol. 7915). Technische Hogeschool Eindhoven.

Document status and date: Gepubliceerd: 01/01/1979

Document Version:

Uitgevers PDF, ook bekend als Version of Record

Please check the document version of this publication:

• A submitted manuscript is the version of the article upon submission and before peer-review. There can be important differences between the submitted version and the official published version of record. People interested in the research are advised to contact the author for the final version of the publication, or visit the DOI to the publisher's website.

• The final author version and the galley proof are versions of the publication after peer review.

• The final published version features the final layout of the paper including the volume, issue and page numbers.

Link to publication

General rights

Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. • Users may download and print one copy of any publication from the public portal for the purpose of private study or research. • You may not further distribute the material or use it for any profit-making activity or commercial gain

• You may freely distribute the URL identifying the publication in the public portal.

If the publication is distributed under the terms of Article 25fa of the Dutch Copyright Act, indicated by the “Taverne” license above, please follow below link for the End User Agreement:

www.tue.nl/taverne Take down policy

If you believe that this document breaches copyright please contact us at: openaccess@tue.nl

providing details and we will investigate your claim.

(2)

Memorandum 1979-15

november 1979

REPRESENTATIE VAN EXPRESSIES in het verificatieprogramma VERA 79

door

L.S. van Benthem Jutting

(3)

1. Inleiding

door

L.S. van Benthem Jutting R. wieringa

In het volgende wordt een beschrijving gegeven van de codering van

Automath-expressies in het programma VgRA 79. De principes van deze codering zijn afkomstig van I. Zandleven. I"undamenteel zijn de ideeen over naamloze representatie van variabelen, ontwikkeld door N.G. de Bruijn [1], en het principe van uitgestelde substitutie, bedacht door I. Zandleven. Wordt bij naamloos weergegeven variabelen een variabele gecodeerd als een verwijzing naar de plaats waar hij wordt gebonden, bij het systeem van uitgestelde substitutie wordt deze verwijzing zelf intact gelaten, maar de context wordt z6 veranderd dat de aangewezen plaats de expressie bevat die voor de

variabele is gesubstitueerd.

Het beschreven systeem is een enigszins gewijzigde vorm van het

oorspronkelijke systeem van Zandleven. Het ligt ten grondslag aan het nieuwe verificatieprogramma dat momenteel door de schrijvers wordt ontwikkeld. De bedoeling van deze beschrijving is niet een ook voor niet-ingewijden

compleet beeld te geven van de codering van expressies en de bewerkingen daarop, maar eerder om voor de programmeurs deze codering en de bewerkingen duidelijk vast te leggen, en de interpretatie van de gecodeerde expressies als AUT-expressies expliciet te maken.

Zoals gezegd berust het systeem op het naamloos representeren van

variabelen, en op het uitbreiden van de verwijsmogelijkheden waardoor ook naar andere expressies dan bindpl.:l.atsen kan worden verwezen. Komt in een expressie een verwijzing voor, dan kan deze verwijzing een bindplaats binnen de expressie zelf aanduiden, maar ook een plaats in de context. Zo'n context kan in de eerste plaats een gewone AUTOMATH-context zijn (dus een

telescoop), maar hij kan ook expressies (en strings van expressies) bevatten die bedoeld zijn voor substitutie .

(4)

We geven nu een informele beschouwing over contexten. Deze kunnen worden opgebouwd uit segmenten. Het eerste segment begint met een gewone AUTOMATH-context, die eventueel nog wordt gevolgd door andere expressies. Elk

volqend segment begint hetzij met een expressiestring, hetzij met een telescoop. Het begin van een nieuw segment wordt in de codering aangegeven. Na deze

eerste expressiestring of telescoop van een segment kunnen weer andere expressies volgen. Verwijzingen vanuit de eerste expressiestring van een segment verwijzen in het voorgaande segment; verwijzingen vanuit de eerste telescoop van een segment komen niet voor: zo'n telescoop bevat, net zoals een contexttelescoop, alleen verwijzingen in zichzelf. Voor de volgende expressies uit een segment geldt, dat het 6f combinaties zijn van een

expressie met een context, zg. complete expressies, 6f gewone expressies die verwijzingen bevatten binnen het segment waarin ze staan. Verwijzingen van buiten in de context verwijzen uitsluitend in het laatste segment.

V~~r een goed begrip van de codering is nog van belang hoe

afkortingsvariabelen worden weergegeven. Variabelen die voorkomen na een constante kunnen worden weggelaten als ze een gemeenschappelijk beginstuk vormen van de context van de lijn die de constante definieert en de lijn waarin de expressie staat. Daze weggelaten variabelen worden gecodeerd als dat gemeenschappelijke contextdeel, dus als een telescoop. Dit geeft

voordeel bij het vaststellen van de compatibiliteit van strings en

telescopen ("fitting"). Dergelijke "afkortingstelescopen" zullen voorkomen aan het begin van een segment, en ze zullen moeten worden gelnterpreteerd als verwijzingen naar het beginstuk van het voorgaande segment. Het idee voor deze codering van afkortingsvariabelen is afkomstig van I. Zandleven.

Een nieuw begrip bij de beschouwing van contexten is de shift. Die speelt een rol bij het vaststellen of een string past in een telescoop. Die

telescoop moet dan gelnterpreteerd worden als een categorieenstring, en wel z6 dat elke interne referentie in die categorieenstring (die oorspronkelijk in het voorstuk van de telescoop verwees) nu geacht wordt te verwijzen naar de overeenkomstige plaats in de string (ook dit is een vorm van uitgestelde substitutie). Externe referenties in de categorieenstring moeten blijven verwijzen naar de oorspronkalijke plaats in de context. Om dit te realiseren wordt de string in de context van de telescoop opgenomen, gevolgd door een

(5)

shift: een natuurlijk getal, in grootte gelijk aan de multipliciteit van de string. Re£erenties die voorbij de shift verwijzen moeten met de betreffende waarde verhoogd worden. Wanneer we van de categorieenstring alleen een achterstuk beschouwen, kunnen we om de referenties kloppend te houden -volstaan met het verlagen van de shift.

Nu enige woorden over interpretatie. De interpretatie van gecodeerde expressies als AUT-expressies is beschreven in 6. hieronder. De

interpretatie komt in het verificatorgedeelte van het programma voor bij het schrijven van gecodeerde expressies. In de hieronder gegeven versie zijn de variabelen naamvrij; de haakjes, komma's en andere scheiders die in de AUT-expressies voorkomen zijn

dik

geschreven.

De gecodeerde expressies zijn in het begin van deze beschrijving weergegeven volgens het systeem van De Bruijn [2J. Verderop, vanaf 4., worden de

"hekjes" weggelaten. V~~r een beter begrip zijn in de beschrijving

opmerkingen toegevoegd en commentaar in de vorm van namen bij de lijsten "shapes" en expressies en omschrijvingen tussen aanhalingstekens bij de diverse functies, die de intultieve betekenis weergeven. Wat deze functies betreft: ze worden geacht op inputwaarde "undefined" als output "undefined" te geven.

Referenties

[lJ N.G. de Bruijn, Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem,

Indag. Math. 34, 5, 1972.

[2J N.G. de Bruijn, Notation for concatenation,

Memorandum 1977-09, Eindhoven University of Technology, Dept. of Mathematics, Eindhoven.

(6)

2. Al12habet Separatoren Shapes names waarin [,

,

] ab abstractie ap applicatie kn konstante (sinqle) rf reference id identifier st string sk string konstante cs complete string t l telescoop tk telescoop konstante ct complete telescoop sa single abstractor rna multiple abstractor __ ~~ ___ ~~~~lete abstractor dc delta context ec extended context sc shift context aftelbare verzameling y category 0 domain S value IT prepart A last element T tail

en met deelverzamelingen defns en catns

{O,1,2, ... }

natO\{O}

(7)

3. Expressies

sexp := abst u appl u knst u rfce u idfr single expression mexp := strg u skst u tlsc u tkst multiple expression tail := emty u tlsc u strg tail

ctxt := emty U tlsc u dcnt u ecnt u scnt context

cexp := camp u cstr u ctel u cabs complete expression

abst :=

r

ab I [

I

sabs

I I

sexE

I

]

abstraction appl := I ap I [

I

sex.l2l

I

sexp I ] application knst := I kn I [

I

names

I

I

liillOl ] I constant rfce := Irfl [

I

nata

I

] I reference idfr := lidl [

I

names I ]

I

identifier

strg :=

r

st I [ I tail

I

I stex

I

] string

stex := sexp u skst string extension skst := I sk

I

[

I

names I

I

I

tail]

]

l

string constant cstr := Icsl [ L£ili'O:I

I

I

cornEl

]

I complete string

cstp := cstr u tail complete string prepart tlsc := I tll [

I

Etel

I

12

abs

I

] telescope

ptel := emty u tlsc prepart telescope gabs := sabs u mabs general abstractor tkst := I tk I [ I names I

I

I

tail I ] telescope constant ctel := I ct

I

[

I

ctlp

I

I

I cabs

I J

I

complete telescope ctlp := ctel u ptel complete telescope

prepart

emty :=

leY]

empty

sabs := I sa I [ I sexE

I

]

l

single abstractor mabs := Ima I [ Imcat I ] multiple abstractor mcat := tlsc u tkst multiple category cabs := leal [

I

ctxt

I

I

I

gabs

I

] complete abstractor

(8)

comp :=

I

cp I [

I

ctxt

I

I

stex

I

] complete

dcnt :=

I

dc

I

[

L£fuOI

I

dexpl ] deltacontext dexp := tlsc u strg delta expression

ecnt :=

I

ec

I

[

I

ctxt

I

I~

] extended context eexp := sexp u mexp u sabs u eomp extending expression sent :=

I

sc

I

[ letxtl

I

[@

]

I

shift context

Vanaf hier zien we af van de "hekjesnotatie" •

Zij a een expressie dan zullen we de onderdelen van a aangeven met sh (a)

1f1 (a) 1f2 (a)

het "eerste symbool" of de "shape" van a de "eerste subexpressie" van a

de "tweede subexpressie" van a

Als bijvoorbeeld a

=

ab[blc] dan is

(9)

4. Functies

1) ~ : defns + sexp U mexp primitief

"De definitie van een gedefinieerde constante".

Opm.: Aan ~ worden wel eisen gesteld, bijv. dat geen "oneindige lI-rijen" kunnen optreden, dat "enkelvoudige namen" ook "enkelvoudige

definities" hebben, etc.

2)

r :

catns + sexp primitief

"De categorie van een constante (als die gegeven is)". Opm.: oak aan

r

worden zekere correctheidseisen gesteld.

3) mult: sexp u mexp U emty U gabs u eexp u names + nato "De multipliciteit van een ex.pressie".

mult(a) :=

if a € emty then 0 else

.!!.

a € sexp then 1

else if a € skst U tkst U gabs ~ mult (7Tl (a) )

!!!!

if a € comp u cabs ~ mult(7T2(a»

else if a € strg u cstr u tlsc u ctel then mult(7Tl(a» + mult(7T2 (a»

~.!!. a € defns ~ mult(4(a» else if a € names\defns then 1

4) refd : ctxt + nato

"De maximale verwijzingsdiepte in een context". refd (k) :=

ifk E emty u tlsc ~ mult(k) else i f k E dcnt then mult (7T2 (k) )

-else if k E ecnt ~ refd (7Tl (k) )

-else if k € scnt ~ refd(7Tl (k»

-5) absd : ctxt + nato

"De abstractiediepte van een context". absd(k) :=

if k E emty u tlsc ~mult(k)

+ mult (7T2 (k) ) - 7T2 (k)

~ if k E dcnt u scnt then absd(nl(k»

~

.!!.

7T2 (k) E sabs u meat ~ absd (7Tl (k» + mult (7T2 (k»

(10)

6) delt : etxt x tail ~ etxt

"Uitbreiding van een context bij cS-reduetie". delt(k,a) :=

if k E sent

~ i f a E emty ~ k ~ se[de[k laJ 10J

~.!!. a E emty then a ~ dc[klaJ

7) etgy : sexp ~ sexp

"Maakt bij een single expressie a de expressie y(a)". etgy(a) :'" kn[yl stCeylaJJ

8) reindex : sent x nat

l ~ sent

"Verandert de shift van een shifteontext". reindex(k,n) := se[nl (k) In2 (k) -nJ

(11)

5. p-reductie

Opm.: p-reductie geeft de interpretatie van verwijzingen in een context. Representeert de verwijzing een variabele dan geeft pr de referentie-diepte in de (nieuwe) context; als de verwijzing een expressie

representeert geeft pr deze expressie met bijbehorende (nieuwe) context.

pr: ctxt x int ~ (ctet x (sexp u natO» u {undefined} pr(k,r) :=

if r~refd(k) then undefined

~ ~ sh(k) of

begin

ey undefined;

tl if r<O then undefined ~ (k,r); sc pr (IT 1 (k) , r+lT2 (k) ) ; dc

!!

r<O ~ pr(lTl(k) ,r) else ~ sh(lT2(k» of begin st : !fmult(lT2(lT2(k»)~r ~ pr(dc[lTl(k) IlTl(lT2(k»],r-mult(lT2(lT2(k»» else ~ sh(lT2(lT2(k») of begin ab ap: kn : id : (lT1 (k) ,lT2 (lT2 (k) » ; rf pr(lTl (k) ,7Tl(n2(lT2(k»» I sk pr(ec[delt(lTl(k) ,lT2(lT2(lT2(k»» ItdlTl(lT2(1f2(k»»],r) ~ cases sh(lT2(lT2(k») I tl : pr(lTl(k),r+refd(lT1(k»-refd(k» ~ cases sh(lT2(k»;

ee i f r<O then undefined .• - -.;;;;;;,;.;;,;;=,;;,;;;,;;.

!!!!

if mult(1f2(k»sr ~ pr(lTl(k),r-mult(lT2(k»)

.!l:!!.

~ sh ('IT 2 (k» of begin ab ap: kn: id: ~lT1(k),lT2(k»; rf pr (lT1 (k) ,lTl (lT1 (k») I sa t l : tk : (k,r).,.

(12)

st

!!

mult(~2(~2(k»)sr

then pr(ec[~l(k) 1~1(~2(k»J,r-mult(~2(~2(k»»

~ ~ sh(~2(~2(k») of begin ab ap: kn : id (~l(k) ,~2(~2(k»); rf pr (~l (k) ,~1 (~2 (~2 (k»» ; sk pr (ec[delt (d (k) ,~2 (~2 (~2 (k»»

I

t:.

(~l (~2 (~2 (k»» ] ,r) ~ cases sh(~2(~2(k»); sk pr (ec[delt (nl (k) ,n2 (~2 (k»)

I

t:.

(~1 (~2 (k» ] ,r) ; cp ~ sh(rr2(n2(k») of begin ab ap: kn: i d : (nl(rr2(k»,rr2(n2(k»); r f pr (nl (n2 (k» ,nl (n2 (~2 (k»» ; sk pr (ec[del t (~l (n2 (k) ) , ~2 (rr2 (n2 (k» ) )

It:.

(~l (rr2 (n 2 (k) ) ) ) J, r) end cases sh(n2(~2(k») end cases sh(~2(k» end cases sh(k)

(13)

6. Interpretatie

opm.: De functie int geeft de interpretatie van een gecodeerde expressie als AUT-expressie. Hij geeft als parameters een context, een expressie en een natuurlijk getal. Dit getal geeft de diepte van de AUT-context waarop de expressie moet worden geInterpreteerd.

De functie intabbrevar geeft de interpretatie van een string van afkortingsvariabelen (dus in code ring van een telescoop). Hij heeft als parameters een context, de lengte van de string afkortings-variabelen en de diepte van de AUT-context.

intabbrevar : ctxt x nat

1 x nato ~ AUT-expressie U {undefined} intabbrevar(k,n,t) :=

if kEtlsc

then if t<n then undefined

~ i-l,i-2, ••• ,i-n else if kEdcnt

----

---then if ~2(k)Etlsc ~ intabbrevar(~l(k) ,n,~)

else!f mult(~2(k))=n ~ int(~l (k) ,~2(k))

else!f mult(~1(~2(k)))~n ~ intabbrevar(dc[~l (k) 1~1(~2(k))],n,~) else if refd(k)<n ~ undefined

~ intabbrevar(k,n-l,i),int(k,rf[refd(k)-n],i) else if kEecnt ~ intabbrevar(~l(k) ,n,~)

(14)

int ctxt x (sexp u mexp u gabs u emty u cexp) x nato -~

+ AUT-expressle U {undefined}

int(k,a,2) :=

~ shea) of

begin

ab [int(k,71'l(a) ,t)lint(eo[kr71'l (a) ];71'2(a) ,H1);

ap <int(k,71'1(a),2)

>

int(k,71'2(a),2); kn sk rf id tk : if'TT2(a)€tlsc ~ 'TTl (a)Cintabbrevar(k,mult('TT2(a) ,2)'

else 'TTl (a) ,int (k, 71'2 (a) ,2»; if pr

2(k,'TT1(a» (sexp then int(pr(k,71'l (a)) ,t) else pr

2(k,'TTl (a)+t-absd(pr1(k,'TTl (a)) ;

'ld"

'TTl (a) ;

st cs i f 71'1 (a) €tlsc ~ intabbrevar (k,mult('TTl (a)) , 2) ~ int(k,'TTl (a) ,2) , in t (k , 'TT2 (a) , 2) ; t l ct ey ma sa cp ca if kE:scnt

~ int(k,'TT1(a) ,2),int(reindex(k,mult('TT1(a») ,'TT2(a) ,t)

~ int(k,'TTl(a) ,t)

rint(~ 'TTl (a) emty then k ~ ec[kl71'l (a)],71'2(a),

int (k, 'TTl (a) ,2) ; int ('TTl (a) , 'TT2 (a) , R,)

2+mult(71'1 (a»)];

(15)

7. Reductie

Red: ctxt x (sexpumexpunat

O) x pred (ctxtx(sexpumexpunatO» + (ctxtx(sexpumexpunat

O» u {failure} Red(k,a,P) := if P(k,a) then (k,a)

else if aEabst then Red(nr(k,a) ,P) else if a~appl then Red(6r(k,a) ,P)

else if aEknstuskstutkst then Red(or(k,a) ,P) else if aErfce then Red(pr(k,rrl(a» ,P) else failure

6r ctxt x appl + (ctxtxsexp) u {undefined}

P := YXEctXt YYESeXPUmexpunat

o [y~abstJ 6r(k,a) := i f Red(k,rr2(a) ,P) = (k1,al)

~!! k

=

kl then (ec[klrr1(a) J,rr2(al» ~ (ec[kllcp[klrrl(a) JJ,rr2(al» else undefined

nr ctxt x abst + (ctxtxsexp) u {undefined}

P := YXEctXt YYEsexpumexpunatol:YEapPlJ

Q := YXEctXt YYESeXPUmexpunat

o [x = ecl.klnl (a)J 1\ Y OJ nr(k,a) := ~ Red(ec[klnl(a)J,n2(a) ,P) = (k1,al)

~ if Red(kl,nl(a1) ,Q) ~ failure then (ec[kllkn[syntleyJJ,n2(al» else undefined

else undefined

or ctxt x (knstuskstutkst) + (ctxtX(seApumexp» u {undefined}

(16)

8. Typering

Oprn.: De functie type geeft het canoniek type van een expressie a,

vartype geeft het type van een verwijzing waarvan (door p-reductie) al is vastgesteld dat hij een variabele representeert.

vartype : ctxt x nato ~ (ctxtxsexp) u {undefined}

vartype (k,r) :=

if rnult(~2(k»~r then vartype (~1(k),r-rnult(n2(k»)

~ ~ sh(rr2(k» of

begin

sa (~1(k),rr1(~2(k»)i

rna vartype (edrr1 (k) 1~1 (rr2(k» ],r);

tk vartype (ec[delt(rrl(k),~2(n2(k»)11I('lT1(rr2(k»)],r)i tl

!f

rnult(n2(n2(k»)~r

then vartype (ecCnl(k) Inl(n2(k»],r-rnult(n2(rr2(k») else ~ sh(rr2(rr2(k») of begin sa : if rr1(n2(k»Eernty then (nl (k) ,nl (n2 (rr2 (k) » ) else (ec[rrl (k) I nl (rr2 (k) ) J,rr 1 (rr2 (rr2 (k» ) ) i rna

!f

rrl(rr2(k»Eemty

then vartype (ec[rr1(k) Irr1 (n2(rr2(k») J,r)

else vartype (ec[ec[rr1 (k) I nl (n2 (k) ) J I nl (n2 (rr2 (k) » J ,r) end cases sh(rr2(~2(k»)

(17)

type ctxt x sexp ~ (ctxtxsexp) u {undefined}

type (k,a) := ~ sh(a) of begin

ab (k,ab[rrl(a) !ctgy(rr2(a»]); ap (k,ap[rrl (a) ! ctgy (rr2 (a) ) J) I

kn if rrl (a) Ecatns ~ (delt(k,rr2(a»,r(rrl(a»)

.!!!!. .!!

rr 1 (a) Edefns ~ type (or (k ,a) )

~.!! rrl(a) ~ y then type(type(rr2(rr2(a»») else undefined

-rf ~ pr 2(k,rrl(a»Esexp ~ type(pr(k,rr1(a») else vartype(pr(k,rrl(a»); id : undefined end cases sh(a)

(18)

9. Het passen van een string in een telescoop

Opm.: Pass en wordt nagegaan m.b.v. de boolean procedure in (zie onder). Er zijn twee gevallen waarin nagegaan wordt of een string in een telescoop past:

1. Bij de contrale of op contexttelescoop t c(a1, .•• ,an) correct is.

In dit geval bestaat de string uit s :~ (a1, ..• ,an) en de

telescoop uit de context t. Correctheid geldt als in (t,s,sc[dc[t!sJ!mult(s)J,t,kr,r) en rEemty.

2. Bij de contrale of op contexttelescoop tl (al, ••• ,an): [blJ •.• [bmJ

correct is. In dit geval bestaat de string uit s := (al, ••• ,an) en

de telescoop uit t := [blJ .•• [bmJ. (s en t kunnen ook

stringkonstante resp. telescoopconstante zijn). Correctheid geldt als in (tl,s,sc[ec[tl!sJ!mult(s) J,t,kr,r) en r£emty.

Nog een opmerking over de context van t in de procedure in:

In geval 1. nemen we dc[t!sJ omdat in s abbrevars kunnen voorkomen, die we goed moeten interpreteren; bovendien zijn in t geen externe verwijzingen.

In geval 2. nemen we ec[tl!sJ omdat in t verwijzingen naar tl kunnen voorkomen; bovendien komen in s geen abbrevars voor dus hebben we geen moeite met interpretatie.

boolean procedure in (ks,s,kt,t,kr,r); value ks,s,kt,t;

%s€tailustexucstr %kt€scnt

%t£ptelugabsutkstuctel begin boolean success;

if mult(s)~mult(t) then

~ sh(s) of

begin

(19)

st if success := in (ks,rr1(s) ,kt,t,kr,r) then t l case sh(r) of begin ey kr := st i f kr sk i f kr ks; = ks ks r := rr2 (s) ; then r "= st[rlrr2(s)] else r := cs[r I cp[ks I rr2 (s) ]]; then r := st[st[eylr]lrr2(s)] else r :'" cs[st[eylr]lcp[kslrr2(s)]]; cs r:= cs[rlcp[kslrr2(s)]]; tl c t : sa : rna : success := in(ks,rr2(s),kr,r,kr,r);

else if kr = ks then r := st[st[eylrJlrr2(s)]

else r := cs[st[eylr]lcp[kslrr2(s)]J

end cases sh(r);

kr := r :~ ey; success :~ s = t; % geval 1. in opm. vooraan

sk (ks,s):= 8r(ks,s); success := in (ks,s,kt,t,kr,r); cs if success :~ in (ks,rr1(s) ,kt,t,kr,r) then ~ sh(r) of begin ey kr:" rr 1 (rr 2 (s) ); r :.. rr 2 (rr 2 (s) ) ; st if kr

=

rr1(rr2(s» then r := st[rTrr2(rr2(s»] else r :- cs[r 111'2 (s) ]; sk i f kr

=

11'1 (11'2 (s» then r :'" st[st[eylr]lrr2(11'2(s»] else r := cs[st[eylr]111'2(s)]; sc r := cs[rlrr2(s)] tl ct : sa : rna : success := in (rr1 (rr2 (s» ,11'2 (rr2 (s» ,kr,r ,kr ,r) ;

else if kr - 11'1(11'2(8» then r :- st[st[eylrJlrr2(11'2(s»] else r :- cs[st[eylr]lrr2(s)] end cases sh(r) I

(20)

else % s is single, mult(t) ~ 1 case sh(t) of begin ey kr:= ks; r := s; success := ~; tl success:= in (ks,s,kt,TI2(t) ,kr,r); tk (kt,t):"" or(kt,t); success := in (ks,s,kt,t,kr,r); ct success sa success rna success end cases sh (t) := in (ks,s,TIl(TI2(t» ,TI2(TI2(t» ,kr,r); := type (ks,s) = (kt,TIl(t»; kr := r := ey;

D

:= in (ks,s,kt,7Tl (t) ,kr ,r)

~ cases shes)

else: % mult(s) < mult(t)

~ sh(t) of begin ey ; % impossible tl if success := in (ks,s,kt,rrl(t) ,kr,r) then ~ sh(r) of begin ey kr:= reindex (kt ,mult (rrl (t) »; r := rr2 (t) ; tl if TIl (kr) = rrl(kt) then r := tl[r!TI2(t)]

else r :- ct[r!ca[reindex(kt,mult(rrl (t») !TI2 (t) ]];

ct r:= ct[r!ca[reindex(kt,mult(TI1(t»)/rr2(t)]];

sa rna:

i f TIl (kr) rrl(kt) ~ r := tl[tl[ey!r]!rr2(tl]

else r := ct[tl[ey!r]!ca[reindex(kt,mult(TI1(t»)!TI2(t)J];

else: success := in (kr,r,reindex(kt,mult(TI1(t») ,TI2(t) ,kr,r)

end cases sh(r);

tk (kt,t):= or(kt,t)/ success := in (ks,s,kt,t,kr,r);

ct if success := in (ks,s,kt,TIl(t) ,kr,r) then

(21)

sa - 1~ -begin ey kr:= 1Tl(1T2(t»i r := 1T2(1T2(t» t l i f 1Tl (kr) = 7Tl (1Tl (1T2 (t) » then r := tl[r 11T2 (1T2 (t» ] else r := ct[rl1T2(t)]i ct r:= ct[rl1T2(t)]i sa rna: i f 1T1Ckr) = 1Tl(1Tl(1T2(t») then r := tl[tl[eylr]I1T2(1T2(t»] else r := ct[tl[eylr]I1T2(t)]i else : success := in (kr,r ,1Tl (1T2 (t» ,1T2 (1T2 (t) ) ,kr ,r)

end cases sh(r)i

kr := kti r := t i success := true % mult (s)

o

ma success:= in (ks,s,kt,1Tl(t) ,kr,r) end cases sh(t)

in := succeSSi end b proc ini

Referenties

GERELATEERDE DOCUMENTEN

Het gebruik van rituelen bleek een goe- de keuze omdat mevrouw B daarna in het contact met de geestelijk verzorger minder last van haar trauma liet blijken.. De uitno- diging aan

(Als dat de bedoe- ling geweest zou zijn, is het opmerkelijk nalatig dat bij- voorbeeld het al dan niet schijnen van de zon onver- meld blijft.) De wind was voor de hoorder van die

I Je maakt een variabele door een naam te introduceren en er meteen een waarde aan toe te kennen; het type van die waarde is ook het type van de variabele!. I dus

4.1 Geef praktische reguliere expressies voor de volgende patronen. Con- troleer of je reguliere expressies ook werken en doen wat je denkt dat ze doen met behulp van

Indien geen interne verrekening wordt toegepast en daartoe ook niet de intentie bestaat, hoeft u voor de desbetreffende ondersteunende afdeling de resterende vragen niet meer in

Naast het bestaande pedagogisch spreekuur van Kind en Gezin en het huidige aanbod van de opvoedingswinkel zouden medewerkers van het spel- en ontmoetingsinitiatief (en/of

Soms wil een partner of familielid van de nierpatiënt een nier doneren, maar kan dat niet omdat de test heeft uitgewezen dat het verschil in bloedgroep tussen donor en ontvanger

Die adviesraad is in mijn oQen zeker niet, wat men wel eens hier en daar een bestuur van een rekencentrum noemt. Wanneer men uit orqanisatie-overweqinqen toch een bestuur zou wensen