1:
2:
3:
4: \magnification=\magstep1
5: \input epsf
6:
7:
8: \input amstex
9: \documentstyle{amsppt}
10:
11: % Comment out EITHER the next 3 lines (PicTeX) ...
12:
13: %\input pictex
14: %\setcoordinatesystem units <1in,1in>
15: %\linethickness 0.7pt
16:
17: % ... OR the next 4 lines (Eplain).
18:
19: %\let\noarrow=0 % comment out if using "\commdiag"
20: \input eplain
21: \input ruled
22: \let\ref=\eplainref %see Eplain document (v2.6) page 4.
23:
24: \TagsOnRight
25: \parskip 1ex
26:
27: \hsize=6.5truein
28: \vsize=9truein
29:
30: \loadbold
31: \loadeurm
32:
33: \font\bbbf=cmbx12 scaled\magstep1
34: \font\bbf=cmbx12
35: \font\bbigbf=cmbx12 scaled\magstep1
36: \font\bi=cmbxti10 % bold italic
37: \font\bigbf=cmbx12
38: \font\bigbi=cmbxti10 scaled\magstep1 %big bold italic
39: \font\bigit=cmti12
40: \font\bigrm=cmr12
41: \font\sc=cmcsc10
42: \font\smallrm=cmr9
43: \font\smallit=cmti9
44: \font\smallbf=cmbx9
45: \font\smallbi=cmbxti10 at 8pt
46: \font\sf=cmss10
47: \font\script=eurm10
48: \font\bigsf=cmss12
49: \font\bigtt=cmtt12
50: \font\smalltt=cmtt8
51: \font\ssf=cmss8
52: \font\ssmallrm=cmr8
53: \font\smallsl=cmsl8
54: \document
55:
56: \define\de{\define}
57: \de\AAA{{\tx{${\scr A}$}}}
58: \de\AAa{{\tx{${\Bbb A}$}}}
59: \de\ABBB{{\tx{$A^\BBB$}}}
60: \de\ABN{{\tx{$A^{B,N}$}}}
61: \de\AN{{\tx{$A^N$}}}
62: \de\Ab{{\bf A}}
63: \de\Abi{{\bi A}}
64: \de\Abar{{\tx{$\bar A$}}}
65: \de\Abars{\tx{$\Abar_s$}}
66: \de\Abaru{\tx{$\Abar^u$}}
67: \de\AinKK{\tx{$A \in \KK$}}
68: \de\AinAlgSig{\tx{$A \in \AlgSig$}}
69: \de\AinNStdAlgSig{\tx{$A \in \NStdAlgSig$}}
70: \de\AinStdAlgSig{\tx{$A \in \StdAlgSig$}}
71: \de\Akvec{\tx{$A[\kvec]$}}
72: \de\Akxvec{\tx{$A[\kxvec]$}}
73: \de\Aklxvec{\tx{$A[\kvec,\lxvec]$}}
74: \de\Alg{\tx{\bi Alg}}
75: \de\AlgSig{\Alg\,(\Sig)}
76: \de\Alvec{\tx{$A[\lvec\,]$}}
77: \de\Alxvec{\tx{$A[\lxvec]$}}
78: \de\Aps{\tx{\sf Ap}}
79: \de\As{\tx{$A_s$}}
80: \de\Asbar{\tx{$\Abar_s$}}
81: \de\Asx{\tx{$A_s^*$}}
82: \de\AssLang{\tx{\bi Ass}\Lang}
83: \de\Assumption{\pr{Assumption}\sl}
84: \de\Assumptionn#1{\pr{Assumption #1}\sl}
85: \de\Assumptions{\pr{Assumptions}\sl}
86: \de\Asuu{\tx{$A^\uu_s$}}
87: \de\At{\tx{\bi At}}
88: \de\AtSig{\At(\Sig)}
89: \de\AtSt{\tx{\bi AtSt}}
90: \de\AtStSig{\tx{$\AtSt(\Sig)$}}
91: \de\Atil{{\tx{$\til A$}}}
92: \de\Au{\tx{$A^u$}}
93: \de\Aul{{\tx{$\ul A$}}}
94: \de\Auu{\tx{$A^\uu$}}
95: \de\AuuN{\tx{$A^{\uu,N}$}}
96: \de\Av{\tx{$A^v$}}
97: \de\Aw{\tx{$A^w$}}
98: \de\Ax{{\tx{$A^*$}}}
99: \de\Axs{\tx{$A^*_s$}}
100: \de\Axx{(\Ax)\str}
101: \de\Bbi{\tx{\bi B}}
102: \de\BB{{\tx{${\Bbb B}$}}}
103: \de\BBB{{\tx{${\scr B}$}}}
104: \de\BBbar{\tx{$\ol \BB$}}
105: \de\BBuu{\tx{${\Bbb B}^\uu$}}
106: \de\Bb{\tx{\bf B}}
107: \de\Bool{\tx{\bi Bool}}
108: \de\BoolSig{\tx{$\Bool(\Sig)$}}
109: \de\Bs{\tx{\sf B}}
110: \de\Bss{{\tx{\ssf B}}}
111: \de\Btil{\tx{$\til B$}}
112: \de\Bul{\tx{$\ul B$}}
113: \de\CC{\tx{${\Bbb C}$}}
114: \de\CCn{\tx{$\CC^n$}}
115: \de\CCC{\tx{$\scr C$}}
116: \de\CCCL{\tx{${\CCC}^<$}}
117: \de\CR{\tx{\bi CR}}
118: \de\CRSig{\tx{$\CR(\Sig)$}}
119: \de\CT{{\tx{\bi CT}}}
120: \de\CTSig{\CT(\Sig)}
121: \de\CTsmall{{\tx{\smallbi CT}}}
122: \de\Cbar{\tx{$\ol C$}}
123: \de\Cf{{\it Cf\.}}
124: \de\Chead#1{\bn\cbb{#1}\bn}
125: \de\Comp{\tx{\bi Comp}}
126: \de\CompA{\tx{$\Comp^A$}}
127: \de\CompLengthA{\tx{$\Comp\Length^A$}}
128: \de\CompSeqA#1{\tx{$\Comp\Seq^A(#1)$}}
129: \de\Compu{\tx{\bi Compu}}
130: \de\Con{\tx{\bi Con}}
131: \de\Cond{\tx{\bi Cond}}
132: \de\CondSig{\tx{$\Cond(\Sig)$}}
133: \de\Constrn#1{\pr{Construction \ #1}\rm}
134: \de\Cont{\tx{\bi Cont}}
135: \de\ContA{\tx{$\Cont(A)$}}
136: \de\Conventionn#1{\pr{Convention \ #1}\sl}
137: \de\Cor{\pr{Corollary}\sl}
138: \de\Corn#1{\prn{Corollary #1}\sl}
139: \de\Cors{\pr{Corollaries}\sl}
140: \de\Cs{\tx{\sf C}}
141: \de\Cul{\tx{$\ul C$}}
142: \de\DD{{\tx{${\Bbb D}$}}}
143: \de\DDD{{\tx{$\scr D$}}}
144: \de\Dbar{\tx{$\ol{D}$}}
145: \de\Dbars{\tx{$\ol{D}_s$}}
146: \de\Def{\pr{Definition}\rm}
147: \de\Defn#1{\prn{Definition #1}\rm}
148: \de\Defs{\pr{Definitions}\rm}
149: \de\Defsn#1{\prn{Definitions #1}\rm}
150: \de\Del{\tx{$\Delta$}}
151: \de\Discussion{\pr{Discussion}\rm}
152: \de\Discussionn#1{\pr{Discussion #1}\rm}
153: \de\Ds{\tx{\sf D}}
154: \de\Dss{{\tx{\ssf D}}}
155: \de\Ebar{\tx{$\ol E$}}
156: \de\Eg{{\it E.g.}}
157: \de\ElemInd{\tx{\sf ElemInd}}
158: \de\ElemIndSig{\tx{$\ElemInd(\Sig)$}}
159: \de\EqSort{\tx{\bi EqSort\/}}
160: \de\EqSortSig{\EqSort(\Sig)}
161: \de\Eqb{\tx{\bi Eq}}
162: \de\Eqs{\tx{\sf Eq}}
163: \de\Equiv{\tx{$\pmb{Equiv}$}}
164: \de\Etil{\tx{$\til{E}$}}
165: \de\Example{\pr{Example}}
166: \de\Examplen#1{\prn{Example {#1}}}
167: \de\Examples{\pr{Examples}}
168: \de\Examplesn#1{\prn{Examples {#1}}}
169: \de\Exercise{\pr{Exercise}}
170: \de\Exercisen#1{\prn{Exercise {#1}}}
171: \de\Exercises{\pr{Exercises}}
172: \de\Exercisesn#1{\prn{Exercises {#1}}}
173: \de\F{\tx{\bi F}}
174: \de\FA{\tx{$F^A$}}
175: \de\FAuu{\tx{$F^{A,\uu}$}}
176: \de\FFF{\tx{$\scr F$}}
177: \de\FFt{\tx{\tt F}}
178: \de\FinFuncSig{\tx{$F \in \FuncSig$}}
179: \de\First{\tx{\bi First}}
180: \de\For{\tx{\bi For}}
181: \de\ForA{\tx{$\For(A)$}}
182: \de\ForN{\tx{$\For^N$}}
183: \de\ForNA{\tx{$\ForN(A)$}}
184: \de\ForNSig{\tx{$\ForN(\Sig)$}}
185: \de\ForSig{\tx{$\For(\Sig)$}}
186: \de\ForSigN{\tx{$\For(\SigN)$}}
187: \de\ForSigx{\tx{$\For(\Sigx)$}}
188: \de\Form{\tx{\bi Form}}
189: \de\FormSig{\tx{$\Form(\Sig)$}}
190: \de\Foro{\tx{$\For_0$}}
191: \de\Forolam{\tx{$\For_0^{\lam}$}}
192: \de\Forx{\tx{$\For^\starb$}}
193: \de\ForxA{\tx{$\Forx(A)$}}
194: \de\ForxSig{\tx{$\Forx(\Sig)$}}
195: \de\Fs{{\tx{\smallbi F}}}
196: \de\Ftil{\tx{$\til{F}$}}
197: \de\Func{\tx{\bi Func}}
198: \de\FuncSig{\Func\,(\Sig)}
199: \de\FuncSigp{\tx{$\Func(\Sigp)$}}
200: \de\FuncSigus{\tx{$\FuncSig_\utos$}}
201: \de\GG{\tx{${\Bbb G}$}}
202: \de\GGG{\tx{$\scr G$}}
203: \de\Gtt{\tx{\tt G}}
204: \de\Gam{\tx{$\Gamma$}}
205: \de\Gbar{\tx{$\ol G$}}
206: \de\Gs{{\tx{\sf G}}}
207: \de\Halt{\tx{\bi Halt}}
208: \de\HaltTests{\tx{\sf HaltTest}}
209: \de\HaltA#1{\tx{$\Halt^A\,(#1)$}}
210: \de\Hbar{\tx{$\bar H$}}
211: \de\Hh{\tx{\bi H}}
212: \de\Hs{{\tx{\sf H}}}
213: \de\Hss{{\tx{\ssf H}}}
214: \de\Htt{\tx{\tt H}}
215: \de\Ib{\tx{{\bf I}}}
216: \de\II{{\tx{${\Bbb I}$}}}
217: \de\III{\tx{${\scr I}$}}
218: \de\IIIN{{\tx{$\III^N$}}}
219: \de\IL{\tx{\bi IL}}
220: \de\IO{\tx{\bi IO}}
221: \de\Ibar{{\tx{$\bar I$}}}
222: \de\Ie{{\it I.e.}}
223: \de\Ind{\tx{\sf Ind}}
224: \de\IndSig{\tx{$\Ind(\Sig)$}}
225: \de\Indi{\tx{$\Ind_i$}}
226: \de\IndiSig{\Indi(\Sig)}
227: \de\Init{\tx{\bi Init}}
228: \de\Is{\tx{\sf I}}
229: \de\Iss{{\tx{\ssf I}}}
230: \de\JJJ{\tx{${\scr J}$}}
231: \de\Jbar{{\tx{$\bar J$}}}
232: \de\KK{{\tx{${\Bbb K}$}}}
233: \de\KKbar{\tx{$\ol{\KK}$}}
234: \de\KKN{\tx{${\Bbb K}^N$}}
235: \de\KKuu{\tx{${\Bbb K}^\uu$}}
236: \de\KKx{\tx{${\Bbb K}^*$}}
237: \de\LL{\tx{${\Bbb L}$}}
238: \de\LLL{\tx{${\scr L}$}}
239: \de\Lam{\tx{$\Lambda$}}
240: \de\Lang{\tx{\bi Lang}}
241: \de\LangSig{\tx{$\Lang(\Sig)$}}
242: \de\LangSigx{\tx{$\Lang(\Sigx)$}}
243: \de\Langx{\tx{$\Lang^*$}}
244: \de\LangxSig{\tx{$\Langx(\Sig)$}}
245: \de\Lemma{\pr{Lemma}\sl}
246: \de\Lemman#1{\prn{Lemma #1}\sl}
247: \de\Lemmas{\pr{Lemmas}\sl}
248: \de\Lemmasn#1{\prn{Lemmas #1}\sl}
249: \de\Length{\tx{\bi Length}}
250: \de\Lgths{\tx{\sf Lgth}}
251: \de\Lss{{\tx{\ssf L}}}
252: \de\MMM{\tx{${\scr M}$}}
253: \de\Min{\tx{\bi Min}}
254: \de\MinNStdAlg{\Min\NStdAlg}
255: \de\Mod{\tx{\bi Mod}}
256: \de\NN{{\tx{${\Bbb N}$}}}
257: \de\NNN{{\tx{${\scr N}$}}}
258: \de\NNNB{{\tx{${\NNN^B}$}}}
259: \de\NNNo{{\tx{$\NNN_0$}}}
260: \de\NNu{\tx{${\Bbb N}^\uu$}}
261: \de\NStdAlg{\tx{\bi NStdAlg\/}}
262: \de\NStdAlgSig{\tx{$\NStdAlg\,(\Sig)$}}
263: \de\Nbd{\tx{\bi Nbd}}
264: \de\Nbi{{\tx{\bi N}}}
265: \de\Nbismall{{\tx{\smallbi N}}}
266: \de\Newlengths{\tx{\sf Newlength}}
267: \de\Notation{\pr{Notation}\rm}
268: \de\Notationn#1{\pr{Notation \ #1}\rm}
269: \de\Note{\pr{Note}\rm}
270: \de\Noten#1{\pr{Note #1}\rm}
271: \de\Notes{\pr{Notes}\rm}
272: \de\Notesn#1{\pr{Notes #1}\rm}
273: \de\Ns{\tx{\sf N}}
274: \de\Nss{{\tx{\ssf N}}}
275: \de\Nnu{\tx{$\Nn^\uu$}}
276: \de\Nulls{\tx{\sf Null}}
277: \de\Nullvec{\tx{$\vec{\Nulls}$}}
278: \de\Om{{\tx{$\Omega$}}}
279: \de\Pp{\tx{\bk P}}
280: \de\PA{\tx{$P^A$}}
281: \de\PE{\tx{\bi PE}}
282: \de\PL#1{\tx{$\ProgLang_{#1}$}}
283: \de\PPP{\tx{$\scr P$}}
284: \de\PR{\tx{PR}}
285: \de\PRA{\tx{$\PR(A)$}}
286: \de\PRAutos{\tx{$\PRA_\utos$}}
287: \de\PRSig{\tx{$\PR(\Sig)$}}
288: \de\PRSigb{\tx{$\PRb(\Sigb)$}}
289: \de\PRSigutos{\tx{$\PRSig_\utos$}}
290: \de\PRb{\tx{\bf PR}}
291: \de\PRmin{\tx{$\PR_-$}}
292: \de\PRo{\tx{$\PR_0$}}
293: \de\PRolam{\tx{$\PR_0^{\lam}$}}
294: \de\PRutos{\tx{$\PR_\utos$}}
295: \de\PRx{\PR\str}
296: \de\PRxA{\tx{$\PRx(A)$}}
297: \de\PRxSig{\tx{\PRx(\Sig)}}
298: \de\PRxSigb{\tx{\PRxb(\Sigb)}}
299: \de\PRxb{\PRb\strb}
300: \de\PTE{\tx{\bi PTE}}
301: \de\PTEA{\tx{$\PTE^A$}}
302: \de\PTerm{\tx{\bi PTerm}}
303: \de\PTermSig{\tx{$\PTerm(\Sig)$}}
304: \de\Pbi{\tx{\bi P}}
305: \de\Pf{\n{\bf Proof:\ \,}}
306: \de\Ph{\tx{$\Phi$}}
307: \de\PreStr{\tx{\bi PreStr}}
308: \de\PreStrSig{\PreStr\,(\Sig)}
309: \de\Problem{\pr{Problem}}
310: \de\Problemn#1{\pr{Problem {#1}}}
311: \de\Problems{\pr{Problems}}
312: \de\Problemsn#1{\pr{Problems {#1}}}
313: \de\Propsn#1{\pr{Propositions {#1}}}
314: \de\Proc{\tx{\bi Proc}}
315: \de\ProcN{\tx{$\Proc^N$}}
316: \de\ProcNSig{\ProcN(\Sig)}
317: \de\ProcSig{\Proc(\Sig)}
318: \de\ProcSigN{\Proc(\SigN)}
319: \de\ProcSiguv{\tx{$\Proc(\Sig)_\utov$}}
320: \de\ProcSigx{\tx{$\Proc(\Sigx)$}}
321: \de\Procuv{\tx{$\Proc_\utov$}}
322: \de\ProcuvSig{\tx{$\Procuv(\Sig)$}}
323: \de\Procx{\Proc\str}
324: \de\ProcxSig{\Procx(\Sig)}
325: \de\ProcxSiguv{\tx{$\ProcxSig_\utov$}}
326: \de\Procxuv{\tx{$\Proc^*_\utov$}}
327: \de\Prod{\tx{\bi Prod}}
328: \de\ProdType{\tx{\bi ProdType}}
329: \de\ProdTypeSig{\tx{$\ProdType(\Sig)$}}
330: \de\Prog{\tx{\bi Prog}}
331: \de\ProgLang{\Prog\Lang}
332: \de\ProgTerm{\Prog\Term}
333: \de\ProgTermSig{\tx{$\ProgTerm(\Sig)$}}
334: \de\Prop{\pr{Proposition}\sl}
335: \de\Propn#1{\prn{Proposition #1}\sl}
336: \de\Propp{\tx{\bi Prop}}
337: \de\Props{\pr{Propositions}\sl}
338: \de\Ps{\tx{$\Psi$}}
339: \de\Q{{\bf Q}}
340: \de\QQ{\tx{${\Bbb Q}$}}
341: \de\Qs{\tx{\sf Q}}
342: \de\Question{\pr{Question}\sl}
343: \de\RR{{\tx{${\Bbb R}$}}}
344: \de\RRR{{\tx{$\scr R$}}}
345: \de\RRRB{\tx{$\RRR^B$}}
346: \de\RRRL{\tx{${\RRR}^<$}}
347: \de\RRRN{\tx{$\RRR^N$}}
348: \de\RRn{\tx{$\RR^n$}}
349: \de\RRx{\tx{$\RR\str$}}
350: \de\RRq{\tx{$\RR^q$}}
351: \de\Ref{\tx{\bf Ref:\/}}
352: \de\Rem{\tx{\bi Rem}}
353: \de\RemA{\tx{$\Rem^A$}}
354: \de\RemSeqA#1{\tx{$\Rem\Seq^A(#1)$}}
355: \de\RemSet#1{\tx{\bi RemSet\,$(#1)$}}
356: \de\Remark{\pr{Remark}\rm}
357: \de\Remarkn#1{\prn{Remark #1}\rm}
358: \de\Remarks{\pr{Remarks}\rm}
359: \de\Remarksn#1{\prn{Remarks #1}\rm}
360: \de\Rep{\tx{\bi Rep}}
361: \de\Rest{\tx{\bi Rest}}
362: \de\Rs{\tx{\sf R}}
363: \de\Rss{{\tx{\ssf R}}}
364: \de\SA{\tx{$\bb{S}^A$}}
365: \de\SS{{\tx{${\Bbb S}$}}}
366: \de\SSS{{\tx{${\scr S}$}}}
367: \de\Sarrow{\tx{$S^{\to}$}}
368: \de\Sat{\tx{$S_{\tx{\ssf at}}$}}
369: \de\Sbar{\tx{$\ol \Sbi$}}
370: \de\Sbi{\tx{\bi S}}
371: \de\Seq{\tx{\bi Seq}}
372: \de\Shead#1#2{\bn{\bigbf {#1}\ \ \ {#2}}\sn}
373: \de\Sheads#1#2{\bn{\bigbf {#1}\ \ \ {#2}}}
374: \de\Sig{{\tx{$\varSigma$}}}
375: \de\SigA{\tx{$\Sig(A)$}}
376: \de\SigBBB{\tx{$\Sig^\BBB$}}
377: \de\SigBN{\tx{$\Sig^{B,N}$}}
378: \de\SigN{\tx{$\Sig^N$}}
379: \de\SigT{\tx{$(\Sig,T)$}}
380: \de\Sigb{\tx{$\bs\varSigma$}}
381: \de\Sigbar{\tx{$\ol \Sig$}}
382: \de\Sigo{\tx{$\varSigma_0$}}
383: \de\Sigox{\tx{$\varSigma_0^*$}}
384: \de\Sigone{\tx{$\Sigb_1$}}
385: \de\SigoneInd{\tx{$\Sigb_{\pmb1}$-$\pmb{Ind}\,$}}
386: \de\Sigonex{\tx{$\Sigb_1^*$}}
387: \de\SigonexInd{\tx{$\Sigb_{\pmb1}^{\pmb*}$-$\pmb{Ind}\,$}}
388: \de\SigonexIndl{\tx{$\Sigb_{\pmb1}^{\pmb*}$-$\pmb{Ind_\ell}\,$}}
389: \de\SigonexIndc{\tx{$\Sigb_{\pmb1}^{\pmb*}$-$\pmb{Ind_c}\,$}}
390: \de\SigonexIndi{\tx{$\Sigb_{\pmb1}^{\pmb*}$-$\pmb{Ind_i}\,$}}
391: \de\Sigp{{\tx{$\Sig'$}}}
392: \de\SigpTp{\tx{$(\Sig',T')$}}
393: \de\Sigpp{{\tx{$\Sig''$}}}
394: \de\SigppTpp{\tx{$(\Sig'',T'')$}}
395: \de\Sigstk{\tx{$\Sig^\stkss$}}
396: \de\Siguu{\tx{$\varSigma^\uu$}}
397: \de\SiguuN{\tx{$\varSigma^{\uu,N}$}}
398: \de\Sigx{\tx{$\varSigma^*$}}
399: \de\Snap{\tx{\bi Snap}}
400: \de\SnapA{\tx{$\Snap^A$}}
401: \de\SnapSeqA#1{\tx{$\Snap\Seq^A(#1)$}}
402: \de\Sort{\tx{\bi Sort\/}}
403: \de\SortSig{\Sort(\Sig)}
404: \de\SortSigsmall{\Sortsmall\,(\Sig)}
405: \de\SortSigp{\tx{$\Sort(\Sigp)$}}
406: \de\SortSigx{\tx{$\Sort(\Sigx)$}}
407: \de\Sortsmall{\tx{\smallbi Sort}}
408: \de\Spec{\tx{\sf Spec}}
409: \de\Ss{\tx{\sf S}}
410: \de\Sss{{\tx{\ssf S}}}
411: \de\State{\tx{\bi State}}
412: \de\StateA{\tx{$\State(A)$}}
413: \de\Step{\tx{\bi Step}}
414: \de\Stmt{\tx{\bi Stmt}}
415: \de\StmtSig{\tx{$\Stmt(\Sig)$}}
416: \de\StmtStepA{\tx{$\Stmt\Step^A$}}
417: \de\Std{\tx{\bi Std\/}}
418: \de\StdAlg{\Std\Alg}
419: \de\StdAlgSig{\tx{$\StdAlg\,(\Sig)$}}
420: \de\StdAlgSigx{\tx{$\StdAlg\,(\Sigx)$}}
421: \de\StdMod{\Std\Mod}
422: \de\Str{\tx{\bi Str}}
423: \de\StrSig{\Str\,(\Sig)}
424: \de\SubalgA#1{\tx{${\bi \ Subalg}_A(#1)$}}
425: \de\Tb{\tx{\bf T}}
426: \de\Tbi{\tx{\bi T}}
427: \de\TComp{\tx{\bi TComp}}
428: \de\TE{\tx{\bi TE}}
429: \de\TEA{\tx{$\TE^A$}}
430: \de\TOL{\TagsOnLeft}
431: \de\TOR{\TagsOnRight}
432: \de\TSig{\Tbi(\Sig)}
433: \de\TT{\tx{${\Bbb T}$}}
434: \de\TTT{\tx{$\scr T$}}
435: \de\Tab{\tx{\bi Tab}}
436: \de\TabSig{\Tab(\Sig)}
437: \de\Tbar{\tx{$\ol T$}}
438: \de\Term{\tx{\bi Term}}
439: \de\TermSig{\tx{$\Term(\Sig)$}}
440: \de\TermTup{\Term\Tup}
441: \de\TermTupSig{\tx{$\TermTup(\Sig)$}}
442: \de\Terminology{\pr{Terminology}\rm}
443: \de\Th{\tx{\bi Th}}
444: \de\Thesisn#1{\pr{Thesis \ #1}\sl}
445: \de\Thm{\pr{Theorem}\sl}
446: \de\Thmn#1{\prn{Theorem #1}\sl}
447: \de\Thms{\pr{Theorems}\sl}
448: \de\Tm{\tx{\bi Tm}}
449: \de\TmSig{\tx{$\Tm(\Sig)$}}
450: \de\Tms{\tx{$\Tm_s$}}
451: \de\TmsSig{\tx{$\Tms(\Sig)$}}
452: \de\Ts{\tx{$\Tbi_s$}}
453: \de\TsSig{\tx{$\Ts(\Sig)$}}
454: \de\Tup{\tx{\bi Tup}}
455: \de\Ub{\tx{\bf U}}
456: \de\Ubi{\tx{\bi U}}
457: \de\Univ{\tx{\bi Univ}}
458: \de\Univs{\tx{\sf Univ}}
459: \de\Univuv{\tx{$\Univs_\utov$}}
460: \de\UnivuvA{\tx{$\Univs_\utov^A$}}
461: \de\Univuvx{\tx{$\Univs_\utov^*$}}
462: \de\UnivuvxA{\tx{$\Univs_\utov^{*,A}$}}
463: \de\Univus{\tx{$\Univ_\utos$}}
464: \de\UnivusA{\tx{$\Univ_\utos^A$}}
465: \de\Unspecs{\tx{\sf Unspec}}
466: \de\Updates{\tx{\sf Update}}
467: \de\UpdateD{\tx{$\Updates^D$}}
468: \de\Us{\tx{\sf U}}
469: \de\VVV{\tx{$\scr V$}}
470: \de\Val{\tx{\bi Val}}
471: \de\Var{\tx{\bi Var}}
472: \de\VarSig{\tx{$\Var(\Sig)$}}
473: \de\VarTup{\Var\Tup}
474: \de\VarTupSig{\tx{$\VarTup(\Sig)$}}
475: \de\Vars{\tx{$\Var_s$}}
476: \de\VarsSig{\tx{$\Vars(\Sig)$}}
477: \de\Vbb{\tx{\bf V}}
478: \de\WWW{\tx{${\scr W}$}}
479: \de\Wb{\tx{\bf W}}
480: \de\While{\tx{\bi While}}
481: \de\WhileA{\tx{$\While(A)$}}
482: \de\WhileN{\tx{$\While^\Nbismall$}}
483: \de\WhileNA{\tx{$\WhileN(A)$}}
484: \de\WhileNSig{\tx{$\WhileN(\Sig)$}}
485: \de\WhileSig{\tx{$\While(\Sig)$}}
486: \de\WhileSigN{\tx{$\While(\SigN)$}}
487: \de\WhileSigx{\tx{$\While(\Sigx)$}}
488: \de\Whilebig{\tx{\bigbi While}}
489: \de\WhilebigSig{\tx{$\Whilebig(\Sigb)$}}
490: \de\WhilebigN{\tx{$\Whilebig^\Nbi$}}
491: \de\Whilebigx{\tx{$\Whilebig^\starb$}}
492: \de\Whilex{\tx{$\While^\starb$}}
493: \de\WhilexA{\Whilex(A)}
494: \de\WhilexSig{\Whilex(\Sig)}
495: \de\WhilexSigN{\Whilex(\SigN)}
496: \de\Whilexbig{\tx{$\Whilebig^{\dz{\starb}}$}}
497: \de\XXX{{\tx{${\scr X}$}}}
498: \de\ZZ{\tx{${\Bbb Z}$}}
499: \de\ZZZ{{\tx{${\scr Z}$}}}
500: \de\Zbi{\tx{\bi Z}}
501: \de\Zs{\tx{\sf Z}}
502: \de\Zss{{\tx{\ssf Z}}}
503: \de\Zz{\tx{\sf Z}}
504: \de\abi{\tx{\bi a}}
505: \de\aas{\tx{\sf a}}
506: \de\abar{\tx{$\bar a$}}
507: \de\adt{{\bi adt}}
508: \de\aee{\tx{\bi ae}}
509: \de\ainAu{\tx{$a \in \Au$}}
510: \de\ainAv{\tx{$a \in \Av$}}
511: \de\ainAs{\tx{$a \in \As$}}
512: \de\al{{\tx{$\alpha$}}}
513: \de\alA{\tx{$\alpha^A$}}
514: \de\alb{\tx{$\bs\alpha$}}
515: \de\albar{{\tx{$\ol \alpha$}}}
516: \de\algebras{\tx{\sf algebra}}
517: \de\alhat{{\tx{$\hat{\alpha}$}}}
518: \de\aliass{\tx{\sf alias}}
519: \de\aliasss{{\tx{\ssf alias}}}
520: \de\all{\forall}
521: \de\alvec{\tx{$\vec{\alpha}$}}
522: \de\ands{\tx{\sf and}}
523: \de\ang#1{\tx{$\langle #1 \rangle$}}
524: \de\angg#1{\tx{$\langg #1 \rangg$}}
525: \de\arity#1{\tx{\rm arity$(#1)$}}
526: \de\arr{\arrow <0.1in> [0.2,0.5]}
527: \de\att{{\tx{\tt a}}}
528: \de\atts{{\tx{\smalltt a}}}
529: \de\attx{\att\str}
530: \de\auxs{\tx{\sf aux}}
531: \de\avec{\tx{$\vec{a}$}}
532: \de\ax{\tx{$a^*$}}
533: \de\bA{\tx{$\bb{b}^A$}}
534: \de\bB{\bk{B}}
535: \de\bFor{\tx{\bigbi For}}
536: \de\bForN{\tx{$\bFor^\Nbi$}}
537: \de\bForx{\tx{$\bFor^\starb$}}
538: \de\bProc{\tx{\bigbi Proc}}
539: \de\bb#1{\tx{$\lbb #1 \rbb$}}
540: \de\bbar{[\ns]}
541: \de\bbi{\tx{\bi b}}
542: \de\bbs{\tx{\sf b}}
543: \de\bdot{{\bs\cdot}}
544: \de\be{{\tx{$\beta$}}}
545: \de\beA{\tx{$\beta^A$}}
546: \de\beb{\tx{$\bs\beta$}}
547: \de\begins{\tx{\sf begin}}
548: \de\bigcaplim#1{\underset#1\to\bigcap}
549: \de\bigcon{\bigwedge}
550: \de\bigdis{\bigvee}
551: \de\bigskipn{\bigskip\nin}
552: \de\biu{\tx{\bi u}}
553: \de\bk{\boldkey}
554: \de\bn{\bigskip\nin}
555: \de\bools{\tx{\sf bool}}
556: \de\boolss{{\tx{\ssf bool}}}
557: \de\br{\ |\ }
558: \de\bs{\boldsymbol}
559: \de\btt{{\tx{\tt b}}}
560: \de\btts{{\tx{\smalltt b}}}
561: \de\bttx{\btt\str}
562: \de\bu{$\bullet$}
563: \de\bul{\item{\bu}}
564: \de\bull{\itemm{\bu}}
565: \de\bulll{\itemmm{\bu}}
566: \de\bx{\tx{$b^*$}}
567: \de\capt#1#2{\ce{{\sc #1}. \ \ #2}}
568: \de\card#1{\tx{\bi card\,$(#1)$}}
569: \de\carrierss{\tx{\sf carriers}}
570: \de\cart#1{\tx{\bi cart\, $(#1)$}}
571: \de\cb#1{\ce{\bf #1}}
572: \de\cbb#1{\ce{\bbf #1}}
573: \de\cbbb#1{\ce{\bbigbf #1}}
574: \de\cbi#1{\ce{\bi #1}}
575: \de\cbbi#1{\ce{\bigbi #1}}
576: \de\ccc{{\tx{\bi c}}}
577: \de\ce{\centerline}
578: \de\cf{{\it cf\.}}
579: \de\chead#1{\bn\cb{#1}\mn}
580: \de\chooses{\tx{\sf choose}}
581: \de\cnr#1{\tx{$\ulc #1 \urc$}}
582: \de\comlabs{\tx{\com\bf-\labs}}
583: \de\comlam{\tx{$\com^\lam$}}
584: \de\compb{\tx{\bi comp}}
585: \de\compl#1{\tx{\bi compl\,$(#1)$}}
586: \de\complexs{\tx{\sf complex}}
587: \de\complexss{{\tx{\ssf complex}}}
588: \de\comps{\tx{\sf comp}}
589: \de\con{\land}
590: \de\concon{{\bigcon\nss\nss\nss\bigcon}}
591: \de\conconlim#1{\underset#1\to\concon}
592: \de\conconlims#1#2{\overset{#2}\to{\conconlim{#1}}}
593: \de\cons{\tx{\sf con}}
594: \de\conss{{\tx{\ssf con}}}
595: \de\constantss{\tx{\sf constants}}
596: \de\consts{\tx{\sf const}}
597: \de\constss{{\tx{\ssf const}}}
598: \de\cpxs{\tx{\sf complex}}
599: \de\ccs{\tx{\sf c}}
600: \de\css{{\tx{\ssf c}}}
601: \de\ctt{{\tx{\tt c}}}
602: \de\ctts{{\tx{\smalltt c}}}
603: \de\cttx{\ctt\str}
604: \de\curl#1{\tx{$\{#1\}$}}
605: \de\curly#1{\tx{$\{\,#1\,\}$}}
606: \de\cvals{\tx{\sf cval}}
607: \de\cvec{\tx{$\vec{c}$}}
608: \de\cx{\tx{$c^*$}}
609: \de\da{\downarrow}
610: \de\dash{\item{---}}
611: \de\dashh{\itemm{---}}
612: \de\dashhh{\itemmm{---}}
613: \de\datas{{\tx{\sf data}}}
614: \de\datass{{\tx{\ssf data}}}
615: \de\dcs{\tx{\sf dc}}
616: \de\ddis{\lor\!\!\!\!\!\lor}
617: \de\defaults{\tx{\sf default}}
618: \de\degg#1{\tx{\bi deg$(#1)$}}
619: \de\del{{\tx{$\delta$}}}
620: \de\delb{\tx{$\bs\delta$}}
621: \de\delhat{\hat{\delta}}
622: \de\depth#1{\tx{\bi depth$(#1)$}}
623: \de\dis{\lor}
624: \de\disdis{{\bigdis\nss\nss\nss\bigdis}}
625: \de\disdislim#1{\underset#1\to\disdis}
626: \de\disdislims#1#2{\overset{#2}\to{\disdislim{#1}}}
627: \de\displayquote{\narrower\narrower\smallrm\nin}
628: \de\displaytext{\narrower\narrower\sl\nin}
629: \de\diss{\tx{\sf dis}}
630: \de\divN{\tx{$\divs_{\natss}$}}
631: \de\divNR{\tx{$\divs_\natss^\RRR$}}
632: \de\divs{\tx{\sf div}}
633: \de\dos{\tx{\sf do}}
634: \de\dom#1{\tx{\bi dom$(#1)$}}
635: \de\down{\tx{$^\vee$}}
636: \de\ds{{\tx{\sf d}}}
637: \de\dt{\tx{\bi dt}}
638: \de\dtt{{\tx{\tt d}}}
639: \de\dz{\dsize}
640: \de\ebar{{\tx{$\bar e$}}}
641: \de\eg{{\it e.g.}}
642: \de\ehat{tx{$\hat e$}}
643: \de\el{\tx{$\ell$}}
644: \de\elses{\tx{\sf else}}
645: \de\endpf{\qed\smskip}
646: \de\endpr{\rm\smskip}
647: \de\ends{\tx{\sf end}}
648: \de\enum{\tx{\bi enum}}
649: \de\eps{{\tx{$\epsilon$}}}
650: \de\epsb{{\tx{$\bs\epsilon$}}}
651: \de\eqbool{\tx{$\eqs_{\boolss}$}}
652: \de\eqdata{\tx{$\eqs_\datass$}}
653: \de\eqdf{=_{df}}
654: \de\eqint{\tx{$\eqs_{\intss}$}}
655: \de\eqintvl{\tx{$\eqs_{\intvlss}$}}
656: \de\eqnat{\tx{$\eqs_{\natss}$}}
657: \de\eqnatN{\tx{$\eqs_{\natss}^\NNN$}}
658: \de\eqreal{\tx{$\eqs_{\realss}$}}
659: \de\eqrealR{\tx{$\eqs_{\realss}^\RRR$}}
660: \de\eqs{\tx{\sf eq}}
661: \de\eqss{\tx{$\eqs_s$}}
662: \de\equal{\ &= \ }
663: \de\es{\tx{\sf e}}
664: \de\etal{{\it et al.}}
665: \de\ett{{\tx{\tt e}}}
666: \de\eval{\tx{\bi eval}}
667: \de\evals{\tx{\sf eval}}
668: \de\evec{\tx{$\vec{e}$}}
669: \de\ex{\exists}
670: \de\expands{\tx{\sf expand}}
671: \de\fA{\tx{$f^A$}}
672: \de\falses{\tx{\sf false}}
673: \de\fbi{\tx{\bi f}}
674: \de\fff{\tx{{\sf f}\!{\sf f}}}
675: \de\ffrom{\tx{$\Leftarrow$}}
676: \de\fcheck{\tx{$\check f$}}
677: \de\fhat{\tx{$\hat f$}}
678: \de\first{\tx{\bi first}}
679: \de\fis{\tx{\sf fi}}
680: \de\floor#1{\tx{$\llc #1 \lrc$}}
681: \de\fn{\footnote}
682: \de\fors{\tx{\sf for}}
683: \de\free{\tx{\bi free}}
684: \de\from{\leftarrow}
685: \de\fs{{\tx{\sf f}}}
686: \de\fss{{\tx{\ssf f}}}
687: \de\ftil{\tx{$\til f$}}
688: \de\funcs{\tx{\sf func}}
689: \de\functionss{\tx{\sf functions}}
690: \de\fuu{\tx{$f^\uu$}}
691: \de\fvec{\tx{$\vec{f}$}}
692: \de\gam{{\tx{$\gamma$}}}
693: \de\gamA{\tx{$\gam^A$}}
694: \de\gamb{\tx{$\bs\gamma$}}
695: \de\gamx{\tx{$\gam^*$}}
696: \de\ghat{\tx{$\hat g$}}
697: \de\gtil{\tx{$\til g$}}
698: \de\gn{\tx{\bi gn}}
699: \de\gotos{\tx{\sf goto}}
700: \de\graph{\tx{\bi graph}}
701: \de\gs{{\tx{\sf g}}}
702: \de\gtt{{\tx{\tt g}}}
703: \de\gvec{\tx{$\vec{g}$}}
704: \de\halt{\tx{\bi halt}}
705: \de\hs{{\tx{\sf h}}}
706: \de\htil{\tx{$\til h$}}
707: \de\htt{{\tx{\tt h}}}
708: \de\ibar{{\tx{$\bar{\imath}$}}}
709: \de\id{\tx{\bi id}}
710: \de\ident{\equiv}
711: \de\idi{\tx{$\id_i$}}
712: \de\ie{{\it i.e.}}
713: \de\ifbool{\tx{$\ifs_{\boolss}$}}
714: \de\ifdata{\tx{$\ifs_{\datass}$}}
715: \de\ifff{\ \,\llongtofrom\ }
716: \de\ifffdf{\ \ \tx{$\llongtofrom_{df}$}\ }
717: \de\ifint{\tx{$\ifs_{\intss}$}}
718: \de\ifintvl{\tx{$\ifs_{\intvlss}$}}
719: \de\ifnat{\tx{$\ifs_{\natss}$}}
720: \de\ifnatN{\tx{$\ifs_{\natss}^\NNN$}}
721: \de\ifreal{\tx{$\ifs_{\realss}$}}
722: \de\ifrealR{\tx{$\ifs_\realss^\RRR$}}
723: \de\ifs{\tx{\sf if}}
724: \de\ifss{\tx{$\ifs_s$}}
725: \de\ifstk{\tx{$\ifs_{\stkss}$}}
726: \de\ift#1{&\tx{if \ {#1}}}
727: \de\ii{{\tx{\bi i}}}
728: \de\iii{{\tx{\sf i}}}
729: \de\iinI{{\tx{$i \in I$}}}
730: \de\ims{\tx{\sf im}}
731: \de\imp{\to}
732: \de\impp{\ \,\llongto\ }
733: \de\imps{\tx{\sf imp}}
734: \de\imports{\tx{\sf import}}
735: \de\inbull{\itemitem{\bu}}
736: \de\indash{\itemitem{---}}
737: \de\indentt{\indent\quad}
738: \de\ins{\tx{\sf in}}
739: \de\ints{{\tx{\sf int}}}
740: \de\intss{{\tx{\ssf int}}}
741: \de\intvls{{\tx{\sf intvl}}}
742: \de\intvlss{{\tx{\ssf intvl}}}
743: \de\io{{\tx{$\iota$}}}
744: \de\is{\tx{\sf i}}
745: \de\isom{\cong}
746: \de\itt{{\tx{\tt i}}}
747: %\de\itemm{\itemitem}
748: \de\ivec{\tx{$\vec{\imath}$}}
749: \de\ivecstrut{\vec{\mathstrut i}}
750: \de\jbar{{\tx{$\bar{\jmath}$}}}
751: \de\js{\tx{\sf j}}
752: \de\jvec{\tx{$\vec{\jmath}$}}
753: \de\jvecstrut{\vec{\mathstrut j}}
754: \de\kap{{\tx{$\kappa$}}}
755: \de\kapb{\tx{$\bs\kappa$}}
756: \de\kbar{\tx{$\bar k$}}
757: \de\kinNN{\tx{$k\in\NN$}}
758: \de\ktt{{\tx{\tt k}}}
759: \de\kvec{\tx{$\vec{k}$}}
760: \de\kvecstrut{\vec{\mathstrut k}}
761: \de\kxvec{\tx{$\kvec^*$}}
762: \de\labs{\lamb\tx{\bi abs}}
763: \de\lam{{\tx{$\lambda$}}}
764: \de\lamPR{\lam\PR}
765: \de\lamPRmin{\lam\PRmin}
766: \de\lamPRx{\lam\PRx}
767: \de\lamb{\tx{$\bs\lambda$}}
768: \de\lammuPR{\lam\muu\PR}
769: \de\lammuPRmin{\lam\muu\PRmin}
770: \de\lammuPRx{\lam\muu\PRx}
771: \de\langg{\langle\!|}
772: \de\lb{\linebreak}
773: \de\lbar{\tx{$\ol l$}}
774: \de\lbb{[\![}
775: \de\leasts{\tx{\sf least}}
776: \de\lele#1#2#3{{\tx{$#1 \le #2 \le #3$}}}
777: \de\lel#1#2#3{{\tx{$#1 \le #2 < #3$}}}
778: \de\lgth#1{\tx{\bi lgth$(#1)$}}
779: \de\llc{\llcorner}
780: \de\lle#1#2#3{{\tx{$#1 < #2 \le #3$}}}
781: \de\llongfrom{\tx{$\Longleftarrow$}}
782: \de\llongto{\tx{$\Longrightarrow$}}
783: \de\llongtofrom{\tx{$\Longleftrightarrow$}}
784: \de\loccit{{\it loc\. cit.}}
785: \de\locs{\tx{\sf loc}}
786: \de\longfrom{\longleftarrow}
787: \de\longimp{\longrightarrow}
788: \de\longto{\longrightarrow}
789: \de\longtofrom{\longleftrightarrow}
790: \de\loops{\tx{\sf loop}}
791: \de\lowerbox#1#2{{\lower#1pt\hbox{$#2$}}}
792: \de\lrc{\lrcorner}
793: \de\lss{\tx{\sf less}}
794: \de\lsint{\tx{$\lss_\intss$}}
795: \de\lsintvl{\tx{$\lss_\intvlss$}}
796: \de\lsnat{\tx{$\lss_\natss$}}
797: \de\lsnatN{\tx{$\lss_\natss^\NNN$}}
798: \de\lsreal{\tx{$\lss_\realss$}}
799: \de\lsrealR{\tx{$\lss_\realss^\RRR$}}
800: \de\lvec{\tx{$\vec{l}$}}
801: \de\lxvec{\tx{$\vec{l}^*$}}
802: \de\lxx{\lower.2ex}
803: \de\lxxx{\lower.3ex}
804: \de\lxxxx{\lower.4ex}
805: \de\macros{\tx{\sf macro}}
806: \de\macross{{\tx{\ssf macro}}}
807: \de\magn#1{\magnification=\magstep#1}
808: \de\mapdownl#1{\mapdown\lft{\dz{#1}}}
809: \de\mapdownlr#1#2{\mapdown\lft{\dz{#1}}\rt{\dz{#2}}}
810: \de\mapdownr#1{\mapdown\rt{\dz{#1}}}
811: \de\maprightd#1{\mapright_{\dz{#1}}}
812: \de\maprightdlower#1#2{\mapright_{\lower#1pt\hbox{$\dz{#2}$}}}
813: \de\maprightu#1{\mapright^{\dz{#1}}}
814: \de\maprightud#1#2{\mapright^{\dz{#1}}_{\dz{#2}}}
815: \de\maprighturaise#1#2{\mapright^{\raise#1pt\hbox{$\dz{#2}$}}}
816: \de\maprighturaised#1#2#3{\mapright^{\raise#1pt\hbox{$\dz{#2}$}}_{\dz{#3}}}
817: \de\maprightudlower#1#2#3{\mapright^{\dz{#1}}_{\lower#2pt\hbox{$\dz{#3}$}}}
818: \de\mapupl#1{\mapup\lft{\dz{#1}}}
819: \de\mapuplr#1#2{\mapup\lft{\dz{#1}}\rt{\dz{#2}}}
820: \de\mapupr#1{\mapup\rt{\dz{#1}}}
821: %\de\mapupud#1#2{\mapup^{\dz{#1}}_{\dz{#2}}}
822: \de\mbar{\tx{$\bar m$}}
823: \de\medskipn{\medskip\nin}
824: \de\mg#1{\tx{\bi mg$(#1)$}}
825: \de\mi{\tx{$^-$}}
826: \de\mins{\tx{\sf min}}
827: \de\mn{\medskip\nin}
828: \de\mtt{{\tx{\tt m}}}
829: \de\muCR{\mub\CR}
830: \de\muCRA{\tx{$\muCR(A)$}}
831: \de\muCRSig{\tx{$\muCR(\Sig)$}}
832: \de\muPR{\muu\PR}
833: \de\muPRA{\tx{$\muPR(A)$}}
834: \de\muPRSig{\tx{$\muPR(\Sig)$}}
835: \de\muPRSigb{\tx{$\muPRb(\Sigb)$}}
836: \de\muPRb{\mub\PRb}
837: \de\muPRmin{\muu\PRmin}
838: \de\muPRo{\muu\PRo}
839: \de\muPRolam{\muu\PRolam}
840: \de\muPRx{\muPR\str}
841: \de\muPRxb{\mub\PRxb}
842: \de\muPRxA{\tx{$\muPRx(A)$}}
843: \de\muPRxSig{\tx{$\muPRx(\Sig)$}}
844: \de\muPRxSigutos{\tx{$\muPRxSig_\utos$}}
845: \de\muPRxSigb{\tx{$\muPRxb(\Sigb)$}}
846: \de\muPRxutos{\tx{$\muPRx_\utos$}}
847: \de\mub{\tx{$\bs\mu$}}
848: \de\muu{{\tx{$\mu$}}}
849: \de\mvec{\tx{$\vec{m}$}}
850: \de\mxvec{\tx{$\mvec^*$}}
851: \de\n{\noindent}
852: \de\names{\tx{\sf name}}
853: \de\namess{{\tx{\ssf name}}}
854: \de\nats{\tx{\sf nat}}
855: \de\natss{{\tx{\ssf nat}}}
856: \de\nbar{\tx{$\bar n$}}
857: \de\negs{\tx{\sf neg}}
858: \de\news{\tx{\sf new}}
859: \de\newss{{\tx{\ssf new}}}
860: \de\nil{\tx{$\emptyset$}}
861: \de\nin{\noindent}
862: \de\ninNN{\tx{$n\in\NN$}}
863: \de\nl{\newline}
864: \de\nneg{\neg\!\!\!\!\!\neg}
865: \de\notover{\tx{\bi notover}}
866: \de\notimplies{\tx{$\ \not\nsss\llongto$}}
867: \de\notimplied{\tx{$\ \not\nsss\llongfrom$}}
868: \de\nots{\tx{\sf not}}
869: \de\npn{\NoPageNumbers}
870: \de\ns{\negthinspace}
871: \de\nss{\negthickspace}
872: \de\nsss{\nss\nss}
873: \de\nssss{\nsss\nsss}
874: \de\ntt{{\tx{\tt n}}}
875: \de\nub{\tx{$\bs\nu$}}
876: \de\nx{\tx{$n^*$}}
877: \de\ol{\overline}
878: \de\opcit{{\it op\. cit\.}}
879: \de\ods{\tx{\sf od}}
880: \de\om{{\tx{$\omega$}}}
881: \de\omb{{\tx{$\bs\omega$}}}
882: \de\onto{\twoheadrightarrow}
883: \de\ors{\tx{\sf or}}
884: \de\outs{\tx{\sf out}}
885: \de\ow{&\tx{otherwise}}
886: \de\pa{{\it p.a.}}
887: \de\pairs{\tx{\sf pair}}
888: \de\pe{\tx{\bi pe}}
889: \de\ph{{\tx{$\varphi$}}}
890: \de\pie{\tx{$\pi$}}
891: \de\pmapsto{{\,\overset\ {\cdot} \to\mapsto\,}}
892: \de\pr#1{\mn{\bf #1}. \,}
893: \de\prb#1{\bn{\bbf #1}.\sn}
894: \de\prc#1{\sn{\sc #1}.\ \ }
895: \de\prn#1{\mn{\bf #1}.\,}
896: \de\prims{\tx{\sf prim}}
897: \de\procs{\tx{\sf proc}}
898: \de\procss{{\tx{\ssf proc}}}
899: \de\proj{\tx{\bi proj}}
900: \de\projs{\tx{\sf proj}}
901: \de\ps{{\tx{$\psi$}}}
902: \de\pte{\tx{\bi pte}}
903: \de\pto{{\,\overset\ {\cdot} \to\longto\,}}
904: \de\ptt{{\tx{\tt p}}}
905: \de\pttx{\ptt\str}
906: \de\px{\tx{$p^*$}}
907: \de\qqquad{\qquad \qquad}
908: \de\qqqquad{\qqquad \qqquad}
909: \de\qfors{`\,\fors'}
910: \de\qforxs{`$\,\fors^*$'}
911: \de\qtt{{\tx{\tt q}}}
912: \de\qwhiles{`\,\whiles'}
913: \de\qwhilex{`$\,\whiles^*$'}
914: \de\rR{\tx{$\bk R$}}
915: \de\raisebox#1#2{{\raise#1pt\hbox{$#2$}}}
916: \de\ran#1{\tx{\bi ran$(#1)$}}
917: \de\rand{\ \tx{\rm and}\ }
918: \de\rangg{|\!\rangle}
919: \de\rats{\tx{\sf rat}}
920: \de\ratss{{\tx{\ssf rat}}}
921: \de\rbb{]\!]}
922: \de\reals{\tx{\sf real}}
923: \de\realss{{\tx{\ssf real}}}
924: \de\rec{\tx{\bi rec}}
925: \de\redSig{\,|\,_{\Sig}}
926: \de\reffs{\tx{\sf ref}}
927: \de\refss{{\tx{\ssf ref}}}
928: \de\rel#1{\tx{\rm (rel $#1$)}}
929: \de\rem{\tx{\bi rem}}
930: \de\res{\tx{\sf re}}
931: \de\rest{\restriction}
932: \de\restt{\tx{\bi rest}}
933: \de\rh{\tx{$\rho$}}
934: \de\rtt{{\tx{\tt r}}}
935: \de\rvec{\tx{$\vec{r}$}}
936: \de\rxx{\raise.2ex}
937: \de\rxxx{\raise.3ex}
938: \de\rxxxx{\raise.4ex}
939: \de\sbar{{\tx{$\bar s$}}}
940: \de\scr{\Cal}
941: %\de\scr{\fam\eusbfam}
942: \de\se{\tx{\bi se}}
943: \de\seq{\tx{\bi seq}}
944: \de\seqt{\longmapsto}
945: \de\setss{{\tx{\ssf set}}}
946: \de\shead#1#2{\mn{\bf {#1}\ \ \ {#2}}\sn}
947: \de\sheadb#1#2{\mn{\bf {#1}\ \ \ {#2}}\nl}
948: \de\sheadrun#1#2{\mn{\bf {#1}\ \ \ {#2}.\ \ }}
949: \de\sheads#1#2{\mn{\bf {#1}\ \ \ {#2}}}
950: \de\sig{{\tx{$\sigma$}}}
951: \de\signatures{\tx{\sf signature}}
952: \de\sigo{\tx{$\sig_0$}}
953: \de\sigp{\tx{$\sig'$}}
954: \de\sinSortSig{{\tx{$s \in \SortSig$}}}
955: \de\sinSortSigx{\tx{$s \in \SortSigx$}}
956: \de\skips{\tx{\sf skip}}
957: \de\smskip{\smallskip}
958: \de\smskipn{\smallskip\nin}
959: \de\sn{\smallskip\nin}
960: \de\snap{\tx{\bi snap}}
961: \de\sort#1{\tx{\bi sort\,{$(#1)$}}}
962: \de\sortss{\tx{\sf sorts}}
963: \de\sq{\simeq}
964: \de\sqsseq{\sqsubseteq}
965: \de\srchs{\tx{\sf srch}}
966: \de\ssA{{\ssz A}}
967: \de\ssB{{\ssz B}}
968: \de\ssbe{{\ssz \beta}}
969: \de\sset{\subset}
970: \de\sseq{\subseteq}
971: \de\sshead#1#2{{\bf {#1}\ \ \ {#2}}\sn\!}
972: \de\ssheadrun#1#2{{\bf {#1}\ \ \ {#2}.\ \ }}
973: \de\ssheads#1#2{{\bf {#1}\ \ \ {#2}}}
974: \de\sss{\tx{\sf s}}
975: \de\sz{\ssize}
976: \de\ssz{\sssize}
977: \de\starb{{\tx{$\bk *$}}}
978: \de\state{\tx{\bi state}}
979: \de\stks{{\tx{\sf stk}}}
980: \de\stkss{{\tx{\ssf stk}}}
981: \de\str{\tx{$^*$}}
982: \de\stt{{\tx{\tt s}}}
983: \de\strb{\tx{$^{\bk*}$}}
984: \de\subex{\tx{\bi subex}}
985: \de\subst{\tx{\bi subst}}
986: \de\sucs{\tx{\sf suc}}
987: \de\suu{{\tx{$s^\uu$}}}
988: \de\sx{{\tx{$s^*$}}}
989: \de\tA{\tx{$\bb{t}^A$}}
990: \de\ta{\tx{$\tau$}}
991: \de\tagx{\tag{$*$}}
992: \de\tagxx{\tag{$**$}}
993: \de\tagxxx{\tag{${*}{*}{*}$}}
994: \de\tagxxxx{\tag{${*}{*}{*}{*}$}}
995: \de\tagxxxxx{\tag{${*}{*}{*}{*}{*}$}}
996: \de\tagxxxxxx{\tag{${*}{*}{*}{*}{*}{*}$}}
997: \de\tbar{\tx{$\bar t$}}
998: \de\te{\tx{\bi te}}
999: \de\term{\tx{\bi term}}
1000: \de\that{\tx{$\hat t$}}
1001: \de\thens{\tx{\sf then}}
1002: \de\tif#1{&\tx{if \ {#1}}}
1003: \de\til{\tilde}
1004: \de\tiltil#1{\tilde{\tilde#1}}
1005: \de\tinT{\tx{$t\in\TT$}}
1006: \de\th{\tx{$\theta$}}
1007: \de\tofrom{\leftrightarrow}
1008: \de\tos{\tx{\sf to}}
1009: \de\toto{\rightrightarrows}
1010: \de\trues{\tx{\sf true}}
1011: \de\tstile{\vdash}
1012: \de\tto{\tx{$\Rightarrow$}}
1013: \de\ttofrom{\tx{$\Leftrightarrow$}}
1014: \de\ttstile{\models}
1015: \de\ttt{\tx{{\sf t}\!{\sf t}}}
1016: \de\tup#1#2#3{\tx{$#1_{#2},\dots,#1_{#3}$}}
1017: \de\tuptimes#1#2#3{\tx{$#1_{#2} \times \dots \times #1_{#3}$}}
1018: \de\tvec{\tx{$\vec{t}$}}
1019: \de\tvecstrut{\vec{\mathstrut t}}
1020: \de\twiddle{{\tx{$\sim$}}}
1021: \de\twiddlek{\tx{$\sim_k$}}
1022: \de\tx{\text}
1023: \de\txvec{\tx{$\vec{t^*}$}}
1024: \de\type#1{\tx{\bi type$(#1)$}}
1025: \de\ua{{\tx{$\uparrow$}}}
1026: \de\ub#1{\tx{\underbar{#1}}}
1027: \de\ubi{{\tx{\bi u}}}
1028: \de\ubrivec{\tx{$u | \ivec$}}
1029: \de\uinProdTypeSig{\tx{$u \in \ProdTypeSig$}}
1030: \de\ul{\underline}
1031: \de\ulc{\ulcorner}
1032: \de\up{\tx{$^\wedge$}}
1033: \de\urc{\urcorner}
1034: \de\unspecs{\tx{\sf unspec}}
1035: \de\unspecN{\tx{$\unspecs_\natss$}}
1036: \de\unspecB{\tx{$\unspecs_\boolss$}}
1037: \de\ups{{\tx{$\upsilon$}}}
1038: \de\utos{{\tx{$u \to s$}}}
1039: \de\utov{{\tx{$u \to v$}}}
1040: \de\uu{{\tx{\ssf u}}}
1041: \de\uuu{\tx{{\sf u}\!\i}}
1042: \de\uuus{\tx{$\uuu_s$}}
1043: \de\uvec{\tx{$\vec{u}$}}
1044: \de\ux{{\tx{$u^*$}}}
1045: \de\val{\tx{\bi val}}
1046: \de\vals{\tx{\sf val}}
1047: \de\valss{{\tx{\ssf val}}}
1048: \de\var#1{\tx{\bi var$(#1)$}}
1049: \de\vars{\tx{\sf var}}
1050: \de\vects{\tx{\sf vect}}
1051: \de\vinProdTypeSig{\tx{$v \in \ProdTypeSig$}}
1052: \de\vvec{\tx{$\vec{v}$}}
1053: \de\vvecstrut{\vec{\mathstrut v}}
1054: \de\vx{{\tx{$v^*$}}}
1055: \de\vxvec{\tx{$\vec{v}\,^*$}}
1056: \de\whiles{\tx{\sf while}}
1057: \de\wrt{w.r.t\.}
1058: \de\wvec{\tx{$\vec{w}$}}
1059: \de\wx{{\tx{$w^*$}}}
1060: \de\x{\tx{\bi x}}
1061: \de\xbar{\tx{$\bar x$}}
1062: \de\xib{\tx{$\bs\xi$}}
1063: \de\xii{\tx{$\xi$}}
1064: \de\xinAbaru{\tx{$x \in \Abaru$}}
1065: \de\xinAu{\tx{$x \in \Au$}}
1066: \de\xinAw{\tx{$x \in \Aw$}}
1067: \de\xtt{{\tx{\tt x}}}
1068: \de\xttx{\tx{$\xtt^*$}}
1069: \de\xtts{{\tx{\smalltt x}}}
1070: \de\xttvec{\tx{$\vec{\xtt}$}}
1071: \de\xvec{\tx{$\vec{x}$}}
1072: \de\xx{\tx{$x^*$}}
1073: \de\xxvec{\tx{$\xvec^*$}}
1074: \de\xxx{\tx{${*}{*}{*}$}}
1075: \de\xxxx{\tx{${*}{*}{*}{*}$}}
1076: \de\xxxxx{\tx{${*}{*}{*}{*}{*}$}}
1077: \de\xxxxxx{\tx{${*}{*}{*}{*}{*}{*}$}}
1078: \de\yinAs{\tx{$y \in \As$}}
1079: \de\yinAv{\tx{$y \in \Av$}}
1080: \de\yvec{\tx{$\vec{y}$}}
1081: \de\yx{\tx{$y^*$}}
1082: \de\yxvec{\tx{$\yvec\,^*$}}
1083: \de\ytt{{\tx{\tt y}}}
1084: \de\yttx{\ytt\str}
1085: \de\ztt{{\tx{\tt z}}}
1086: \de\zttx{\ztt\str}
1087: \de\zvec{\tx{$\vec{z}$}}
1088: \de\zx{\tx{$z^*$}}
1089: \de\zxvec{\tx{$\zvec\,^*$}}
1090:
1091:
1092: % *** MACROS ***
1093:
1094: \newcount\mmm
1095: \de\itemn#1{\mmm=#1\par\indentn\mmm \advance\mmm by 1
1096: \hangindent\mmm \parindent \textindent
1097: }
1098:
1099: \newcount\nnn
1100:
1101: \global\de\indentn#1{
1102: \nnn=#1
1103: \loop \ifnum\nnn>0
1104: \indent
1105: \advance\nnn by -1
1106: \repeat
1107: }
1108:
1109: \de\itemm{\itemn1}
1110: \de\itemmm{\itemn2}
1111:
1112: \newcount\ppp
1113:
1114: \global\de\quadn#1{
1115: \n=#1
1116: \loop \ifnum\ppp>0
1117: \quad
1118: \advance\ppp by -1
1119: \repeat
1120: }
1121:
1122: \de\AEE{\tx{\bi AE}}
1123: \de\AExA{\tx{$\AEE\,_\xtts^A$}}
1124: \de\Abe{\tx{$(A,\be)$}}
1125: \de\Abes{{\tx{$A,\ssbe$}}}
1126: \de\AbsComp{\tx{\bi AbsComp}}
1127: \de\AbsCompA{\tx{$\AbsComp(A)$}}
1128: \de\Ai{\tx{$A_i$}}
1129: \de\Ao{$\tx{\rm A}_0$}
1130: \de\Asprod{\tx{$A_{s_1}\times\dots\times A_{s_n}$}}
1131: \de\Ass{\tx{$A_{s_1},\dots,, A_{s_n}$}}
1132: \de\Asua{\tx{$\As^\ua$}}
1133: \de\AtStx{\tx{$\AtSt\,_\xtts$}}
1134: \de\Aua{\tx{$A^\ua$}}
1135: \de\Avua{\tx{$\Av^\ua$}}
1136: \de\BBBbar{\tx{$\ol \BBB$}}
1137: \de\Bbals{\tx{$\Bb_{\al,s}$}}
1138: \de\Bbalu{\tx{$\Bb_{\al,u}$}}
1139: \de\Bbe{\tx{$(B,\be)$}}
1140: \de\Bbs{\tx{$\Bb_s$}}
1141: \de\Bbu{\tx{$\Bb_u$}}
1142: \de\Bsua{\tx{$B_s^\ua$}}
1143: \de\Bu{\tx{$B^u$}}
1144: \de\Bua{\tx{$B^\ua$}}
1145: \de\Bv{\tx{$B^v$}}
1146: \de\Bvua{\tx{$\Bv^\ua$}}
1147: \de\CS{\tx{\bf CS}}
1148: \de\CSo{\tx{$\CS_0$}}
1149: \de\CSn{\tx{$\CS^n$}}
1150: \de\CSon{\tx{$\CS_0^n$}}
1151: \de\CalLQQe{\tx{$\Cals(\LQQe)$}}
1152: \de\CalQQ{\tx{$\Cals(\QQ)$}}
1153: \de\CalX{\tx{$\Cals(X)$}}
1154: \de\CalXalbar{\tx{$(\CalX, \,\albar)$}}
1155: \de\CalXs{\tx{$\CalX_s$}}
1156: \de\CalXx{\tx{$\CalX^*$}}
1157: \de\Calbar{\tx{$\Cs_\albar$}}
1158: \de\Cals{\tx{$\Cs_\al$}}
1159: \de\CompI{\tx{$\Comp_1$}}
1160: \de\CompIA{\tx{$\Comp_1^A$}}
1161: \de\CompStep{\Comp\Step}
1162: \de\CompStepA{\tx{$\CompStep^A$}}
1163: \de\CompStepxA{\tx{$\CompStep\,_\xtts^A$}}
1164: \de\CompTree{\Comp\Tree}
1165: \de\CompTreeA{\tx{$\CompTree^A$}}
1166: \de\CompTreeASsig{\tx{$\CompTreeA(S,\sig)$}}
1167: \de\CompTreeStage{\tx{\bi CompTreeStage}}
1168: \de\CompTreeStageA{\tx{$\CompTreeStage^A$}}
1169: \de\CompTreeStageB{\tx{$\CompTreeStage^B$}}
1170: \de\CompTreeStagexA{\tx{$\CompTreeStage\,_\xtts^A$}}
1171: \de\CompTreexA{\tx{$\CompTree\,_\xtts^A$}}
1172: \de\CompalA{\tx{$\Comp_\al(A)$}}
1173: \de\ConcRep{\tx{\bi ConcRep}}
1174: \de\ConcRepA{\tx{$\ConcRep(A)$}}
1175: \de\Cua{\tx{$C^\ua$}}
1176: \de\Dal{\tx{$D_\al$}}
1177: \de\Dals{\tx{$D_{\al,s}$}}
1178: \de\Dalu{\tx{$D_\al^u$}}
1179: \de\Dalbar{\tx{$D_\albar$}}
1180: \de\Dalbars{\tx{$D_{\albar,s}$}}
1181: \de\Du{\tx{$D^u$}}
1182: \de\Dx{{\tx{$D^*$}}}
1183: \de\Dxal{{\tx{$D^*_\al$}}}
1184: \de\Dxalbar{\tx{$D^*_\albar$}}
1185: \de\Dxalbars{\tx{$D^*_{\albar,s}$}}
1186: \de\Dxbar{\tx{$\ol{D^*}$}}
1187: \de\FAPCS{\tx{\bi FAPCS}}
1188: \de\Findroots{\tx{\sf Findroots}}
1189: \de\IIIp{\tx{$\III_p$}}
1190: \de\IIItN{\tx{$\III_t^N$}}
1191: \de\Iq{\tx{$I^q$}}
1192: \de\LQQe{\tx{$\tx{L}(\QQ,\es)$}}
1193: \de\LU{\tx{\bf LU}}
1194: \de\LUF{\tx{$\LU_F$}}
1195: \de\LUs{\tx{\smallbf LU}}
1196: \de\LUFs{\tx{$\LUs_F$}}
1197: \de\Lp{\tx{$L^p$}}
1198: \de\MC{\tx{\bf MC}}
1199: \de\MCF{\tx{$\MC_F$}}
1200: \de\MCs{\tx{\smallbf MC}}
1201: \de\MCFs{\tx{$\MCs_F$}}
1202: \de\NNNN{\tx{$\NN^\NN$}}
1203: \de\NNtoAs{\tx{$[\NN\to \!A_s]$}}
1204: \de\NNua{\tx{$\NN^\ua$}}
1205: \de\Nbials{\tx{$\Nbi_{\al,s}$}}
1206: \de\Nbialu{\tx{$\Nbi_{\al,u}$}}
1207: \de\Nbis{\tx{$\Nbi_s$}}
1208: \de\Nbiu{\tx{$\Nbi_u$}}
1209: \de\Omal{\tx{$\Om_\al$}}
1210: \de\Omali{\tx{$\Om_{\al,i}$}}
1211: \de\Omalbar{\tx{$\Om_\albar$}}
1212: \de\Omalbars{\tx{$\Om_{\albar,s}$}}
1213: \de\Omalbarreal{\tx{$\Om_{\albar,\realss}$}}
1214: \de\Omalbaru{\tx{$\Om_\albar^u$}}
1215: \de\Omalbarvua{\tx{$\Omalbarv^\ua$}}
1216: \de\Omalbarv{\tx{$\Om_\albar^v$}}
1217: \de\Omalbarw{\tx{$\Om_\albar^w$}}
1218: \de\Omalreal{\tx{$\Om_{\al,\realss}$}}
1219: \de\Omals{\tx{$\Om_{\al,s}$}}
1220: \de\Omalu{\tx{$\Om_\al^u$}}
1221: \de\Ombe{\tx{$\Om_\be$}}
1222: \de\Ombes{\tx{$\Om_{\be,s}$}}
1223: \de\Ombeu{\tx{$\Om_\be^u$}}
1224: \de\Ombev{\tx{$\Om_\be^v$}}
1225: \de\Ombew{\tx{$\Om_\be^w$}}
1226: \de\Oms{\tx{$\Om_s$}}
1227: \de\Omxs{\tx{$\Om^*_s$}}
1228: \de\PAN{\tx{$P^{A^N}$}}
1229: \de\PAn{\tx{$P^A_n$}}
1230: \de\PAua{\tx{$\PA^\ua$}}
1231: \de\PEabc{\tx{$\PE_\abctts$}}
1232: \de\PEabcA{\tx{$\PE\,_\abctts^A$}}
1233: \de\PPPom{\tx{$\PPP_\om$}}
1234: \de\PPPomp{\tx{$\PPP_\om^+$}}
1235: \de\PPPfin{\tx{$\PPP_\fin$}}
1236: \de\PPPfinp{\tx{$\PPP_\fin^+$}}
1237: \de\PTerms{\tx{$\PTerm_s$}}
1238: \de\PTermx{\tx{$\PTerm_{\,\xtts}$}}
1239: \de\PTermxs{\tx{$\PTerm_{\,\xtts,s}$}}
1240: \de\PfA{\tx{$P_f^A$}}
1241: \de\Pfs{\tx{$P_\fs$}}
1242: \de\Procabc{\tx{$\Proc\,_\abctts$}}
1243: \de\PsqcupA{\tx{$P_\sqcup^A$}}
1244: \de\QA{\tx{$Q^A$}}
1245: \de\QN{\tx{$\QQ^\NN$}}
1246: \de\RRRLN{\tx{$\RRR^{<,N}$}}
1247: \de\RRRi{\tx{$\RRR_1$}}
1248: %\de\RRRinv{\tx{$\RRR_{\invs}$}}
1249: \de\RRRo{\tx{$\RRR_0$}}
1250: \de\RRRp{\tx{$\RRR_p$}}
1251: \de\RRRtN{\tx{$\RRR_t^N$}}
1252: \de\Rat{\tx{\bi Rat\/}}
1253: \de\RestA{\tx{$\Rest\,^A$}}
1254: \de\RestB{\tx{$\Rest\,^B$}}
1255: \de\RestxA{\tx{$\Rest\,_\xtts^A$}}
1256: \de\SE{\tx{\bi SE}}
1257: \de\SExA{\tx{$\SE\,_\xtts^A$}}
1258: \de\Sf{\tx{$S_\fs$}}
1259: \de\SigRRR{\tx{$\Sig(\RRR)$}}
1260: \de\Sigf{\tx{$\Sig_\fs$}}
1261: \de\Sinit{\tx{$S_{init}$}}
1262: \de\StateAcupxua{\tx{$\StateA\cup\{*,\ua\}$}}
1263: \de\StateAua{\tx{$\StateA^\ua$}}
1264: \de\StateB{\tx{$\State(B)$}}
1265: \de\StatesA{\tx{$\State_s(A)$}}
1266: \de\Statex{\tx{$\State\,_\xtts$}}
1267: \de\StatexA{\tx{$\State\,_\xtts(A)$}}
1268: \de\StatexAua{\tx{$\State\,_\xtts(A)^\ua$}}
1269: \de\Stmtx{\tx{$\Stmt_{\,\xtts}$}}
1270: \de\TExsA{\tx{$\TE\,_{\xtts,s}^A$}}
1271: \de\PTExsA{\tx{$\PTE\,_{\xtts,s}^A$}}
1272: \de\Terms{\tx{$\Term_s$}}
1273: \de\Termx{\tx{$\Term_{\,\xtts}$}}
1274: \de\Termxs{\tx{$\Term_{\,\xtts,s}$}}
1275: \de\Tree{\tx{\bi Tree}}
1276: \de\WhileCC{\tx{\bi WhileCC\/}}
1277: \de\WhileCCSig{\WhileCC(\Sig)}
1278: \de\WhileCCbig{\tx{\bigbi WhileCC}}
1279: \de\WhileCCx{\tx{$\WhileCC^\starb$}}
1280: \de\WhileCCxSig{\WhileCCx(\Sig)}
1281: \de\WhileCCxSigN{\WhileCCx(\SigN)}
1282: \de\WhileCCxbig{\tx{$\WhileCCbig^\starb$}}
1283: \de\XXXo{\tx{$\XXX_0$}}
1284: \de\Xal{\tx{$(X,\al)$}}
1285: \de\Xals{\tx{$X_{\al,s}$}}
1286: \de\Xalu{\tx{$X_\al^u$}}
1287: \de\Xalbar{\tx{$X_\albar$}}
1288: \de\Xalbars{\tx{$X_{\albar,s}$}}
1289: \de\Xnorm{\tx{$(X,\,\normfn)$}}
1290: \de\Xu{\tx{$X^u$}}
1291: \de\Xs{\tx{$X_s$}}
1292: \de\Xsal{\tx{$(X_s,\al)$}}
1293: \de\Xx{{\tx{$X^*$}}}
1294: \de\Xxal{{\tx{$X^*_\al$}}}
1295: \de\Xxalbar{\tx{$X^*_\albar$}}
1296: \de\Xxalbars{\tx{$X^*_{\albar,s}$}}
1297: \de\Xxbar{\tx{$\ol{X^*}$}}
1298: \de\Xua{\tx{$X^\ua$}}
1299: \de\Yua{\tx{$Y^\ua$}}
1300: \de\Zua{\tx{$Z^\ua$}}
1301: \de\abctt{{\tx{$\att,\btt,\ctt$}}}
1302: \de\abctts{{\tx{$\atts,\btts,\ctts$}}}
1303: \de\aexAbe{\tx{$\aee\,_\xtts^\Abes$}}
1304: \de\alalbar{\tx{$(\al,\albar)$}}
1305: \de\albars{{\tx{$\albar_s$}}}
1306: \de\albarreal{{\tx{$\albar_\realss$}}}
1307: \de\albaru{{\tx{$\albar^u$}}}
1308: \de\albarv{{\tx{$\albar^v$}}}
1309: \de\albarx{{\tx{$\ol\alx$}}}
1310: \de\albarxs{{\tx{$\ol \alxs$}}}
1311: \de\alreal{{\tx{$\alpha_\realss$}}}
1312: \de\als{{\tx{$\alpha_s$}}}
1313: \de\alu{{\tx{$\alpha^u$}}}
1314: \de\alx{{\tx{$\alpha^*$}}}
1315: \de\alxs{{\tx{$\alpha_s^*$}}}
1316: \de\bes{{\tx{$\beta_s$}}}
1317: \de\beu{{\tx{$\beta^u$}}}
1318: \de\bev{{\tx{$\beta^v$}}}
1319: \de\bigomp{{}_{\dz\om}^{\dz+}}
1320: \de\bimaprighturaise#1#2{\bimapright^{\raise#1pt\hbox{$\dz{#2}$}}}
1321: \de\cP{\cnr{P}}
1322: \de\cS{\cnr{S}}
1323: \de\choicesttx{\tx{\tt choices\str}}
1324: \de\choosezb{\tx{$\chooses \ \ztt:b$}}
1325: \de\choosezt{\tx{$\chooses \ \ztt:t$}}
1326: \de\comp{\tx{\rm comp}}
1327: \de\complength{\tx{\bi complength}}
1328: \de\complengthxAbe{\tx{$\complength\,_\xtts^\Abes$}}
1329: \de\compseq{\tx{\bi compseq}}
1330: \de\compseqxAbe{\tx{$\compseq\,_{\xtts}^\Abes$}}
1331: \de\compstage{\tx{\bi compstage}}
1332: \de\compstagexA{\tx{$\compstage\,_{\xtts}^A$}}
1333: \de\compstep{\tx{\bi compstep}}
1334: \de\compstepxAbe{\tx{$\compstep\,_{\xtts}^\Abes$}}
1335: \de\comptree{\tx{\bi comptree}}
1336: \de\comptreexA{\tx{$\comptree\,_\xtts^A$}}
1337: \de\delbA{\tx{$\delb_A$}}
1338: \de\delbAu{\tx{$\delb_A^u$}}
1339: \de\delbAv{\tx{$\delb_A^v$}}
1340: \de\delbAw{\tx{$\delb_A^w$}}
1341: \de\delbs{\tx{$\delb^s$}}
1342: \de\delbsA{\tx{$\delb^s_A$}}
1343: \de\delbu{\tx{$\delb^u$}}
1344: \de\delbuA{\tx{$\delb^u_A$}}
1345: \de\domal#1{\tx{$\tx{\bi dom}_\albar(#1)$}}
1346: \de\dsH{\tx{$\ds_\Hss$}}
1347: \de\dss{\tx{$\ds_s$}}
1348: \de\dsu{\tx{$\ds_u$}}
1349: \de\dsx{\tx{$\ds^*$}}
1350: \de\dsxs{\tx{$\ds^*_s$}}
1351: \de\ebarn{\tx{$\ebar[n]$}}
1352: \de\econk{\tx{$e_{\conss[k]}$}}
1353: \de\eqp{\tx{$\eqs_p$}}
1354: \de\enumSig{\tx{$\enum_\Sig$}}
1355: \de\enumC{\tx{$\enums_C$}}
1356: \de\enumX{\tx{$\enums_X$}}
1357: \de\enums{\tx{\sf enum}}
1358: \de\evalG{\tx{$\eval_G$}}
1359: \de\expmins{\tx{\sf expmin}}
1360: \de\fin{{\tx{\rm fin}}}
1361: \de\fmin{\tx{$f^-$}}
1362: \de\foralls{\tx{\sf forall}}
1363: \de\fua{\tx{$f^\ua$}}
1364: \de\gua{\tx{$g^\ua$}}
1365: \de\haltt{\tx{\tt halt}}
1366: \de\hyphenCCb{\tx{\bi -CC}}
1367: \de\invR{\tx{$\invs^\RRR$}}
1368: \de\invs{\tx{\sf inv}}
1369: \de\isints{\tx{\sf isint}}
1370: \de\iI{\tx{$\is_I$}}
1371: \de\iN{\tx{$\is_N$}}
1372: \de\kapn{\tx{$\kap[n]$}}
1373: \de\kbarn{\tx{$\kbar[n]$}}
1374: \de\lp{\tx{$\ell^p$}}
1375: \de\lsp{\tx{$\lss_p$}}
1376: \de\norm#1{\tx{$\|#1\|$}}
1377: \de\normfn{\tx{$\|\cdot\|$}}
1378: \de\peabcAbe{\tx{$\pe\,_\abctts^\Abes$}}
1379: \de\piv{\tx{\rm piv}}
1380: \de\pivo{\tx{$\piv_0$}}
1381: \de\pivom{\tx{$\piv_\om$}}
1382: \de\pteboolsAbe{\tx{$\pte\,_{\boolss,s}^\Abes$}}
1383: \de\ptexsAbe{\tx{$\pte\,_{\xtts,s}^\Abes$}}
1384: \de\qchooses{\tx{`\chooses'}}
1385: \de\restxAbe{\tx{$\restt\,_\xtts^\Abes$}}
1386: \de\scalars{\tx{\sf scalar}}
1387: \de\sexAbe{\tx{$\se\,_\xtts^\Abes$}}
1388: \de\sigG{\tx{$\sig_G$}}
1389: \de\sigs{\tx{$\sig_s$}}
1390: \de\sigzn{\sig\zn}
1391: \de\spaces{\tx{\sf space}}
1392: \de\sprod{\tx{${s_1}\times\dots\times {s_n}$}}
1393: \de\statex{\tx{$\state\,_\xtts$}}
1394: \de\statexA{\tx{$\state\,_\xtts(A)$}}
1395: \de\taun{\tx{$\tau[n]$}}
1396: \de\texboolA{\tx{$\te\,_{\boolss,s}^A$}}
1397: \de\tom{\to_\om}
1398: \de\tomp{\to_\om^+}
1399: \de\totop{\toto^+}
1400: \de\truncs{\tx{\sf truncs}}
1401: \de\vart{\tx{\bi vart}}
1402: \de\vartxbe{\tx{$\vart\,_\xtts^\ssbe$}}
1403: \de\vectors{\tx{\sf vector}}
1404: \de\xo{\tx{$x_0$}}
1405: \de\zn{\{\ztt/n\}}
1406:
1407: \redefine\Ds{\tx{$D_s$}}
1408:
1409:
1410:
1411: % *** END OF HEADERS, START OF TEXT ***
1412:
1413:
1414:
1415: \cbb{Abstract versus Concrete Computation on Metric Partial Algebras}
1416: \bigskip
1417: \bigskip
1418: \ce{{\bf J.V. Tucker}
1419: }
1420: \sn
1421: \ce{\it Department of Computer Science,}
1422: \ce{\it University of Wales, Swansea SA2 8PP, Wales}
1423: \ce{\tt J.V.Tucker@swansea.ac.uk}
1424: \mn
1425: \ce{{\bf J.I. Zucker}\footnotemark"*"}
1426: \footnotetext"*\ "{
1427: \n The research of the second author was supported
1428: by a grant from the Natural Sciences
1429: and Engineering Research Council (Canada)
1430: and by a Visiting Fellowship from the Engineering
1431: and Physical Sciences Research Council (U.K.)
1432: }
1433: \nl
1434: \ce{\it Department of Computing and Software,}
1435: \ce{\it McMaster University, Hamilton, Ont\. L8S 4L7, Canada}
1436: \ce{\tt zucker@mcmaster.ca}
1437: \bn
1438: \bn
1439:
1440: \cbb{Abstract}
1441: \mn
1442: {\narrower\smallrm
1443: Data types containing infinite data, such as the real
1444: numbers, functions, bit streams and waveforms, are
1445: modelled by topological many-sorted algebras. In the
1446: theory of computation on topological algebras there is a
1447: considerable gap between so-called abstract and concrete
1448: models of computation. We prove theorems that bridge the
1449: gap in the case of metric algebras with partial operations.
1450:
1451: With an abstract model of computation on an algebra, the
1452: computations are invariant under isomorphisms and do not
1453: depend on any representation of the algebra. Examples of
1454: such models are the \qwhiles\ programming language and the BCSS model.
1455: With a concrete model of computation, the computations
1456: depend on the choice of a representation of the algebra
1457: and are not invariant under isomorphisms. Usually, the
1458: representations are made from the set \NN\ of natural numbers,
1459: and computability is reduced to classical computability
1460: on \NN. Examples of such models are computability via
1461: effective metric spaces, effective domain representations, and type
1462: two enumerability.
1463:
1464: The theory of abstract models is stable:
1465: there are many models of computation, and conditions under
1466: which they are equivalent are largely known. The theory
1467: of concrete models is not yet stable, though it seems to be
1468: converging: several interesting models are known to be
1469: equivalent over special types of topological algebra. We
1470: investigate the problem of comparing the two types of
1471: models and, hence, establishing a unified and stable theory of
1472: computation for topological algebras.
1473:
1474: First, we show that to compute functions on topological
1475: algebras using an abstract model, it is necessary
1476: that one must use algebras with partial operations and
1477: computable functions that are continuous and multivalued.
1478: This multivaluedness is needed even to compute
1479: single-valued functions, and so {\it abstract models must
1480: be nondeterministic even to compute deterministic
1481: problems\/}. Then we choose the \qwhiles-array programming language
1482: as an abstract model for computing on any data type,
1483: and extend it with a nondeterministic assignment
1484: of ``countable choice". This is the new \WhileCCx\ model.
1485: Finally, we introduce the notion of approximable multivalued
1486: computation on metric algebras. As a concrete model,
1487: we choose effective metric spaces.
1488: Among a number of results we prove the following.
1489:
1490: For any metric algebra $A$ with an effective representation,
1491: any function \WhileCCx\ approximable over $A$ is computable
1492: in the effective representation of the metric algebra
1493: $A$. Conversely, we show that, under certain reasonable
1494: conditions on the effective metric algebra $A$, any
1495: function that is effective is also \WhileCCx\ approximable. We
1496: give an equivalence theorem, and examples
1497: of algebras where equivalence holds.
1498:
1499: }
1500:
1501: \bn
1502: {\bf Keywords:\/}
1503: {\smallrm
1504: data types, abstract models of computation, concrete models of computation,
1505: partial algebra, \qwhiles\ language, countable choice, nondeterminism,
1506: multivalued functions, metric algebras, topological algebras,
1507: approximation by \qwhiles\ programs, effective metric spaces,
1508: effective Banach spaces}
1509:
1510:
1511: \Shead0{Introduction}
1512: The theory of data in computer science is based on many sorted algebras
1513: and homomorphisms. The theory originates in the 1960s, and has
1514: developed a wealth of theoretical concepts, methods and techniques for
1515: the specification, construction, and verification of software and
1516: hardware systems. It is a significant achievement in computer science
1517: and has exerted a profound influence on programming
1518: \cite{wirsing,adj78,meseguer-goguen}.
1519: However, given the
1520: absolutely fundamental nature of its subject matter --- data --- there are
1521: many fascinating and significant open problems. An important general
1522: problem is:
1523:
1524: {\displaytext
1525: To develop a comprehensive theory of specification, computation and
1526: reasoning with infinite data.
1527:
1528: }
1529: By infinite data we mean real numbers, spaces of functions, streams of
1530: bits or reals, waveforms, multidimensional graphics objects, video, and
1531: analogue and digital interfaces. The application areas are obvious:
1532: scientific modelling and simulation, embedded systems, graphics and
1533: multimedia communications.
1534:
1535: Data types containing infinite data are modelled by topological
1536: many-sorted algebras. In this paper we consider computability theory
1537: on topological algebras and investigate the problem
1538:
1539: {\displaytext
1540: To compare and integrate high-level, representation independent,
1541: abstract models of computation with low-level, representation dependent,
1542: concrete models of computation in topological algebras.
1543:
1544: }
1545: Computability theory lies at the technical heart of
1546: theories of both specification
1547: and reasoning about such systems. There are many disparate ways of defining
1548: computable functions on topological algebras and some have (different)
1549: significant mathematical theories.
1550: In the case of real numbers one can contrast the approaches in books such as
1551: \cite{aberth80,aberth01,pourel-richards,weih:book,bcss}.
1552:
1553: Generally speaking, the models
1554: of computation for an algebra can be divided into two kinds: the
1555: {\it abstract\/} and {\it concrete\/}.
1556:
1557: With an {\it abstract model of computation\/} for an algebra the programs
1558: do not depend on any representation of
1559: the algebra and are
1560: invariant under isomorphisms.
1561: Abstract models originated in the late 1950s in formalising
1562: flowcharts, and include program schemes and
1563: many general models of recursion.
1564: Examples of such models are the \,\While\ \,
1565: programming language over any algebra
1566: and the
1567: Blum-Cucker-Shub-Smale model \cite{bss,bcss}
1568: over the rings of real or complex numbers.
1569: The theory of abstract models is stable: there are
1570: many models of computation and the conditions under which they are
1571: equivalent are largely known \cite{tz:book,tz:hb}.
1572: For example, \qwhiles\ programs, flow charts, register machines,
1573: Kleene schemes, etc., are equivalent on {\it any\/} algebra;
1574: the BCSS models are simply instances obtained
1575: by choosing the algebra appropriate to the
1576: ring or ordered ring.
1577:
1578: With a {\it concrete model of computation\/} for an algebra the programs
1579: and computations are not
1580: invariant under isomorphisms, but depend on the choice
1581: of a representation of the algebra. Usually, the representations are
1582: made from the set \NN\ of natural numbers, and computability on an algebra
1583: is reduced to classical computability on \NN.
1584: Concrete models originated in the 1940s, in formalising the computable
1585: functions on real numbers.
1586: Examples of general models are
1587: computability via
1588: \bull
1589: effective metric spaces \cite{moscho64},
1590: \bull
1591: computable sequence structures \cite{pourel-richards},
1592: \bull
1593: domain representations
1594: \cite{stolt-jvt88,stolt-jvt95,edalat95:icomp,edalat97}, and
1595: \bull
1596: type two enumerability \cite{weih:book}.
1597:
1598: \n
1599: The theory of concrete models
1600: is not stable though it seems to be converging: several basic models are
1601: known to be equivalent in special cases (see, \eg, \cite{stolt-jvt99:tcs}
1602: where the four general approaches above are shown to be
1603: equivalent).
1604:
1605: In the theory of computation on algebras, abstract models are implemented
1606: by concrete models. Thus, the gap between the models is the gap between
1607: high level programming abstractions
1608: and low level implementations, and can be explored in
1609: terms of the following concepts:
1610:
1611:
1612:
1613: \bul
1614: {\it Soundness of abstract model\/}:
1615: The functions computable in the abstract model
1616: are also computable in the concrete model.
1617: \bul
1618: {\it Adequacy of abstract model\/}:
1619: The functions computable in the concrete model
1620: are computable in the abstract model.
1621: \bul
1622: {\it Completeness of abstract model\/}:
1623: Functions are computable in the abstract model
1624: if, and only if, they are computable in the concrete model.
1625:
1626: \n
1627: However, there is a considerable gap between abstract and concrete
1628: models of computation, especially over topological data types. For
1629: example, the popular abstract model in \cite{bcss} is {\it not\/} sound
1630: for the main
1631: concrete models because of its assumptions about
1632: the total computability of relations such as equality.
1633: Equality on the real numbers is not everywhere continuous,
1634: but in all the concrete models
1635: computable functions are continuous
1636: (\cf\ Ceitin's Theorem \cite{moscho64}).
1637: The connection between abstract and concrete models of
1638: computation on the real numbers is examined in \cite{tz:top}
1639: where approximation by \qwhiles\ programs
1640: over a {\it particular\/} algebra
1641: was shown to be equivalent to the standard
1642: concrete model of GL computability over the unit interval.
1643:
1644: First attempts at bridging the gap for all topological algebras
1645: in general have been made in
1646: \cite{brattka96,brattka:thesis},
1647: using a generalisation of recursion schemes (abstract
1648: computability) and Weihrauch's type two enumerability (concrete
1649: computability). Here we investigate further the problems in comparing
1650: the two classes of models and in establishing a unified and stable theory
1651: of computation on topological algebras. We prove new theorems that bridge
1652: the gap in the case of computations on metric algebras with partial
1653: operations.
1654:
1655: By reflecting on a series of examples,
1656: we show that to compute functions on topological algebras, it is
1657: necessary that one must consider
1658:
1659: \itemm{($i$)}
1660: algebras with partial operations,
1661: \itemm{($ii$)}
1662: computable functions that are both continuous and multivalued, and
1663: \itemm{($iii$)}
1664: approximations by abstract programs.
1665:
1666: \n
1667: In particular, {\it multivalued functions are needed, even to compute
1668: single-valued functions\/}. Thus, to prove an equivalence between abstract and
1669: concrete models we must
1670: include a nondeterministic construct to define
1671: multivalued functions, and in this way
1672: use nondeterministic abstract models even to
1673: compute deterministic problems.
1674: We find that
1675:
1676: {\displaytext
1677: imperative and other abstract programming
1678: models must be nondeterministic to express even simple programs on
1679: topological data types.
1680:
1681: }
1682: We choose the \,\While\ \,programming language as an abstract model for
1683: computing on any data type, and extend it with the {\it nondeterministic
1684: assignment of countable choice\/} having the form:
1685: $$
1686: \xtt\ ::= \ \chooses\ \ztt: b(\ztt, \xtt, \ytt)
1687: $$
1688: where \ztt\ is a natural number variable and $b$ is a Boolean-valued
1689: operation. This new model is called \,\WhileCCx\ \,computability
1690: (`{\it CC\/}' for ``countable choice",
1691: `\str' for array variables.) \,In particular,
1692: we introduce a notion of {\it approximable multivalued computation\/}, and
1693: formulate and prove the continuity of their semantics.
1694: We thus have the partial multivalued functions
1695: approximable by a \WhileCCx\ program on $A$.
1696:
1697: As a concrete model, we choose {\it effective metric spaces\/};
1698: this is known to
1699: be equivalent with several other concrete models.
1700: In computation with effective metric spaces $A$ we pick an enumeration
1701: \al\ of a subspace $X$ of $A$, and construct the subspace
1702: \,\CalX\ \,of \al-computable elements of $A$, enumerated by \albar.
1703: We thus have the partial functions computable on \,\CalX\
1704: \,in the representation \albar.
1705:
1706: We then prove two theorems that can be summarised
1707: (a little loosely) as follows.
1708:
1709: \n
1710: {\bi Soundness Theorem\/}: \sl Let $A$ be any metric partial algebra with an
1711: effective representation \al.
1712: Suppose \,\CalX\ \,is a subalgebra of $A$, effective under \albar.
1713: Then any function $F$ on $A$
1714: that is
1715: \WhileCCx\ \,approximable over $A$ is computable on \,\CalX\ \,in \albar.
1716: \endpr
1717:
1718: The soundness theorem is technically involved but quite general,
1719: and gives new insight into the semantics of
1720: imperative programs applied to topological data types.
1721: The converse theorem is more restricted in its data types:
1722:
1723: \n
1724: {\bi Adequacy Theorem\/}:
1725: \sl Let $A$ be any metric partial algebra A with an
1726: effective representation \al. Suppose the representation \al\ is \,\WhileCCx\
1727: \,computable and dense. Then any function \,$F\: A \to A$
1728: \,that is computable on \,\CalX\ \,in \albar\
1729: and effectively locally uniformly continuous in \al\
1730: is \,\WhileCCx\ \,approximable over $A$.
1731: \endpr
1732:
1733: These are combined into a {\bi Completeness Theorem\/}.
1734:
1735: The proper statements of these theorems are given as
1736: Theorems A, B and C (in Sections 6, 7 and 8).
1737: Some interesting applications to algebras of real numbers and to
1738: Banach spaces are studied.
1739:
1740: Here is the structure of the paper. We begin, in Section 1, by
1741: explaining the role of partiality, continuity and multivaluedness
1742: in computation, using simple examples on the real numbers.
1743: In Section 2 we describe topological
1744: and metric partial algebras and their extensions. In Section 3 we
1745: introduce the \,\WhileCCx\ \,language, give it an algebraic semantics,
1746: and define approximable \,\WhileCCx\ \,computability.
1747: We will see that the \WhileCCx\ \,language has a complex
1748: semantics. However on total algebras it defines precisely the
1749: \Whilex\ \,computable functions.
1750: Section 4 is devoted to examples. In Section 5 we prove the
1751: continuity of these \,\WhileCCx\ \,computable multivalued functions. In Section
1752: 6 we introduce our concrete model, effective metric spaces,
1753: and prove a Soundness Theorem (Theorem $A_0$) for the special case
1754: of surjective enumerations
1755: of countable (not necessarliy metric) algebras.
1756: In Section 7
1757: we define the subspace (or subalgebra)
1758: of elements computable in a metric algebra,
1759: and then prove the more general Soundness Theorem
1760: (Theorem A) and, in Section 8, the Adequacy Theorem (Theorem B).
1761: These are combined into a Completeness Theorem (Theorem C)
1762: in Section 9.
1763: Concluding remarks are made in Section 10.
1764:
1765: This work is part of a research programme --- starting in \cite{tz:book}
1766: and most recently surveyed in \cite{tz:hb} ---
1767: on the theory of computability on algebras, and its application to
1768: specifiability and verifiability in different areas of computer science
1769: and mathematics. Specifically, it has developed from our studies of real
1770: and complex number computation in \cite{tz:sanantonio,tz:top,tz:hb},
1771: stream algebras in \cite{tz:prague,tz:markt}
1772: and metric algebras in \cite{tz:spec}.
1773:
1774: We thank Vasco Brattka and Kristian Stewart for
1775: invaluable discussions.
1776:
1777: \bn
1778:
1779: \itemm{\bbf1\ \ }{\bbf Nondeterminism, many-valuedness, non-extensionality,
1780: \nl
1781: continuity and partiality: \,Some real number examples}
1782: \sn
1783: When one considers the relation between abstract and concrete models,
1784: a number of intriguing problems appear.
1785: We explain them by considering a series of examples.
1786: Then we formulate our strategy for solving these problems.
1787:
1788:
1789: Our chosen abstract and concrete models are introduced later (in
1790: Sections 3 and 5, respectively), so we must explain the problems of computing
1791: on the real number data type in rather general terms. First, we sketch
1792: the abstract and concrete forms of the real number data type. The
1793: picture for topological algebras in general will be clear from the
1794: examples.
1795:
1796: \newpage
1797:
1798: \itemm{\bf 1.1}
1799: {\bf Abstract versus concrete data types of real numbers;
1800: \,Continuity;
1801: \nl
1802: Partiality}
1803: \sheadrun{1.1.1}{Abstract and concrete data types of reals}
1804: To compute on the set \RR\ of real numbers with an
1805: abstract model of computation, we have only to select an
1806: algebra $A$ in which \RR\ is a carrier set. Abstract
1807: computability on an algebra $A$ is a computability {\it relative
1808: to\/} $A$: a function is computable over $A$ if it can
1809: be programmed from the operations of $A$ using the programming constructs
1810: of the abstract model. Clearly, there are infinitely many choices
1811: of operations with which to make an algebra $A$, and hence
1812: there are infinitely many choices of classes of abstractly computable
1813: functions. All the classes of abstractly computable functions on \RR\
1814: have decent mathematical theories, resembling the theory of
1815: the computable functions on the natural numbers --- thanks to
1816: the general theory of computable functions on many sorted
1817: algebras \cite{tz:hb}.
1818:
1819:
1820: In contrast, to compute on \RR\ with a concrete model
1821: of computation, we choose an appropriate concrete
1822: representation $R$, and map
1823: $$
1824: \al\: R\ \to\ \RR
1825: $$
1826: where $R$ is an algebra made from the set \NN\ of natural numbers.
1827: For example, the map will be based on the fact that the reals
1828: can be built from the rationals, and hence the
1829: naturals, in a variety of equivalent ways (such
1830: as Cauchy sequences, decimal expansions, etc.). The
1831: computability of functions on the reals is
1832: investigated using the theory of computable functions on
1833: \NN, applied to \RR\ via \al.
1834:
1835:
1836: To compare this computation theory with abstract models, we
1837: choose an algebra $A$ in which \RR\ is a carrier set
1838: and, in particular, the operations of $A$ are computable with
1839: respect to the representation \al. For example, multiplication by 3 is not
1840: computable in the decimal representation, but the field
1841: operations on \RR\ are computable in the Cauchy sequence
1842: representation.
1843:
1844:
1845: We assume that our concrete model is the subspace \,\CS\
1846: \,of Baire space \,\NNNN\
1847: \,consisting of codings of fast Cauchy sequences of rationals,
1848: \ie, sequences \,$(k_n)$ \,of naturals such that
1849: for all $n$ and all $m>n$, \,$|r_{k_m} - r_{k_n}| < 2^{-n}$,
1850: where \,$r_0,r_1,r_2,\dots$
1851: \,is some standard enumeration of the rationals.
1852: The representing function
1853: $$
1854: \al\: \CS\ \to \ \RR
1855: $$
1856: is continuous and onto.
1857:
1858:
1859: \sheadrun{1.1.2}
1860: {Continuity}
1861: Computations with real numbers involve infinite data. The
1862: topology of \RR\ defines a process of
1863: approximation for infinite data; the functions on the
1864: data that are continuous in the topology are exactly the
1865: functions that can be approximated to any desired degree
1866: of precision.
1867:
1868: For abstract models we assume the algebra $A$ that contains
1869: \RR\ is a topological algebra, \ie, one in which
1870: the basic operations are continuous in its topologies. We expect
1871: further that all the computable functions will be continuous.
1872: The class
1873: of functions that can be abstractly computed exactly
1874: can be quite limited!
1875: With abstract models,
1876: approximate computations also turn out to be necessary \cite{tz:top}.
1877:
1878: In the concrete models, moreover, it follows from
1879: Ceitin's Theorem \cite{moscho64} that if a function
1880: is computable then it is continuous.
1881:
1882: Thus, in both abstract and concrete approaches, an analysis
1883: of basic concepts shows that
1884: computability implies continuity.
1885:
1886: \sheadrun{1.1.3}
1887: {Partiality}
1888: In computing with an abstract model on $A$ we assume
1889: $A$ has some boolean-valued functions to test data. For
1890: example, in computing on \RR\ we need to
1891: use the functions
1892: $$
1893: =_R\: \RR^2 \ \to \ \BB\ \qquad\tx{and}\qquad <_R\: \RR^2 \ \to\ \BB
1894: $$
1895: where \,$\BB = \curl{\ttt,\fff}$
1896: \,is the set of booleans.
1897:
1898: Use of these functions presents a problem, since
1899: total continuous boolean-valued functions on the reals
1900: must be constant.
1901: This is because the only continuous functions from a connected space
1902: to a discrete space are the constant functions.
1903: Furthermore,
1904: in \cite{tz:top} it was shown that on connected total topological algebras,
1905: the \qwhiles\ and \qwhiles-array computable functions
1906: are precisely the functions explicitly definable by terms over the algebra.
1907:
1908: To study the full range of real number computations, we
1909: must therefore redefine these tests as {\it partial\/}
1910: boolean-valued functions.
1911: Computation with partial algebras has interesting effects
1912: on the theory of computable functions,
1913: as indicated in \cite{tz:top}.
1914:
1915: On the basis of these preliminary remarks on the data type of reals, we
1916: turn to the examples.
1917:
1918: \shead{1.2}{Examples of nondeterminism and many-valuedness}
1919: We now look at three examples of computing functions on \RR.
1920: \Examplen{1.2.1: \,Pivot function} \ Define the function
1921: $$ \piv\:\RRn \ \pto\ \curly{1,\dots,n} $$ by $$
1922: \piv(\tup{x}1n) \ = \ \cases \tx{some}\ i: \ x_i\ne0
1923: \tif{such an $i$ exists}\\ \ua \ow \endcases \tag1 $$
1924: Computation of this pivot is a vital step in the Gaussian
1925: elimination algorithm for inverting matrices.
1926:
1927: Note that (depending on the precise semantics
1928: for the phrase ``some $i$" in (1))
1929: \,\piv\ \,is {\it nondeterministic\/} or (alternatively)
1930: {\it many-valued\/} on
1931: \,$\dom{\piv} = \RRn\backslash\curl0$.
1932: \ Further:
1933: \sn
1934: ($a$) \,There is no {\it single-valued\/} function
1935: which satisfies the definition (1) and is
1936: {\it continuous\/} on \,\RRn.
1937: For such a function,
1938: \,being continuous and integer-valued,
1939: would have to be constant
1940: on its domain \,$\RRn\backslash\curl0$,
1941: \,with constant value (say) $j\in\curly{1,\dots,n}$.
1942: But its value on the $x_j$-axis would have to be different from $j$,
1943: leading to a contradiction.
1944:
1945: \sn
1946: ($b$) \,However there {\it is\/} a computable (and hence continuous!)
1947: single-valued function
1948: $$
1949: \pivo\: \CSn\ \pto\ \curly{1,\dots,n}
1950: \tag2
1951: $$
1952: with a simple algorithm.
1953: Note however that \,\pivo\ \,is {\it not extensional\/} on
1954: \,\CSn\ \,(\ie, not well defined on \RRn),
1955: or (equivalently) the map (2) cannot be factored through
1956: \,\RRn:
1957: $$
1958: \commdiag{
1959: \CSn \cr
1960: \mapdown\lft{\dz\al} &\arrow(2,-1)\lft\bdot\rt{\raisebox3{\dz\pivo}}\cr
1961: \RRn &\mapright^\bdot_{\dz\tx{?}}&\ \curly{1,\dots,n}
1962: }
1963: $$
1964: In effect, we can regain continuity (for a single-valued function),
1965: by foregoing extensionality.
1966:
1967: \sn
1968: ($c$)
1969: \,Alternatively, we can maintain continuity {\it and\/} extensionality
1970: by giving up single-valuedness.
1971: For the many-valued function
1972: $$
1973: \pivom\: \RRn\ \to \ \PPPom(\curl{1,\dots,n})
1974: $$
1975: (where \,$\PPPom(\dots)$
1976: \,denotes the set of countable subsets of \,\dots)
1977: defined by: \,for all $k\in\curl{1,\dots,n}$
1978: $$
1979: k\,\in\,\pivom(\tup{x}1n)\ \ifff\ x_k\ne0,
1980: $$
1981: is {\it extensional\/} and {\it continuous\/},
1982: where a function
1983: $$
1984: f\: A\ \to\ \PPPom(B)
1985: $$
1986: is defined to be continuous iff for all open $Y\sseq B$,
1987: $$
1988: f^{-1}[Y]\ := \ \curly{x\in A\br f(x)\cap Y \ne\nil}
1989: $$
1990: is open in $A$.
1991: (We will consider continuity of many-valued functions
1992: systematically in Section 5.)
1993:
1994: \Remarksn{1.2.2}
1995: ($i$) The many-valued function \,\pivom\ \,is ``tracked"
1996: (in a sense to be elucidated in Section 6)
1997: by (any implementation of) \,\pivo.
1998: \sn
1999: ($ii$) We could only recover continuity of the \,\piv\
2000: \,function by giving up either extensionality
2001: (as in ($b$)) or single-valuedness (as in ($c$)).
2002: \sn
2003: ($ii$) Note however that the complete algorithm for inverting matrices
2004: \,is {\it continuous\/} and {\it deterministic\/}
2005: (hence {\it single-valued\/})
2006: and {\it extensional\/},
2007: even though it contains \,\pivo\ \,as an essential
2008: component!
2009: \endpr
2010:
2011: \Examplen{1.2.3: \,``Choose" a rational arbitrarily near a real}
2012: \ Define a function
2013: $$
2014: F\: \RR\times\NN\ \to\ \NN
2015: $$
2016: by
2017: $$
2018: F(x,n) \ =\ \tx{``some"}\ k: \ \ds(x,r_k)\,<\,2^{-n}
2019: \tag3
2020: $$
2021: %where \,$r_k)_{k\in\om}$
2022: where (as before) \,$r_0,r_1,r_2,\dots$
2023: \,is some standard enumeration of the rationals.
2024: Note again (as in Example 1.1):
2025: \sn
2026: ($a$)
2027: \,There is no {\it single-valued, continuous\/} function $F$
2028: satisfying (3). This is because such a function, being continuous
2029: with discrete range space, would
2030: have to be constant in the first argument.
2031: \sn
2032: ($b$) \,But there {\it is\/} a single-valued computable (and continuous)
2033: function
2034: $$
2035: F_0\: \CS\times\NN\ \to\ \NN
2036: $$
2037: trivially -- just define
2038: $$
2039: F_0(\xi,n) \ = \ \xi_n.
2040: $$
2041: This is, again, {\it non-extensional\/} on \RR.
2042:
2043: \sn
2044: ($c$)
2045: \,Further, there is a {\it many-valued, continuous, extensional\/}
2046: function satisfying (1):
2047: $$
2048: F_\om\: \RR\times\NN\ \to\ \PPPom(\NN)
2049: $$
2050: where
2051: $$
2052: F_\om(x,n) \ = \ \curly{k\br \ds(x,r_k)<2^{-n}}.
2053: $$
2054:
2055: \Examplen{1.2.4: \,Finding the root of a function}
2056: \ This example is adapted from \cite{weih:book}.
2057: Consider the function $f_a$ shown in Figure 1,
2058: where $a$ is a parameter which can assume any real value.
2059:
2060: \midinsert
2061: \epsfxsize = 4.5in
2062: \ce{\epsfbox{fig1.eps}}
2063: \mn
2064: \ce{\sc Figure 1}
2065: \sn
2066: \endinsert
2067:
2068: \sn
2069: It is defined by
2070: $$
2071: f_a(x) \ = \
2072: \cases
2073: x+a+2 \ift{$x\le-1$}\\
2074: a-x \ift{$-1\le x\le1$}\\
2075: x+a-2 \ift{$1\le x$}.
2076: \endcases
2077: $$
2078: This function has either 1 or 3 roots, depending
2079: on the size of $a$.
2080: For $a<-1$, \,$f_a$ has a single (large positive) root;
2081: \,for $a>1$, \,$f_a$ has a single (large negative) root;
2082: \,and for
2083: $-1<a<1$, \,$f_a$ has three roots,
2084: two of which become equal when $a = \pm1$.
2085:
2086: Let $g$ be the (many-valued) function, such that
2087: $g(a)$ gives all the non-repeated roots of $f_a$.
2088: This is shown in Figure 2.
2089:
2090:
2091: \midinsert
2092: \epsfxsize = 2in
2093: \ce{\epsfbox{fig2.eps}}
2094: \mn
2095: \ce{\sc Figure 2}
2096: \sn
2097: \endinsert
2098:
2099: Again, we have the same situation as in the previous examples:
2100: \sn
2101: ($a$) \,We cannot choose a (single) root of $f_a$ continuously
2102: as a function of $a$.
2103: \sn
2104: ($b$) \,However, one can easily choose and compute
2105: a root of $f_a$ continuously as a function
2106: of a {\it Cauchy sequence representation\/} of $a$,
2107: \ie, non-extensionally in $a$.
2108: \sn
2109: ($c$) Finally, $g(a)$, as a {\it many-valued\/} function of $a$,
2110: is continuous.
2111: (Note that in order to have continuity,
2112: we must exclude the
2113: repeated roots of $f_a$, at \,$a=\pm1$.)
2114:
2115: \Remarkn{1.2.5}
2116: Other examples of a similar nature abound,
2117: and can be treated similarly; for example,
2118: the problem of finding, for a given real number $x$,
2119: an integer $n>x$.
2120: %The reader can easily provide the details.
2121: \endpr
2122:
2123: \newpage
2124:
2125: \shead{1.3}{Solutions for the abstract model}
2126: In the above three examples we have given:
2127: \itemm{($i$)}
2128: a number of single-valued functions
2129: \,$f\: \RR^n \to \RR$ \,that we want to compute;
2130: \itemm{($ii$)}
2131: arguments that they are not continuous;
2132: \itemm{($iii$)}
2133: a prima facie case that they cannot be abstractly computed on the
2134: abstract data type $A$ containing \RR\ because they are not continuous;
2135: \itemm{($iv$)}
2136: a prima facie case that they can be computed in the concrete data
2137: type \CS;
2138: \itemm{($v$)}
2139: arguments that they are selection functions for many-valued
2140: functions on \RR\ that are continuous.
2141:
2142: \n
2143: At the level of {\it concrete models\/} of computation,
2144: there is not really a problem with the
2145: issues raised by the above examples,
2146: since concrete models work only by
2147: computations on {\it representations\/}
2148: of the reals
2149: (say by Cauchy sequences),
2150: as described fully in Sections 5 and 7.
2151:
2152: The real problem arises with
2153: the construction of {\it abstract models\/}
2154: of computation on the reals
2155: which should model the phenomena illustrated by these examples,
2156: and should, moreover, correspond, in some sense,
2157: to the concrete models.
2158: Thus we have the question:
2159:
2160: {\displaytext
2161: Can such continuous many-valued functions be computed on the abstract
2162: data type $A$ containing \RR\ using new abstract models of computation? If
2163: they can, are the concrete and abstract models then equivalent?
2164:
2165: }
2166:
2167:
2168: The rest of this paper deals with these issues.
2169: We answer the above question more generally, over many-sorted
2170: partial metric algebras $A$.
2171:
2172:
2173: The solution presented in this paper is to extend the \Whilex\ \,programming
2174: language over $A$ \cite{tz:hb} with
2175: a nondeterministic ``countable choice" programming construct,
2176: so that in the rules of program term formation,
2177: $$
2178: \chooses \ \ztt:b
2179: $$
2180: is a new term of type \,\nats,
2181: \,where \,\ztt\ \,is a variable of type \,\nats
2182: \,and $b$ is a term of type \,\bools.
2183: We will revisit the examples after giving the language definition
2184: in Section 3.
2185:
2186:
2187: Alternatively, one could use other abstract models; for example,
2188: one can modify the \,\muPRx\
2189: \,function schemes \cite[\S8.1]{tz:hb}
2190: by replacing the constructive least number
2191: (\muu) operator
2192: $$
2193: f(x) \ \sq \ \mu z\in\NN[g(x,z) = \ttt],
2194: $$
2195: where $g$ is a boolean-valued function,
2196: by a nondeterministic
2197: choice operator:
2198: $$
2199: f(x) \ \sq \ \chooses \ z\in\NN[g(x,z) = \ttt].
2200: $$
2201:
2202: \mn
2203: Given suitable semantics,
2204: these two approaches turn out to be equivalent.
2205:
2206: In \cite{brattka:thesis} a more elaborate set of recursive schemes
2207: over many-sorted algebras,
2208: with many-valued operations, was presented.
2209:
2210: \Shead{2}{Topological partial algebras and continuity}
2211: We define some basic notions concerning
2212: topological and metric many-sorted partial algebras.
2213: We begin with some basic ideas and examples.
2214: \shead{2.1}{Basic algebraic definitions}
2215: A {\it signature} \Sig\ (for a many-sorted partial algebra)
2216: is a pair consisting of
2217: ($i$) a finite set \SortSig\ of {\it sorts},
2218: and ($ii$) a finite set \FuncSig\ of {\it (basic)
2219: function symbols},
2220: each symbol $F$ having a {\it type} \ $\tuptimes{s}{1}{m}\to s$,
2221: where $s_1 ,\ldots, s_m, s \in \SortSig$;
2222: in that case we write
2223: \ $F:\ \tuptimes{s}{1}{m}\to s$.
2224: \ (The case $m = 0$ corresponds to {\it constant symbols}.)
2225:
2226: A
2227: \Sig-{\it product type\/}
2228: has the form
2229: \ $u = \tuptimes{s}{1}{m}$ \ ($m\ge0$),
2230: where \,\tup{s}{1}{m} \,are \Sig-sorts.
2231: We use the notation
2232: \ $u,v,w,\dots$ \ for \Sig-product types.
2233:
2234: A partial \Sig-{\it algebra} $A$ has, for each sort $s$ of \Sig,
2235: a non-empty {\it carrier set} \,\As\
2236: \,of sort $s$,
2237: and for each \Sig-function symbol
2238: \ $F:\utos$,
2239: \ a partial function
2240: \ $\FA : \Au \pto \As$,
2241: \,where, for the \Sig-product type \ $u = \tuptimes{s}{1}{m}$,
2242: \ we write
2243: \ $\Au \ \eqdf \ A_{s_1} \times\dots\times A_{s_m}$.
2244: (The notation \,$f: X\pto Y$ \,refers in general to
2245: a partial function from $X$ to $Y$.)
2246:
2247: The algebra $A$ is {\it total} if
2248: \,\FA\ is total for each \Sig-function symbol $F$.
2249: Without such a totality assumption,
2250: $A$ is called {\it partial}.
2251:
2252: In this paper we deal mainly with partial algebras.
2253: {\it The default assumption is that ``algebra"
2254: refers to partial algebra.}
2255: We will, nevertheless, for the sake of emphasis,
2256: often speak explicitly of ``partial algebras".
2257:
2258: Given an algebra $A$, we write \,$\Sig(A)$ \,for its signature.
2259: %Also, we sometimes use a function symbol `$F$'
2260: %to stand for its interpretation \FA\
2261: %in $A$.
2262:
2263:
2264: \Examplesn{2.1.1}
2265: The following algebras will be used repeatedly as examples
2266: in this paper.
2267: All but one are total.
2268: \sn
2269: ($a$)
2270: \,The algebra of {\it booleans\/}
2271: has the carrier \ $\BB = \{\ttt,\,\fff\}$
2272: \ of sort \,\bools.
2273: The signature $\Sig(\BBB)$
2274: and algebra \BBB\ respectively can be displayed as follows:
2275: $$
2276: \boxed{
2277: \matrix \format\l&\quad\l\\
2278: \signatures &\Sig(\BBB)\\
2279: \sortss &\bools\\
2280: \functionss&\trues, \falses:\ \ \to\bools,\\
2281: &\ands, \ors:\bools^2\to\bools\\
2282: &\nots: \bools\to\bools\\
2283: \ends&
2284: \endmatrix
2285: }
2286: \quad
2287: \tx{and}
2288: \quad
2289: \boxed{
2290: \matrix \format\l&\quad\l\\
2291: \algebras &\BBB\\
2292: \carrierss &\BB\\
2293: \functionss&\ttt, \fff:\ \ \to\BB,\\
2294: &\ands^\BBB, \ors^\BBB:\BB^2\to\BB\\
2295: &\nots^\BBB: \BB\to\BB\\
2296: \ends&
2297: \endmatrix
2298: }
2299: $$
2300: Usually the signature can essentially be inferred from the algebra;
2301: indeed we will not define the signature where no confusion will arise.
2302: Further, for notational simplicity, we will not always distinguish between
2303: function names in the signature (\trues, etc.)
2304: and their intended interpretations ($\trues^\BBB = \ttt$, etc.)
2305: \sn
2306: ($b$) \,The algebra \,\NNNo\ \,of naturals
2307: has a carrier \,\NN\ \,of sort \,\nats,
2308: \,together with the zero constant and successor function:
2309: $$
2310: \boxed{
2311: \matrix \format\l&\quad\l\\
2312: \algebras &\NNNo \\
2313: \carrierss &\NN\\
2314: \functionss&0:\ \ \to\NN,\\
2315: &\Ss:\NN\to\NN\\
2316: \ends&
2317: \endmatrix
2318: }
2319: $$
2320:
2321: ($c$) \,The ring \,\RRRo\ \,of reals
2322: has a carrier \RR\ of sort \reals:
2323: $$
2324: \boxed{
2325: \matrix \format\l&\quad\l\\
2326: \algebras &\RRRo \\
2327: \carrierss &\RR\\
2328: \functionss&0,1:\ \ \to\RR,\\
2329: &+,\times:\RR^2\to\RR,\\
2330: &-:\RR\to\RR\\
2331: \ends&
2332: \endmatrix
2333: }
2334: $$
2335: \endpr
2336:
2337:
2338:
2339: ($d$) The field \,\RRRi\ \,of reals is
2340: formed by adding the multiplicative inverse to the ring \RRRo:
2341: $$
2342: \boxed{
2343: \matrix \format\l&\quad\l\\
2344: \algebras &\RRRi \\
2345: \imports &\RRRo\\
2346: \functionss &\invR:\RR\to\RR\\
2347: \ends&
2348: \endmatrix
2349: }
2350: $$
2351: where \,
2352: $$
2353: \invR(x) \ = \
2354: \cases
2355: 1/x \ift{$x\ne 0$}\\
2356: \ua \ow.
2357: \endcases.
2358: $$
2359: This is an example of a partial algebra.
2360: More examples of partial algebras wil be given later.
2361:
2362: Throughout this work we make the following assumption about
2363: the signatures \Sig.
2364:
2365: \Assumptionn{2.1.2 \ (Instantiation Assumption)}
2366: {\sl For every sort $s$ of \Sig, there is a closed term of that sort,
2367: called the default term \,\delbs\ \,of that sort.}
2368: \endpr
2369:
2370: This guarantees the presence of {\it default values} \,\delbsA\ \,
2371: in a \Sig-algebra $A$ at all sorts $s$,
2372: and {\it default tuples} \,\delbuA\ \,at all product types $u$.
2373:
2374: \Defn{2.1.3 \,(Expansions and reducts)}
2375: Let \Sig\ and \Sigp\ be signatures with $\Sig \subset \Sig'$.
2376: \sn
2377: \ ($a$) If $A'$ is a \Sigp-algebra, \,then the \Sig-{\it reduct of} $A'$,
2378: \ $A' \redSig$,
2379: \ is the algebra
2380: of signature \Sig, consisting of the carriers of $A'$
2381: named by the sorts of \Sig\ and equipped with the functions
2382: of $A'$ named by the function symbols of \Sig.
2383: \sn
2384: \ ($b$) If \,$A$ is a \,\Sig-algebra and $A'$ is a \Sigp-algebra,
2385: \,then $A'$ is a {\it \Sigp-expansion} of $A$ iff $A$ is the
2386: \Sig-reduct of $A'$.
2387: \endpr
2388:
2389: \shead{2.2}{Adding booleans: \,Standard signatures and algebras}
2390: The algebra \BBB\ of booleans (Example 2.1.1($a$))
2391: plays an essential role in computation, as we will see.
2392: This motivates the following definition.
2393:
2394: \Defn{2.2.1 \ (Standard signature)}
2395: A signature \Sig\ is {\it standard} if
2396: \itemitem{($i$)}
2397: it contains the signature of booleans, \ie,
2398: \,$\Sig(\BBB) \ \sseq \Sig$, \ and
2399: \itemitem{($ii$)}
2400: The function symbols of \Sig\ include
2401: a {\it conditional\/}
2402: $$
2403: \ifs_s :\bools\times s^2 \to s
2404: $$
2405: for all sorts $s$ of \Sig\ other than \bools.
2406: \endpr
2407:
2408: Now given a standard signature \Sig,
2409: a sort of \Sig\
2410: is called an {\it equality sort\/}
2411: if \Sig\ includes an
2412: {\it equality operator}
2413: $$
2414: \eqs_s: s^2 \to \bools.
2415: $$
2416:
2417: \Defn{2.2.2 \ (Standard algebra)}
2418: Given a standard signature \Sig,
2419: a \Sig-algebra $A$ is a {\it standard} if
2420: \itemm{($i$)}
2421: it is an expansion of \BBB;
2422: \itemm{($ii$)}
2423: the conditional operator on each sort $s$
2424: has its standard interpretation in $A$;
2425: \ie, \,for \,$b\in\BB$ \,and \,$x,y \in \As$,
2426: $$
2427: \ifs^A_s(b,x,y) \ = \
2428: \cases
2429: x \tif{$b = \ttt$}\\
2430: y \tif{$b = \fff$};
2431: \endcases
2432: $$
2433: \itemm{($iii$)}
2434: the equality operator
2435: \,$\eqs_s$ \,is interpreted as a {\it partial identity\/} on each
2436: equality sort $s$, \ie, for any two elements of \As,
2437: if they are identical, then
2438: the operator at these arguments returns
2439: \,\ttt\ \,if it returns anything; and
2440: if they are not identical,
2441: it returns \,\fff\
2442: \,if anything.
2443: More specifically, there are three possible cases.
2444: First, the case
2445: $$
2446: \eqs^A_s(x,y) \ = \
2447: \cases
2448: \ttt \ift{$x=y$}\\
2449: \fff \ow,
2450: \endcases
2451: $$
2452: \ie, total equality, represents the situation
2453: that equality is ``decidable" or ``computable"
2454: at sort $s$,
2455: for example, when $s=\nats$.
2456: Second, the case
2457: $$
2458: \eqs^A_s(x,y) \ = \
2459: \cases
2460: \ttt \ift{$x=y$}\\
2461: \ua \ow
2462: \endcases
2463: $$
2464: represents typically the situation that
2465: that equality is ``semidecidable".
2466: An example is given by the initial {\it term algebra\/}
2467: of an r.e. equational theory.
2468: Third, the case
2469: $$
2470: \eqs^A_s(x,y) \ = \
2471: \cases
2472: \ua \ift{$x=y$}\\
2473: \fff \ow,
2474: \endcases
2475: $$
2476: represents typically the situation that
2477: that equality is ``co-semidecidable".
2478: Examples are given by the data types
2479: of {\it streams\/} and {\it real numbers\/},
2480: as mentioned in 1.1.3; see Example 2.2.4($c$) below.
2481: \endpr
2482:
2483: \smskipn
2484: Note that any many-sorted signature \Sig\
2485: can be {\it standardised} to a signature \,\SigBBB\
2486: \,by adjoining the sort \,\bools\ \,together
2487: with the standard boolean operations;
2488: and, correspondingly, any algebra $A$ can be standardised
2489: to an algebra \ABBB\
2490: \,by adjoining the algebra \BBB\
2491: as well as the conditional and equality operators.
2492:
2493:
2494: \Examplesn{2.2.4 \,(Standard algebras)}
2495: \sn
2496: ($a$) The simplest standard algebra is the algebra \BBB\ of the booleans
2497: (Example 2.1.1($a$)).
2498: \smskipn
2499: ($b$) A {\it standard algebra of naturals\/} \,\NNN\
2500: \,is formed by standardising the algebra \,\NNNo\
2501: \linebreak
2502: (Example 2.1.1($b$)),
2503: with (total) equality and order operations on \NN:
2504: $$
2505: \boxed{
2506: \matrix \format\l&\quad\l\\
2507: \algebras &\NNN \\
2508: \imports &\NNNo, \,\BBB\\
2509: \functionss
2510: &\ifnatN:\BB\times\NN^2\to\NN,\\
2511: &\eqnatN,\,\lsnatN:\NN^2\to\BB\\
2512: \ends&
2513: \endmatrix
2514: }
2515: $$
2516: ($c$) {\it A standard partial algebra \RRR\ on the reals\/}
2517: is formed similarly by standardising the field \RRRi\
2518: (Example 2.1.1($d$)),
2519: %with \reals\ as a partial equality sort,
2520: with partial equality and order operations on \RR:
2521: $$
2522: \boxed{
2523: \matrix \format\l&\quad\l\\
2524: \algebras &\RRR \\
2525: \imports &\RRRi, \,\BBB\\
2526: \functionss
2527: &\ifrealR:\BB\times\RR^2\pto\RR,\\
2528: &\eqrealR,\,\lsrealR:\RR^2\pto\BB\\
2529: \ends&
2530: \endmatrix
2531: }
2532: $$
2533: where
2534: \TOL
2535: $$
2536: \eqrealR(x,y) \ = \
2537: \cases
2538: \ua \tif{$x=y$}\\
2539: \fff \tif{$x\ne y$}.
2540: \endcases
2541: $$
2542: $$
2543: \lsrealR(x,y) \ = \
2544: \cases
2545: \ttt \tif{$x<y$}\\
2546: \fff \tif{$x>y$}\\
2547: \ua \tif{$x=y$},
2548: \endcases
2549: \tag"and"
2550: $$
2551: \TOR
2552:
2553: \Discussionn{2.2.5 \,(Semicomputability and co-semicomputability)}
2554: The significance of the partial equality
2555: and order operations in Example ($c$) above,
2556: in connection with computability
2557: and continuity, has been touched on in 1.1.3.
2558: The {\it continuity\/} of partial functions will be discussed in \S2.5
2559: (and see in particular Example 2.5.3($b$)).
2560: Regarding {\it computability\/},
2561: these definitions are intended to
2562: reflect, or capture the intuition of,
2563: the ``{\it semicomputability\/}" of order and the
2564: ``{\it co-semicomputability\/}" of equality
2565: on (a concrete model of) the reals.
2566: For given two reals $x$ and $y$,
2567: represented (say) by their infinite decimal expansions,
2568: suppose their decimal digits are being read systematically,
2569: the $n$-th digit of both at step $n$.
2570: Then if $x\ne y$ or $x<y$,
2571: this will become apparent after finitely many steps,
2572: but no finite number of steps can confirm that $x=y$.
2573: \endpr
2574:
2575: Throughout this paper, we will assume the following,
2576: unless specifically noted to the contrary.
2577:
2578: \Assumptionn{2.2.6 \,(Standardness Assumption)}
2579: The signature \Sig\ and \Sig-algebra $A$ are standard.
2580: \endpr
2581:
2582:
2583: \shead{2.3}{Adding counters: \ N-standard signatures and algebras}
2584: The standard algebra \NNN\ of naturals (Example 2.2.4($b$))
2585: plays, like \BBB, an essential role in computation.
2586: This motivates the following definition.
2587:
2588: \Defn{2.3.1 \ (N-standard signature)}
2589: A signature \Sig\ is {\it N-standard\/} if
2590: \itemm{($i$)}
2591: it is standard, \,and
2592: \itemm{($ii$)}
2593: it contains the standard signature of naturals (Example 2.2.4($b$)), \ie,
2594: \,$\Sig(\NNN) \ \sseq \Sig$.
2595: \endpr
2596:
2597: \Defn{2.3.2 \ (N-standard algebra)}
2598: Given an N-standard signature \Sig,
2599: a corresponding \Sig-algebra $A$ is {\it N-standard} if
2600: it is an expansion of \NNN.
2601: \endpr
2602:
2603: Note that any standard signature \Sig\ can be
2604: N-{\it standardised} to a signature \SigN\
2605: by adjoining the sort \nats\ and the operations 0, \Ss,
2606: \eqnat, \lsnat\ and \ifnat.
2607: Correspondingly,
2608: any standard \Sig-algebra $A$ can be N-{\it standardised}
2609: to an algebra \AN\
2610: by adjoining the carrier \NN\
2611: together with the corresponding standard functions.
2612:
2613:
2614: \Examplesn{2.3.3 \,(N-standard algebras)}
2615: \itemm{($a$)\,}
2616: The simplest N-standard algebra is the algebra \NNN\
2617: (Example 2.2.4($b$)).
2618: \itemm{($b$)\,}
2619: We can N-standardise the standard real algebra
2620: \,\RRR\ (Example 2.2.4($c$))
2621: \,to form the algebra \,\RRRN.
2622: \endpr
2623:
2624:
2625: \shead{2.4}{Adding arrays: \ Algebras \,\Ax\ of signature \Sigx}
2626: The significance of arrays for computation
2627: is that they provide
2628: {\it finite but unbounded memory}.
2629:
2630: Given a standard signature \Sig,
2631: and standard \Sig-algebra $A$, we expand \Sig\ and $A$
2632: in two stages:
2633:
2634: \itemm{($1^\circ$)}
2635: N-standardise these to form \SigN\ and \AN, as in \S2.3.
2636:
2637: \itemm{($2^\circ$)}
2638: Define, for each sort $s$ of \Sig, the carrier \Axs\
2639: to be the set of {\it finite sequences\/} or {\it arrays\/} \ax\
2640: over \As, of ``starred sort" \sx.
2641:
2642: The resulting algebras \Ax\ have signature \Sigx,
2643: which extends \SigN\
2644: by including,
2645: for each sort $s$ of \Sig, the new starred sorts \sx,
2646: and certain new function symbols.
2647: Details are given in \cite[\S2.7]{tz:hb}
2648: and (an equivalent but simpler version) in \cite[\S2.4]{tz:top}.
2649:
2650: The reason for introducing starred sorts
2651: is the lack of effective coding
2652: of finite sequences within abstract algebras in general.
2653:
2654:
2655:
2656:
2657: \shead{2.5}{Topological partial algebras}
2658: We now add topologies to our partial algebras,
2659: with the requirement of continuity
2660: for the basic partial functions.
2661: Background information on topology can be obtained
2662: from any standard text, \eg,
2663: \cite{kelley:book,dugundji:book,engelking:book}.
2664: \Defn{2.5.1}
2665: Given two topological spaces $X$ and $Y$,
2666: a partial function
2667: \nl
2668: $f:X\pto Y$
2669: \,is {\it continuous} if for every open \,$V\sseq Y$,
2670: $$
2671: f^{-1}[V] \ \eqdf \ \curly{x\in X \mid x\in\dom{f} \ \tx{and} \ f(x)\in Y}
2672: $$
2673: is open in $X$.
2674: \endpr
2675: \Defn{2.5.2}
2676: ($a$)
2677: \,A {\it topological partial \Sig-algebra} is a partial \Sig-algebra
2678: with topologies on the carriers
2679: such that each of the basic \Sig-functions
2680: is continuous.
2681: \smskipn($b$)
2682: \,An (N-){\it standard topological partial algebra}
2683: is a topological partial algebra which is also an (N-)standard partial algebra,
2684: such that the carriers \BB\ (and \NN) have the discrete topology.
2685: \endpr
2686:
2687: \Examplesn{2.5.3}
2688: ($a$) ({\it Discrete algebras.\/})
2689: The standard algebras \,\BBB\ \,and \,\NNN\ \,of booleans and naturals
2690: respectively \,(\S\S2.1, 2.2)
2691: \,are topological (total) algebras under the discrete topology.
2692: All functions on them are trivially continuous, since the
2693: carriers are discrete.
2694: \sn
2695: ($b$) ({\it Partial real algebra.\/})
2696: An important standard
2697: topological partial algebra for our purpose is the real algebra \RRR\
2698: (Example 2.2.4($c$)), or its N-standardised version \RRRN\
2699: (Example 2.3.3($b$)),
2700: in which
2701: \RR\ has its usual topology, and \BB\ and \NN\ the discrete topology.
2702: Recall our earlier discussion (1.1.3) of partiality of tests in connection
2703: with continuity, and
2704: note that the partial operations
2705: \,\eqrealR\ \,and \,\lsrealR\
2706: \,are continuous, in the sense of Definition 2.5.1.
2707: \sn
2708: ($c$) ({\it Partial interval algebras.\/})
2709: \ Another useful class of standard topological partial algebras are
2710: of the form
2711: $$
2712: \boxed{
2713: \matrix \format\l&\quad\l\\
2714: \algebras &\III \\
2715: \imports &\RRR\\
2716: \carrierss & I\\
2717: \functionss&\iI:I\to\RR,\\
2718: &F_1:I^{m_1}\to I,\\
2719: &\quad\dots\\
2720: &F_k:I^{m_k}\to I\\
2721: \ends&
2722: \endmatrix
2723: }
2724: $$
2725: where $I$ is the closed interval \,$[0,1]$
2726: \,(with its usual topology),
2727: \ \iI\ is the embedding of $I$ into \RR,
2728: \,and
2729: \,$F_i: I^{m_i}\to I$
2730: \,are continuous partial functions.
2731: These are called {\it (partial) interval algebras on} $I$.
2732: There are also N-standard versions:
2733: $$
2734: \boxed{
2735: \matrix \format\l&\quad\l\\
2736: \algebras &\IIIN \\
2737: \imports &\RRRN\\
2738: \carrierss & I\\
2739: \functionss&\iI:I\to\RR,\\
2740: &\dots\\
2741: \ends&
2742: \endmatrix
2743: }
2744: $$
2745: \endpr
2746:
2747: \mn($d$) ({\it N-standard total real algebra\/}.)
2748: \,The algebra \RRRtN\ is
2749: (``$t$" for ``total topological"), defined by
2750: $$
2751: \boxed{
2752: \matrix \format\l&\quad\l\\
2753: \algebras &\RRRtN \\
2754: \imports &\RRRo, \,\NNN,\,\BBB\\
2755: \functionss&\ifrealR:\BB\times\RR^2\to\RR,\\
2756: &\divNR:\RR\times\NN\to\RR,\\
2757: \ends&
2758: \endmatrix
2759: }
2760: $$
2761: Here \RRRo\ is the ring of reals (\S2.1.1($c$)),
2762: \NNN\ is the standard algebra of naturals (2.2.4($b$)),
2763: and \divN\ is division of reals by naturals.
2764:
2765: Note that \RRRtN\ does not contain (total) boolean-valued
2766: functions $<$ or $=$ on the reals,
2767: since they are not continuous
2768: (\cf\ the partial functions \eqreal\ and \lsreal\ of \RRR).
2769: It is therefore not an expansion of \RRR.
2770:
2771: %The reason that \NN, and the function \divN,
2772: %are included in this total algebra
2773: %(unlike the partial algebras \RRRp\ and \IIIp\ of \S3.2)
2774: %is because of its applicability
2775: %in the theory of approximable computability in Section 9.
2776:
2777: \Defn{2.5.4 \ (Extensions of topology to \AN\ and \Ax)}
2778: Corresponding to the various algebraic expansions of $A$
2779: detailed in \S\S2.3 and 2.4, there are induced topological expansions.
2780: \sn($a$)
2781: The topological partial N-standard algebra \AN, of signature \SigN,
2782: is constructed from $A$ by giving the new carrier \NN\ the discrete topology.
2783: \smskipn($b$)
2784: The topological partial array algebra \Ax, of signature \Sigx,
2785: is constructed from \AN\ as follows.
2786: Viewing the elements of \Axs\ as (essentially)
2787: arrays of elements of \As\ of finite length,
2788: we can give
2789: \Axs\ the {\it disjoint union} topology
2790: of the sets \,$(\As)^n$ \,of arrays of length $n$,
2791: for all $n\ge0$,
2792: where each set $(\As)^n$ is given the {\it product topology\/}
2793: of the sets \As.
2794:
2795: The topology on \Ax\ can also be described as follows.
2796: The {\it basic open sets\/} in \Axs\ are of the form
2797: $$
2798: \curly{\ax \in \Axs \mid \Lgths(\ax)> i_n \ \ \tx{and}
2799: \ \ \ax[i_1]\in U_1,\ \dots,\ \ax[i_n]\in U_n}
2800: $$
2801: for some $n>0$, \,$i_1<\dots<i_n$ \,and
2802: open sets \,$U_1,\dots,U_n\sseq\As$.
2803:
2804: It is easy to check that \Ax\ is indeed a topological algebra,
2805: \ie, all the new functions of \Ax\ are continuous.
2806:
2807: \newpage
2808:
2809: \shead{2.6}{Metric algebra}
2810: A particular type of topological algebra is a {\it metric
2811: partial algebra}.
2812: This is
2813: a many-sorted standard partial algebra
2814: with an associated metric:
2815: $$
2816: \boxed{
2817: \matrix \format\l&\quad\l\\
2818: \algebras &A\\
2819: \imports &\BBB, \,\RRR\\
2820: \carrierss & \tup{A}1r,\\
2821: \functionss&F^A_1:A^{u_1}\to A_{s_1},\\
2822: &\quad\dots\\
2823: &F^A_k:A^{u_k}\to A_{s_k},\\
2824: &\ds^A_1:A_1^2\to\RR,\\
2825: &\quad\dots\\
2826: &\ds^A_r:A_r^2\to\RR\\
2827: \ends&
2828: \endmatrix
2829: }
2830: $$
2831: where \,\BBB\ \ \,and \,\RRR\
2832: \,are respectively the algebras of booleans and reals
2833: (Examples 2.1.1($a$), 2.2.4($c$)),
2834: the carriers \,\tup{A}1r\ \,are metric spaces with metrics
2835: \,$\ds^A_1,\dots,\ds^A_r$ \,respectively,
2836: \,\tup{F}1k \,are the \Sig-function symbols
2837: other than \,\tup{\ds}1k,
2838: \,and the (partial) functions
2839: $F^A_i$ are all continuous with respect to these metrics,
2840: where continuity of a partial function is understood as in
2841: Definition 2.5.1.
2842:
2843: Clearly,
2844: metric algebras can be viewed as special cases of
2845: {\it topological partial algebras\/}.
2846:
2847:
2848: Note that
2849: the carrier \BB\ (as well as \NN, if present)
2850: has the {\it discrete metric},
2851: defined by
2852: $$
2853: \ds(x,y) \ = \
2854: \cases
2855: 0 \tif{$x=y$}\\
2856: 1 \tif{$x\ne y$},
2857: \endcases
2858: $$
2859: which induces the discrete topology.
2860:
2861: We will often speak of a ``metric algebra $A$",
2862: without stating the metric explicitly.
2863:
2864: \Examplen{2.6.1}
2865: The partial and total
2866: real algebras \RRR, \RRRN\ and \RRRtN\ (Examples 2.5.3)
2867: can be recast as metric algebras in an obvious way.
2868: \endpr
2869:
2870: \Remarkn{2.6.2 \ (Extension of metric to \Ax)}
2871: A metric algebra $A$ can be expanded to a metric
2872: algebra \Ax\ of arrays over $A$.
2873: Namely, given a metric \,\dss\ \,on \As,
2874: we define a (bounded) metric \,\dsxs\ \,on \Axs\ as follows:
2875: \,for \,$\ax = (\tup{a}1k), \,\bx=(\tup{b}1l)\in \Axs$:
2876: $$
2877: \dsxs(\ax,\,\bx)\ =
2878: \cases
2879: 1 \ift{$k\ne l$}\\
2880: \min\big(1,\ \max_{i=0}^{k-1}\dss(\ax[i],\bx[i])\big) \ow
2881: \endcases
2882: $$
2883: This gives the same topology on \Ax\
2884: as that induced by the topology on $A$ (Definition 2.5.4)
2885: \cite{engelking:book}.
2886:
2887: \Remarkn{2.6.3 \ (Product metric on $A$)}
2888: If $A$ is a \Sig-metric algebra, then
2889: for each \Sig-product sort \,$u=\tuptimes{s}{1}{m}$,
2890: \,we can define a metric
2891: \,\dsu\ \,on \Au\ by
2892: $$
2893: d_u((x_1,\dots,x_m),(y_1,\dots,y_m)) \ =
2894: \ \max_{i=1}^m\bigl(d_{s_i}(x_i,y_i)\bigr)
2895: $$
2896: or more generally, by the $\ell_p$ metric
2897: $$
2898: d_u((x_1,\dots,x_m),(y_1,\dots,y_m)) \ =
2899: \ \bigl(\sum_{i=1}^m(d_{s_i}(x_i,y_i))^p\bigr)^{1/p}
2900: \tag{($1\le p \le\infty$)}
2901: $$
2902: where $p=\infty$ corresponds to the ``max" metric.
2903: This induces the product topology on \Au.
2904: \endpr
2905:
2906:
2907:
2908: \shead{2.7}{W-continuity: \ Another notion of continuity of partial functions}
2909: Recall our definition (2.5.1) of continuity of partial functions:
2910: \,$f:X\pto Y$
2911: \,is continuous if for every open \,$V\sseq Y$,
2912: \ $f^{-1}[V]$ \ is open in $X$.
2913:
2914: This is not the only reasonable definition.
2915: Another definition, used in \cite{weih:book} and
2916: \cite{brattka96,brattka:thesis}
2917: (henceforth ``W-continuity"),
2918: amounts to saying that $f$
2919: is continuous iff its restriction to its domain
2920: $$
2921: f\rest \dom{f}:\dom{f}\to Y
2922: $$
2923: is continuous (as a total function),
2924: where \,\dom{f} \,has the topology as a subspace of $A$;
2925: or, equivalently, iff for every open \,$V\sseq Y$,
2926: \ $f^{-1}[V]$ \ is open in \,\dom{f}.
2927:
2928: The following is easily checked:
2929:
2930: \Propn{2.7.1}
2931: $f$ is continuous \ \ifff\ \ $f$ is W-continuous \,and \,\dom{f} is open.
2932: \endpr
2933:
2934: \Remarkn{2.7.2}
2935: It is instructive to express these two notions of continuity
2936: in terms of metric spaces. Suppose
2937: \,$f:X\pto Y$ \,where $X$ and $Y$ are metric spaces. Then
2938: \itemm{($a$)}
2939: $f$ is continuous iff
2940: $$
2941: \all a\in \dom{f} \,\all\eps>0 \,\ex\del>0 \,\all x\in \Bb(a,\del)
2942: \,\bigl(x\in \dom{f}\con f(x)\in \Bb(f(a),\eps)\bigr).
2943: $$
2944: \itemm{($b$)}
2945: $f$ is W-continuous iff
2946: $$
2947: \all a\in \dom{f} \,\all\eps>0 \,\ex\del>0 \,\all x\in \Bb(a,\del)
2948: \,\bigl(x\in \dom{f}\imp f(x)\in \Bb(f(a),\eps)\bigr).
2949: $$
2950: %which can be rewritten:
2951: %$$
2952: %\all a\in \dom{f} \,\all\eps>0 \,\ex\del>0 \,\all x\in \dom{f}
2953: %\,\bigl(\ds(x,a)<\del \imp \ds(f(x),f(a))<\eps\bigr).
2954: %$$
2955: %\endpr
2956:
2957: \n
2958: Here \,$\Bb(a,\del)$
2959: \,is the open ball with centre $a$ and radius \del.
2960: \endpr
2961:
2962: \Examplen{2.7.3}
2963: Consider the partial function \, $f\: \RR\ \pto \ \RR$
2964: \,defined by
2965: $$
2966: f(x) \ = \
2967: \cases
2968: 0 \ift{$x$ is an integer}\\
2969: \ua \ow.
2970: \endcases
2971: $$
2972: Then $f$ is W-continuous, but not continuous.
2973: \endpr
2974:
2975:
2976: \newpage
2977:
2978: \Shead3{`\Whilebig' programming with countable choice}
2979: The programming language $\WhileCC = \WhileCCSig$
2980: \,is an extension of \,\WhileSig\ \cite[\S2.1, 2.13]{tz:hb}
2981: \,with an extra \,\qchooses\ \,rule of term formation.
2982: We give the complete definition
2983: of its syntax and semantics, using the
2984: {\it algebraic operational semantics\/} of \cite{tz:hb}.
2985:
2986: Assume \Sig\ is an N-standard signature,
2987: and $A$ is an N-standard \Sig-algebra.
2988:
2989: \shead{3.1}{Syntax of \WhileCCSig}
2990: We define four syntactic classes:
2991: {\it variables}, {\it terms}, {\it statements} and
2992: {\it procedures}.
2993:
2994: \smskipn($a$)
2995: $\Var = \VarSig$
2996: \,is the class of \Sig-{\it program variables\/}, and
2997: for each \Sig-sort $s$,
2998: \,\Vars\
2999: \,is the class of program variables of sort $s$:
3000: \,$\att^s,\btt^s,\dots,\xtt^s,\ytt^s\dots$.
3001:
3002: \smskipn($b$)
3003: $\PTerm \,= \PTermSig$
3004: \ is the class of \Sig-{\it program terms\/} \ $t,\dots$,
3005: \ and for each \Sig-sort $s$,
3006: \,\PTerms\
3007: \,is the class of program terms of sort $s$.
3008: These are generated by the rules
3009: $$
3010: t \ ::= \ \xtt^s \mid F(\tup{t}{1}{n}) \mid \chooses \ \ztt^\natss:b
3011: $$
3012: where \,$s,\tup{s}{1}{n}$ \,are \Sig-sorts,
3013: \ $F: \tuptimes{s}{1}{n}\to s$ \ is a \Sig-function symbol,
3014: \,$t_i\in \PTerm_{s_i}$ \,for \,$i=1,\dots,n$ \,($n\ge0$),
3015: and $b$ is a boolean term, \ie, a term of sort \,\bools.
3016:
3017: Think of \,\qchooses\ \,as a generalisation of
3018: the {\it constructive least number operator\/}
3019: \,$\leasts\ \ztt:b$
3020: \,which has the value $k$ in case
3021: \,$b[\ztt/k]$ \,is true
3022: and \,$b[\ztt/i]$ \,is defined and false
3023: for all $i<k$, \,and is undefined in case no such $k$ exists.
3024:
3025: Here \,`\choosezb' \,selects {\it some\/} value $k$ such that
3026: \,$b[\ztt/k]$
3027: \,is true, if any such $k$ exists (and is undefined otherwise).
3028: Which value is selected depends, in general, on the {\it implementation\/}
3029: of the algebra $A$.
3030: In our abstract semantics,
3031: we will give the meaning as the set of
3032: {\it all possible $k$'s\/}
3033: (hence ``countable choice").
3034: Any concrete model will select a particular $k$, according to the
3035: implementation.
3036:
3037: Note that
3038: the program terms extend the algebraic terms
3039: (\ie, the terms over the signature \Sig)
3040: by
3041: including in their construction the \,\qchooses\ \,operator,
3042: which is not an operation of \Sig.
3043: An alternative formulation would be to have \,\qchooses\,
3044: \,{\it not\/} as part of the term construction,
3045: but rather as a new atomic program statement:
3046: \,`$\chooses\ \ztt:b$'.
3047: We prefer the present treatment, as it leads to the construction
3048: of {\it many-valued term semantics\/} (as we will see),
3049: which is interesting in itself,
3050: and which we would get anyway if we were to extend our
3051: syntax to include many-valued function procedure calls
3052: in our term construction.
3053:
3054: We write \,$t:s$ \,to indicate that \,$t \in \PTerms$,
3055: \,and for \,$u = \tuptimes{s}{1}{m}$,
3056: \,we write \,$t:u$
3057: \,to indicate
3058: that $t$ is a $u$-{\it tuple} of program terms,
3059: \ie, a tuple of program terms of sorts \ \tup{s}{1}{m}.
3060:
3061: We also use the notation \,$b,\dots$
3062: \,for boolean terms.
3063:
3064: \sn($c$)
3065: $\AtSt = \AtStSig$
3066: \ is the class of {\it atomic statements\/} $\Sat,\dots$ \, defined by
3067: $$
3068: \Sat \ ::= \ \skips \br \divs \br \xtt:= t
3069: $$
3070: where
3071: \,`\divs' \,stands for ``divergence" (non-teremination),
3072: and
3073: \,$\xtt:= t$
3074: \,is a
3075: {\it concurrent assignment},
3076: \ where for some product type $u$,
3077: \ $t:u$
3078: \,and \xtt\ is a $u$-tuple of {\it distinct\/} variables.
3079:
3080: \smskipn($d$)
3081: $\Stmt = \StmtSig$
3082: \,is the class of statements \,$S,\dots$,
3083: \,generated by the rules
3084: $$
3085: S \ ::= \ \Sat \br \ S_1;S_2 \br
3086: \ifs\ b \ \thens\ S_1 \ \elses\ S_2 \ \fis
3087: \br \whiles\ b \ \dos\ S \ \ods
3088: $$
3089:
3090:
3091: \smskipn($e$)
3092: $\Proc = \ProcSig$
3093: \ is the class of function procedures
3094: \ $P,Q,\dots$.
3095: \ These have the form
3096: $$
3097: P \ \ident \ \funcs \ \ins \ \att\ \outs \ \btt\ \auxs \ \ctt\
3098: \begins \ S\ \ends
3099: $$
3100: where \att, \btt\ and \ctt\ are lists of {\it input variables},
3101: {\it output variables} and {\it auxiliary} (or
3102: {\it local) variables} respectively,
3103: and $S$ is the {\it body}.
3104: Further, we stipulate:
3105: \bull
3106: \att, \btt\ and \ctt\ \,each consist of distinct variables,
3107: and they are pairwise disjoint,
3108: \bull
3109: all variables occurring in $S$ must be
3110: among \,\att, \btt\ or \ctt,
3111: \bull
3112: the {\it input variables\/} \att\ must not occur on
3113: the lhs of assignments in $S$,
3114: \bull
3115: {\it initialisation condition}: \,$S$ has the form \,$\Sinit;S'$,
3116: \,where \Sinit\ is a concurrent assignment
3117: which initialises all the {\it output\/} and {\it auxiliary variables\/},
3118: \ie, assigns to each variable in \,\btt\ \,and \,\ctt\
3119: \,the default term (2.1.2)
3120: of the same sort.
3121:
3122: If \,$\att:u$ \,and \,$\btt:v$, then
3123: $P$ is said to have {\it type} \utov,
3124: \ written \ $P: \utov$.
3125: Its {\it input type} is $u$.
3126:
3127:
3128: \shead{3.2}{Algebraic operational semantics of \WhileCC}
3129: We will interpret programs as countably-many-valued
3130: state transformations,
3131: and function procedures as
3132: countably-many-valued functions on $A$.
3133: Our approach
3134: follows the {\it algebraic operational semantics\/}
3135: of \cite[\S\S3.4]{tz:hb}.
3136: First we need some definitions and notation
3137: for many-valued functions.
3138:
3139: \Notationn{3.2.1}
3140: \itemm{($a$)}
3141: $\PPPom(X)$ \,is the set of all countable subsets of a set $X$,
3142: including the empty set.
3143: \itemm{($b$)}
3144: $\PPPomp(X)$ \,is the set of all countable {\it non-empty\/}
3145: subsets of $X$.
3146: \itemm{($c$)}
3147: We write \,\Yua\ \,for \,$Y\cup\curly{\ua}$,
3148: \,where `\ua' denotes divergence.
3149: \itemm{($d$)}
3150: We write \,$f:X\toto Y$ \,for
3151: \,$f:X\to\PPPom(Y)$.
3152: \itemm{($e$)}
3153: \,We write \,$f:X\totop Y$ \,for
3154: \,$f:X\to\PPPomp(Y)$.
3155: \endpr
3156:
3157: We will interpret a \WhileCC\ \,procedure
3158: $$
3159: P:\utos
3160: $$
3161: as a countably-many-valued function \PA\ from
3162: \Au\ to \Asua, \,\ie, as a function
3163: $$
3164: \PA:\ \Au\ \to\ \PPPom(\Asua)
3165: $$
3166: or, in the above notation:
3167: $$
3168: \PA: \ \Au\ \totop \ \Asua.
3169: $$
3170:
3171: \Remarkn{3.2.2 \ (Significance of `\ua')}
3172: Notice that an output of, say, \,$\{2,5,\ua\}$
3173: \,is different from \,$\{2,5\}$,
3174: since the former indicates the possibility of divergence.
3175: So a semantic function will have, for inputs not in its domain,
3176: \,`\ua' \,as a possible output value.
3177: \endpr
3178:
3179:
3180: \Defn{3.2.3 \ (States)}
3181: ($a$) \,For each \Sig-algebra $A$, a {\it state} on $A$ is a family
3182: \nl
3183: \ang{\sigs\mid \sinSortSig}
3184: \,of functions
3185: $$
3186: \sigs : \Vars \to \As.
3187: $$
3188: Let \StateA\ be the set of states on $A$,
3189: with elements \ $\sig,\dots$.
3190: \sn
3191: ($b$) \,Let \sig\ be a state over $A$,
3192: \ $\xtt \ident (\tup{\xtt}{1}{n}):u$
3193: \ and
3194: \ $a = (\tup{a}{1}{n}) \in \Au$
3195: \ (for $n\ge1$).
3196: The {\it variant} \,$\sig\{\xtt / a\}$ \,of \sig\
3197: is the state over $A$ formed from \sig\ by replacing its value
3198: at $\xtt_i$ by $a_i$ for $i=1,\dots,n$.
3199:
3200:
3201: We give a brief overview of
3202: {\it algebraic operational semantics\/}.
3203: This was used in \cite{tz:book} for
3204: deterministic imperative languages with \qwhiles\
3205: and recursion (see \cite{tz:hb} for the case of \WhileSig),
3206: but it can be applied to a wide variety of imperative languages.
3207: It has also been used to analyse compiler correctness \cite{stephenson:thesis}.
3208: It can also be adapted, as we will see, to a nondeterministic language
3209: such as \WhileCCx.
3210:
3211: Assume ($i$) we have a meaning function for atomic statements
3212: $$
3213: \angg{\Sat} :\ \StateA \ \totop \ \StateAua,
3214: $$
3215: and ($ii$) we have defined a
3216: pair of functions
3217: $$
3218: \align
3219: \First&:\ \Stmt \to \AtSt\\
3220: \RestA&:\ \Stmt \times \StateA \to \Stmt ,
3221: \endalign
3222: $$
3223: where, for a statement $S$ and state \sig,
3224:
3225: {\displaytext
3226: \ $\First (S)$ \ is an atomic statement
3227: which gives the {\it first} step in the execution of $S$
3228: (in any state),
3229: and \ $\RestA (S,\sig)$ \ is a statement
3230: (or, in the present context, a finite set of statements)
3231: which gives the {\it rest} of the execution in state \sig.
3232:
3233: }
3234: \n
3235: From these we define the
3236: {\it computation step\/} function
3237: $$
3238: \CompStepA : \ \Stmt\times\StateA \totop \ \StateAua
3239: $$
3240: \TOL
3241: $$
3242: \CompStepA (S,\sig) \ = \ \angg{\First(S)}^A\sig.
3243: \tag"by"
3244: $$
3245: \TOR
3246: from which, in turn, we can define
3247: (for the deterministic language of \cite{tz:hb})
3248: a {\it computation sequence\/}
3249: or (for the present language)
3250: a {\it computation tree\/}.
3251: The aim is to define a {\it computation tree stage\/} function
3252: $$
3253: \CompTreeStageA: \ \Stmt\times\StateA\times\NN \ \totop \ (\StateAua)^{<\om}
3254: $$
3255: \,where \,$\CompTreeStageA(S,\sig,n)$ \,represents the
3256: first $n$ stages of \,\CompTreeASsig.
3257: Here
3258: \,$(\StateAua)^{<\om}$
3259: \,denotes the set of finite sequences
3260: from
3261: \,\StateAua,
3262: \,interpreted as finite initial segments of the paths through
3263: the computation tree.
3264: From this, in turn, are defined the semantics
3265: of statements and procedures.
3266:
3267: The intuition behind these semantics
3268: is that
3269:
3270: {\displaytext
3271: for any input \xinAu,
3272: \,$\PA(x)$ is the set of all possible outcomes
3273: (including divergence),
3274: for all possible implementations of the
3275: \,\qchooses\ \,construct,
3276: including non-constructive implementations!
3277:
3278: }
3279: \n
3280: For if (for a given input $x$) the only infinite paths through
3281: the semantic computation tree are non-constructive,
3282: then $\PA(a)$ will still include `\ua'.
3283:
3284: We now turn to the details of these definitions.
3285:
3286:
3287: \mn{\bf ({\bi a}) \,Semantics of program terms.}
3288: \ The meaning of
3289: \,$t\in \PTerm_s$ \,is a function
3290: $$
3291: \tA :\ \StateA \totop \ \Asua.
3292: $$
3293: The definition is by structural induction on $t$:
3294: $$
3295: \align
3296: \bb{\xtt}^A\sig \ =&\ \{\,\sig(\xtt)\,\} \\
3297: \bb{c}^A\sig \ =&\ \{\,c^A\,\} \\
3298: \bb{F(\tup{t}1m)}^A\sig
3299: \ =&\quad\ \,\curly{y\mid
3300: \ex x_1\in A\cap\bb{t_1}\sig\,\dots\,\ex x_m\in A\cap\bb{t_m}\sig\,:
3301: \,\FA(\tup{x}1m)\da y}\\
3302: &\cup \ \{\,\ua \,\mid \,
3303: \ex x_1\in A\cap\bb{t_1}\sig\,\dots \,\ex x_m\in A\cap\bb{t_m}\sig\,:
3304: \,\FA(\tup{x}1m)\,\ua \,\}\\
3305: %&\cup \ \{\,\ua
3306: % \mid \ua \in \bb{t_1}^A\sig\,\dis\,\dots\,\dis\,\ua\in\bb{t_m}^A\sig\,\}\\
3307: &\cup \ \{\,\ua
3308: \mid \ua \in \bb{t_i}^A\sig\ \,\tx{for some $i$, $1\le i \le m$}\,\}\\
3309: \bb{\ifs(b,t_1, t_2)}^A\sig
3310: \ =&\quad\ \,\curly{y \mid
3311: \big(\ttt\in\bb{b}^A\sig \,\con\,y\in\bb{t_1}^A\sig\big)
3312: \ \dis
3313: \ \big(\fff\in\bb{b}^A\sig \,\con\,y\in\bb{t_2}^A\sig\big)}\\
3314: &\cup \ \{\,\ua \mid \ua \in \bb{b}^A\sig \,\}\\
3315: \bb{\choosezb}^A\sig
3316: \ =&\quad\ \,\curly{\ninNN \mid \ttt\in \bA\sigzn}\\
3317: &\cup \ \curly{\ua \mid \all\ninNN
3318: \big(\fff\in\bA\sigzn\ \dis\ \ua\in\bA\sigzn\big)}.
3319: \endalign
3320: $$
3321: Notice that \,$\bb{\choosezb}^A\sig$
3322: \,could include both natural numbers and `\ua',
3323: since for any $n$, \,$\bA\sigzn$ \,could include both \,\ttt\ \,and \,\fff.
3324:
3325: \mn
3326: {\bf ({\bi b}) \ Semantics of atomic statements}.
3327: \ The meaning of an atomic statement \,$\Sat\in\AtSt$ \,is a function
3328: $$
3329: \angg{\Sat} :\ \StateA \ \totop \ \StateAua
3330: $$
3331: defined by:
3332: $$
3333: \align
3334: \angg{\skips}^A\sig \ =& \ \curl{\sig}\\
3335: \angg{\divs}^A\sig \ =& \ \curly{\ua}\\
3336: \angg{\xtt:=t}^A\sig \ =&
3337: \quad\ \,\curly{\sig\{\xtt/a\}\mid a\in A\cap\tA\sig}\\
3338: &\cup\ \curly{\ua\mid \ua\in\tA\sig}
3339: \endalign
3340: $$
3341: \mn
3342: {\bf ({\bi c}) \,The \,\First\ \,and\ \,\Rest\ \,operations.}
3343: \ The operation
3344: $$
3345: \First: \ \Stmt \ \to \ \AtSt
3346: $$
3347: is defined exactly as in \cite[\S3.5]{tz:hb},
3348: namely:
3349: $$
3350: \First(S) \ = \
3351: \cases
3352: S \ift{$S$ is atomic}\\
3353: \First(S_1) \ift{$S \ident S_1;S_2$}\\
3354: \skips \ow.
3355: \endcases
3356: $$
3357: The operation
3358: $$
3359: \RestA:\ \Stmt \times \StateA \ \totop \ \Stmt,
3360: $$
3361: %indicating that \,$\RestA(S,\sig)$
3362: %\,is a {\it finite non-empty set\/} of statements,
3363: is defined as follows
3364: (\cf\ \cite[\S3.5]{tz:hb}):
3365:
3366: \sn
3367: {\it Case 1.} \ $S$ is atomic. \ Then
3368: $$
3369: \RestA (S,\sig) \ = \ \curly{\skips}.
3370: $$
3371: {\it Case 2.} \ $S \ \ident \ S_1;S_2$.
3372: \sn\indent
3373: {\it Case 2a.} \ $S_1$ is atomic. Then
3374: $$
3375: \RestA(S,\sig) \ = \ \curly{S_2}.
3376: $$
3377: \indent
3378: {\it Case 2b.} \ $S_1$ is not atomic. Then
3379: $$
3380: \RestA(S,\sig) \ = \
3381: \curly{S';S_2 \mid S' \in \RestA(S_1,\sig)}
3382: \ \cup\ \curly{\divs\mid\divs\in\RestA(S_1,\sig)}.
3383: $$
3384: %$$
3385: %\RestA(S,\sig) \ = \
3386: %\cases
3387: %\curly{S_2} \tif{$S_1$ is atomic}\\
3388: %\quad\curly{S';S_2 \mid S' \in \RestA(S_1,\sig)} \ow\\
3389: %\cup\ \curly{\divs\mid\divs\in\RestA(S_1,\sig)}.
3390: %\endcases
3391: %$$
3392: {\it Case 3.} \ $S \ \ident \ \ifs \ b \ \thens \ S_1 \ \elses \ S_2 \ \fis$.
3393: \ Then \ $\RestA (S,\sig)$ \ contains all of:
3394: $$
3395: \cases
3396: S_1 \tif{$\ttt\in\bA\sig$},\\
3397: S_2 \tif{$\fff\in\bA\sig$},\\
3398: \divs \tif{$\ua\in\bA\sig$}.
3399: \endcases
3400: $$
3401: Note that more than one condition may hold.
3402:
3403: \sn
3404: {\it Case 4.} \ $S \ \ident \ \whiles\ b \ \dos \ S_0 \ \ods$.
3405: \ Then \ $\RestA(S,\sig)$ \ contains all of:
3406: $$
3407: \cases
3408: S_0;S \tif{$\ttt\in\bA\sig$},\\
3409: \skips \tif{$\fff\in\bA\sig$},\\
3410: \divs \tif{$\ua\in\bA\sig$}.
3411: \endcases
3412: $$
3413: Note again that more than one condition may hold.
3414:
3415: \mn
3416: {\bf ({\bi d}) \,Computation step.}
3417: \ From the \First\ function we can define the
3418: computation step function
3419: $$
3420: \CompStepA : \ \Stmt\times\StateA \totop \ \StateAua
3421: $$
3422: which is like the one-step computation function \,\CompIA\
3423: \,of \cite[\S3.4]{tz:hb}, except for being multi-valued:
3424: $$
3425: \CompStepA (S,\sig) \ = \ \angg{\First(S)}^A\sig.
3426: $$
3427: \mn
3428: {\bf ({\bi e}) \,The computation tree.}
3429: \ The {\it computation sequence\/},
3430: which is basic to the semantics
3431: of \,\While\ \,computations in \cite{tz:hb},
3432: is replaced here by a {\it computation tree\/}
3433: $$
3434: \CompTreeA (S,\sig)
3435: $$
3436: of a statement $S$ at a state \sig.
3437: This is an \om-branching tree,
3438: branching
3439: %(not according to the outcome of
3440: %boolean tests, like the syntactic computation tree
3441: %of \cite[\S5.10]{tz:hb}, but)
3442: according to all possible outcomes (\ie, ``output states")
3443: of the one-step computation function \,\CompStepA.
3444: Each node of this tree is labelled by
3445: either a state
3446: or `\ua'.
3447:
3448: Any actual (``concrete") computation of statement $S$ at state \sig\
3449: corresponds to
3450: one of the paths through this tree.
3451: The possibilities for any such path are:
3452:
3453: \itemm{($i$)} it is finite, ending in a leaf containing a state:
3454: the final state of the computation;
3455:
3456: \itemm{($ii$)} it is finite, ending in a leaf containing `\ua'
3457: (local divergence);
3458:
3459: \itemm{($iii$)} it is infinite (global divergence).
3460:
3461: Correspondingly, the function \,\CompA\
3462: \,of \cite[\S3.4]{tz:hb} is replaced by a {\it computation tree stage\/}
3463: function
3464: $$
3465: \CompTreeStageA: \ \Stmt\times\StateA\times\NN \ \totop \ (\StateAua)^{<\om}
3466: $$
3467: \,where \,$\CompTreeStageA(S,\sig,n)$ \,represents the
3468: first $n$ stages of \,\CompTreeASsig.
3469: %Here
3470: %\,$(\StateAua)^{<\om}$
3471: %\,denotes the set of finite sequences
3472: %from
3473: %\,\StateAua,
3474: %\,interpreted as finite initial segments of the paths through
3475: %the semantic computation tree.
3476: This is defined (like \CompA) by a simple recursion (``tail recursion")
3477: on $n$:
3478: \sn
3479: {\it Basis:\/}
3480: \,$\CompTreeStageA(S,\sig,0) \ = \ \curl{\sig}$,
3481: \ \ie, \,just the root labelled by \,\sig.
3482: %($n=1$)
3483: %\ $\CompTreeStageA(S,\sig,1)$ \ = \ \curl{\sig}$
3484: %\ is formed by {\it attaching\/} to the root \,\curl{\sig}
3485: %\,leaves\ \,\curl{\sig'}
3486: %\,for each $\sig'\in \CompStepA(S,\sig)$.
3487: \sn
3488: {\it Induction step:\/}
3489: \,$\CompTreeStageA(S,\sig,n)$
3490: \,is formed by attaching to the root \,\curl{\sig}
3491: \,the following:
3492: \itemm{($i$)\,}
3493: for $S$ atomic:
3494: \,the leaf \,\curl{\sigp},
3495: \,for each \,$\sig' \in \angg{S}^A\sig$
3496: \,(where \,\sigp\ \,may be a state or \,\ua);
3497: \itemm{($ii$)\,}
3498: for $S$ not atomic:
3499: \nl
3500: \,the subtree \,$\CompTreeStageA(S',\sig',n)$,
3501: \,for each \,$\sig' \in \CompStepA(S,\sig)$ \,$(\sig'\ne\ua)$
3502: \,and \,$S'\in \RestA(S,\sig)$, \,as well as
3503: \,the leaf \,\curly{\ua} \,if \,$\tx{`\ua'}\in \CompStepA(S,\sig)$.
3504:
3505: Then \,\CompTreeASsig\ \,is defined as the ``limit" over $n$ of
3506: \,$\CompTreeStageA(S,\sig,n)$.
3507:
3508: Note that only the leaves of \,\CompTreeASsig\
3509: \,may contain
3510: `\ua', indicating ``local divergence".
3511:
3512: \mn
3513: {\bf ({\bi f}) \,Semantics of statements.}
3514: \ From the semantic computation tree we can easily define the
3515: i/o semantics of statements
3516: $$
3517: \SA :\ \StateA \ \totop \ \StateAua.
3518: $$
3519: Namely,
3520:
3521: {\displaytext
3522: \SA\sig\ \,is the set of states and/or `\ua'
3523: \,at all leaves in
3524: \CompTreeASsig, \,together
3525: with \,`\ua' \,if \,\CompTreeASsig\ \,has an infinite path.
3526:
3527: }
3528:
3529: \mn
3530: {\bf ({\bi g}) \,Semantics of procedures.}
3531: \ Finally, if
3532: $$
3533: P \ \ident \ \funcs\ \ins \ \att\ \outs \ \btt\ \auxs \ \ctt
3534: \ \begins \ S\ \ends
3535: \tag1
3536: $$
3537: is a procedure of type \utov,
3538: then its meaning in $A$ is a function
3539: $$
3540: \PA : \ \Au \ \totop \ \Av^\ua
3541: $$
3542: defined as follows (\cf\ \cite[\S3.6]{tz:hb}).
3543: For \xinAu,
3544: $$
3545: %\align
3546: %\PA(x) \ =& \quad \ \ \curly{\sig'(\btt)\mid \sig'\in \SA\sig}\\
3547: %& \ \cup \ \curly{\ua \mid \ua\in\SA\sig}
3548: %\endalign
3549: \PA(x) \ = \ \curly{\sig'(\btt)\mid \sig'\in \SA\sig}
3550: \ \cup \ \curly{\ua \mid \ua\in\SA\sig}
3551: $$
3552: where \sig\ is any state on $A$ such that
3553: \,$\sig[\att] = x$.
3554:
3555: \Remarkn{3.2.4}
3556: From the initialisation condition (\S3.1($e$))
3557: it follows by a ``functionality lemma" (\cf\ \cite[3.6.1]{tz:hb})
3558: that \,\PA\ \,is well defined.
3559: \endpr
3560:
3561: \Defn{3.2.5}
3562: A \WhileCC\ \,procedure
3563: \,$P:\utov$
3564: \,is {\it deterministic\/} on $A$
3565: if for all \xinAu,
3566: \,$\PA(x)$ \,is a singleton.
3567: \endpr
3568:
3569: \Remarkn{3.2.6 \,(Two concepts of deterministic computation)}
3570: One can distinguish between two notions of deterministic computation:
3571: ($i$) {\it strong deterministic computation\/}, the common concept,
3572: in which each step of the computation is determinate; \,and
3573: ($ii$) {\it weak deterministic computation\/},
3574: in which
3575: the output (or divergence) is
3576: uniquely determined by (\ie, a unique function of) the input,
3577: but the steps in the computation are {\it not\/} determinate.
3578: A good example of ($ii$) is the Gaussian elimination algorithm (\S1.2.1, \S4.1)
3579: which, although defining a unique function (the inverse of a matrix),
3580: incorporates the (nondeterministic!) pivot function
3581: as a subroutine.
3582: In Definition 3.2.5 and elsewhere in this paper,
3583: we are concerned with the weak sense of deterministic computation.
3584: \endpr
3585:
3586: \Defn{3.2.7}
3587: ($a$) \,A many-valued function
3588: \,$F : \ \Au \ \totop \ \Asua$
3589: \,is \WhileCC\ \,computable on $A$
3590: if there is a \WhileCC\ \,procedure $P$
3591: such that \,$F = \PA$.
3592: \sn
3593: ($b$) \,A partial function \,$F:\Au\pto \As$
3594: \,is \,\WhileCC\ \,{\it computable\/} on $A$
3595: if there is a deterministic \,\WhileCC\ \,procedure
3596: \,$P:\utos$
3597: \,such that for all \xinAu,
3598: \itemm{($i$)}
3599: \ $F(x) \da y \ \impp \ \PA(x) = \{y\}$,
3600: \itemm{($ii$)}
3601: \ $F(x) \ua \ \impp \ \PA(x) = \{\ua\}$,
3602: \endpr
3603:
3604:
3605: \Remarkn{3.2.8 \,(Many-valued algebras)}
3606: As we have seen, the semantics for \WhileCC\ procedures
3607: is given by countably many-valued functions.
3608: If we were to start with algebras with many-valued basic operations,
3609: as in \cite{brattka96,brattka:thesis}, the algebraic operational semantics
3610: could handle this just as easily, by adapting the
3611: clause for the basic \Sig-function $F$ in part ($a$)
3612: (``Semantics of program terms")
3613: of the semantic definition above.
3614: \endpr
3615:
3616:
3617: \shead{3.3}{The language \WhileCCxSig}
3618: In \cite{tz:top,tz:hb} we worked with
3619: the language \Whilex\ \,rather than \While,
3620: which can be viewed as \While\ augmented by
3621: auxiliary array and \,\nats\ \,variables \cite[\S3.13]{tz:hb}.
3622: The importance of \Whilex\
3623: computability lies in the fact
3624: that it forms the basis
3625: for a generalised Church-Turing Thesis for computability
3626: on abstract many-sorted algebras \cite[\S8]{tz:hb}.
3627:
3628: Here, similarly,
3629: we will work with the language
3630: $\WhileCCx = \WhileCCxSig$,
3631: which may be thought of as
3632: \WhileCCSig\ \,augmented by auxiliary array and \,\nats\ \,variables
3633: (or as \WhilexSig\ \,augmented by the \,\qchooses\ \,construct).
3634: More precisely:
3635:
3636: \Defn{3.3.1 \,(The \WhileCCxSig\ language)}
3637: A \WhileCCxSig\ procedure is a \WhileCC(\Sigx) procedure
3638: in which the input and output variables have sorts in \Sig\ only.
3639: (However the auxiliary variables may have starred sorts or sort \,\nats.)
3640: \endpr
3641:
3642: \n
3643: Thus a \WhileCCxSig\ procedure defines a countably-many-valued
3644: function on any standard \Sig-algebra.
3645:
3646:
3647:
3648: \shead{3.4}{Some computability issues in the semantics of
3649: \WhileCCx\ procedures}
3650: Some interesting issues in the semantics of \WhileCCx\ arise
3651: already in the case of computation over the algebra \NNN\
3652: of naturals (Example 2.2.4($b$)).
3653:
3654: \itemm{{\bf (a)}}
3655: {\bf Elimination of `\chooses' from deterministic \WhileCCx\ programs
3656: over total algebras}
3657:
3658: \n
3659: The `\chooses' operator can be eliminated from deterministic
3660: \WhileCCx\ \,pro\-ce\-dures
3661: (\cf\ Definition 3.2.5 and Remark 3.2.6) over total algebras.
3662:
3663: \Propn{3.4.1}
3664: For any total \Sig-algebra $A$ and \,$f\: \Au\pto\As$,
3665: \sn
3666: \ce{$f$ is \WhileCCx\ computable over $A$
3667: \ $\ifff$
3668: \ $f$ is \Whilex\ computable over $A$.}
3669: \endpr
3670:
3671: \Pf
3672: ($\tto$)
3673: Let $P$ be a deterministic \WhileCCx\ \,procedure over $A$
3674: which computes $f$.
3675: Since $A$ is total,
3676: evaluation of any boolean term $b$ over $A$
3677: (relative to a state) converges to \ttt\ or \fff\ in $A$.
3678: Further, since $P$ is deterministic,
3679: its output for a given input is independent of the implementation.
3680: Hence every `\chooses' term in $P$ of the form
3681: \,$\chooses \ \ztt: b[\ztt]$
3682: \, can be replaced by a
3683: \,\qwhiles\ \,loop which
3684: tests \,$b[0],\,b[1], \,b[2],\ \dots$
3685: \,in turn, \ie,
3686: finds
3687: the {\it least\/} $k$ for which \,$b[k]$
3688: \,is true, if it exists, and diverges otherwise.
3689: \endpf
3690:
3691: Applying this to the total algebra \NNN, and
3692: recalling that
3693: \Whilex\ computability over \NNN\
3694: is equivalent to {\it partial recursiveness\/}
3695: (\ie, classical computbility) over \NN\ \cite{tz:hb},
3696: we have:
3697:
3698: \Corn{3.4.2}
3699: For any \,$f\: \NN^m\pto\NN$,
3700: \sn
3701: \ce{$f$ is \WhileCCx\ computable over \NNN\
3702: \ $\ifff$
3703: \ $f$ is partial recursive over \NN.}
3704: \endpr
3705:
3706: \mn
3707: {\bf(b) \,Recursive and non-recursive implementations}
3708:
3709: \n
3710: The semantics \PA\ of a procedure $P$
3711: is given, for an input $x$,
3712: by {\it all paths\/} of the computation tree
3713: \,$T=\CompTreeASsig$ \,(where $S$ is the body of $P$)
3714: \,representing {\it all possible computation sequences\/}
3715: for $S$ starting at state \sig, where
3716: \,$\sig[\att] = x$,
3717: \ie, all possible implementations of
3718: instances of the `\chooses' construct occurring in the execution of $S$
3719: starting at \sig.
3720: This gives rise to interesting computation-theoretic issues
3721: even in the simple case that $A = \NNN$.
3722: In this case we can assume that $T$
3723: is coded as a subset of \NN\
3724: in a standard way.
3725: Now any path of $T$ ending in a leaf is finite,
3726: and therefore (trivially) recursive.
3727: An infinite path or computation sequence
3728: (leading to divergence), however,
3729: may or may not be recursive.
3730:
3731: \Propn{3.4.3}
3732: There is a \WhileCCx(\NNN)\ \,procedure $P$
3733: such that its computation tree
3734: has infinite paths,
3735: but no recursive infinite paths.
3736: \endpr
3737:
3738: \Pf
3739: Our construction of $P$ is
3740: based on the construction of a recursive tree
3741: with infinite paths, but no recursive infinite paths
3742: \cite[V.5.25]{odifreddi:book}.
3743: Let $A$ and $B$ be two disjoint r.e., recursively inseparable sets,
3744: and suppose \,$A = \ran{f}$ \,and \,$B = \ran{g}$
3745: \,where $f$ and $g$ are total recursive functions.
3746: The procedure $P$ can be written in pseudo-code as:
3747: $$
3748: \align
3749: &\funcs \ \,\auxs \ \,\ntt,\,\ktt:\nats,\\
3750: &\qqquad \,\choicesttx:\nats\str,\quad
3751: \curly{\tx{array recording all choices up to present stage \,\ntt}}\\
3752: &\qqquad \,\haltt:\bools\\
3753: &\begins\\
3754: &\qquad\ntt\,:=\,0;\\
3755: &\qquad\choicesttx\,:=\Nulls;\\
3756: &\qquad\haltt\,:=\falses;\\
3757: &\qquad\whiles\ \,\nots\ \,\haltt\ \,\dos\\
3758: &\qqquad \ntt\,:=\,\ntt+1;\\
3759: &\qqquad\choicesttx\,:=\, \Newlengths(\choicesttx, \,\ntt+1);\\
3760: &\qqquad\choicesttx[\ntt]\,:=\,
3761: \chooses \ \ztt: (\ztt = 0 \ \,\ors\ \,\ztt = 1);\\
3762: &\qqquad\fors \ \,\ktt \,:= \,0 \ \,\tos\ \,\ntt-1\ \,\dos\\
3763: &\qqquad\qquad
3764: \ifs\ (\choicesttx[\ktt]=0 \ \,\ands\ \,\ktt\in\curly{f(0),\dots,f(\ntt-1)})
3765: \ \,\ors\\
3766: &\qqquad\qquad\quad
3767: (\choicesttx[\ktt]=1 \ \,\ands\ \,\ktt\in\curly{g(0),\dots,g(\ntt-1)})\\
3768: &\qqquad\qquad\thens \ \,\haltt\,:=\,\trues\\
3769: &\qqquad\ods\\
3770: &\qquad \ods\\
3771: &\ends.
3772: \endalign
3773: $$
3774: Let
3775: \,$\al_0,\,\al_1,\,\al_2,\,\dots$
3776: \,be the successive values (0 or 1) given by the `\chooses' \,operator
3777: in some given implementation of $P$.
3778: Note that at stage $n$,
3779: $$
3780: \choicesttx[k] \ = \ \al_k \qquad \tx{for} \ \,k=0,\dots,n-1.
3781: $$
3782: Further, the execution diverges if, and only if,
3783: the set \,$C \eqdf \curly{k\mid \al_k = 1}$
3784: {\it separates\/} $A$ and $B$ (\ie, \,$A\sseq C$ \,and \,$C\cap B = \nil$),
3785: in which case $C$, and hence its characteristic function
3786: \,$\al = (\al_0, \al_1,\al_2,\dots)$,
3787: are {\it non-recursive\/}.
3788:
3789: Note finally that for any given
3790: sequence \al\ of choices,
3791: \al\ is effectively obtainable
3792: from the corresponding computation sequence or path,
3793: \ie, \al\ is recursive in that path
3794: (with a standard coding of the computation tree).
3795: Hence, since any infinite sequence \al\ is non-recursive,
3796: so is the corresponding infinite path.
3797: \endpf
3798:
3799: \Remarksn{3.4.4}
3800: (1) \,Clearly, $P$ as defined above
3801: is not semantically equivalent to a \Whilex(\NNN) \,procedure.
3802: This does not contradict Proposition 3.4.1,
3803: since $P$ is not deterministic.
3804: \sn
3805: (2) \,According to
3806: our semantics above (\S3.2), for $P$ as defined above,
3807: \,$\ua\in\PA()$,
3808: \,\ie, divergence is possible.
3809: However, if we were to restrict all computation sequences
3810: to be recursive, then divergence would not be a possible outcome
3811: for $\PA()$.
3812: The semantics, as we give it (\ie, all possible computation sequences
3813: are included, whether recursive or not) is simpler than this alternative.
3814: In any case, as we will see,
3815: this choice will not affect continuity considerations
3816: (\cf\ Lemmas 5.1.7 and 5.2.1).
3817: \endpr
3818:
3819: \shead{3.5}{Approximable \,\WhileCCx\ \,computability}
3820: The basic notion of computability that we will be using
3821: in working with metric algebras
3822: is not so much computability,
3823: as rather {\it computable approximability on metric algebras\/},
3824: as discussed in \cite[\S9]{tz:top}. We have to adapt the definition
3825: given there to the nondeterministic case
3826: with countable choice.
3827:
3828: Let $A$ be a metric \Sig-algebra,
3829: $u$ a \Sig-product type and $s$ a \Sig-type.
3830: Let \,$P:\nats\times u \ \to \ s$
3831: \,be a \WhileCCxSigN\ \,procedure.
3832: Put
3833: $$
3834: \PAn \ \eqdf \ \PA(n,\,\cdot\,):\ \Au \ \totop \ \Asua.
3835: $$
3836: Note that that
3837: for all \xinAu, \,$\PAn(x)\ne \nil$.
3838:
3839:
3840: \Defn{3.5.1 \,(\WhileCCx\ \,approximability to a single-valued function)}
3841: \nl
3842: Let \,$F:\Au\pto \As$
3843: \,be a single-valued partial function on $A$.
3844: \sn
3845: ($a$)
3846: \,$F$ is {\it \WhileCCx\ approximable\/} by $P$ on $A$
3847: if for all \,\ninNN\ \,and \,all \xinAu:
3848: $$
3849: x \in \dom{F} \ \impp\ \ua \,\notin \,\PAn(x)\ \sseq\ \Bb(F(x),\,2^{-n}).
3850: \tag1
3851: $$
3852: ($b$) $F$ is {\it strictly \WhileCCx\ approximable\/} by $P$ on $A$
3853: if in addition to (1),
3854: $$
3855: x \notin \dom{F} \ \impp\ \PAn(x)=\curly{\ua}.
3856: \tag2
3857: $$
3858:
3859: \Remarkn{3.5.2}
3860: If $F$ is strictly approximable by $P$, then
3861: (from (1) and (2))
3862: for all \xinAu\ and all $n$:
3863: $$
3864: F(x)\ua \ \ \ifff\ \ \ua \in \PAn(x) \ \ \ifff\ \ \PAn(x) = \curly{\ua}.
3865: $$
3866: \endpr
3867:
3868: Clearly, \WhileCCx\ \,{\it computability\/} is a special case of
3869: \WhileCCx\ \,{\it approximability\/}.
3870: \endpr
3871:
3872: \Defn{3.5.3 \ (\WhileCCx\ \,approximability to a many-valued function)}
3873: \nl
3874: Let \,$F:\Au\toto \As$
3875: \,be a countably-many-valued function on $A$.
3876: \sn
3877: \itemm{($a$)}
3878: \,$F$ is {\it \WhileCCx\ approximable\/} by $P$ on $A$
3879: if for all \,\ninNN\ \,and \,all \xinAu:
3880: $$
3881: \aligned
3882: F(x)\ne\nil \ \ \impp\ \ \ua \,\notin \,\PAn(x)\ &\sseq\
3883: \bigcup_{y\in F(x)}\Bb(y,\,2^{-n}) \\
3884: \tx{and} \quad F(x) \ &\sseq\ \bigcup_{y\in\PAn(x)}\Bb(y,\,2^{-n}).
3885: \endaligned
3886: \tag3
3887: $$
3888: Note that
3889: (assuming $\ua\notin\PAn(x)$)
3890: the r.h.s. of (3) implies
3891: $$
3892: \dsH(\ol{F(x)},\,\ol{\PAn(x)}) \,\le \,2^{-n},
3893: \tag4
3894: $$
3895: and is implied by
3896: $$
3897: \dsH(\ol{F(x)},\,\ol{\PAn(x)}) \,< \,2^{-n},
3898: \tag5
3899: $$
3900: where \,$\ol{X}$ \,denotes the closure of $X$,
3901: and \dsH\ is the {\it Hausdorff metric\/} on the set of
3902: closed, bounded non-empty subsets of \As\ \cite[4.5.23]{engelking:book}.
3903: (Actually, the Hausdorff metric applies only to the space of closed
3904: {\it bounded\/} subsets of a given metric space,
3905: so (4) and (5) should be taken as heuristic statements.)
3906:
3907: \n
3908: In other words
3909: (assuming $F(x)\ne0$), for all \xinAu\ and all $n$,
3910: \,{\it each\/} output of $F(x)$ lies within $2^{-n}$ of
3911: some output of $\PAn(x)$,
3912: and vice versa.
3913:
3914: \itemm{($b$)}
3915: $F$ is {\it strictly \WhileCCx\ approximable\/} by $P$ on $A$
3916: if in addition,
3917: $$
3918: \F(x) = \nil \ \ \impp\ \ \PAn(x) = \curly{\ua}.
3919: $$
3920: \endpr
3921:
3922: \Remarkn{3.5.4}
3923: (\Cf\ Remark 3.5.2.)
3924: %\nl
3925: \,If $F$ is strictly approximable by $P$, then
3926: for all \xinAu\ and all $n$:
3927: $$
3928: F(x)=\nil \ \ \ifff\ \ \ua \in \PAn(x) \ \ \ifff\ \ \PAn(x) = \curly{\ua}.
3929: $$
3930: \endpr
3931:
3932: \bn
3933:
3934: \itemm{\bbf4\ \ }{\bbf Examples of \WhileCCxbig\ computations and approximating
3935: \nl
3936: computations}
3937:
3938: %In a partial algebra the search technique of interleaving fails.
3939: %This is because interleaving depends on scheduling
3940: %{\it terminating\/} computations, and the algebraic operations
3941: %of the algebra cannot be relied upon to terminate
3942: %(\cf\ \cite[\S5.2]{tz:hb}).
3943: %Of course, the failure of interleaving plays havoc with the theory
3944: %of \While\ computations for partial algebras.
3945:
3946: \shead{4.1}{Discussion: \,Use of `\chooses' for searching and dovetailing}
3947: Following the examples in Section 1,
3948: the `\chooses' construct was introduced to compute many-valued functions.
3949: Technically, the `\chooses' construct strengthens the power
3950: of the \While\ \,language in performing searches.
3951: In a {\it partial algebra\/}, simple searches
3952: (\eg, ``find some $x_k$ in an effectively enumerated set
3953: \,$X = \curly{x_0,x_1,x_2,\dots}$
3954: \,satisfying $b(x_k)$")
3955: will obviously fail in general if the search simply
3956: follows the given enumeration of $X$
3957: (\ie, testing in turn whether \,$b(x_0)$, $b(x_1)$, $b(x_2)$, \dots
3958: holds),
3959: since the computation of the boolean predicate $b(x)$ may not terminate
3960: for some $x$.
3961:
3962: This problem is overcome, at the {\it concrete model\/} level,
3963: by the use of scheduling techniques such as
3964: {\it interleaving\/} or ``{\it dovetailing\/}":
3965: \,at stage $n$, do $n$ steps in testing whether $b(x_i)$
3966: holds, for $i=0,\dots,n$.
3967:
3968: An important function of the `\chooses' construct, which
3969: will recur in our examples, is to simulate such scheduling techniques
3970: at the {\it abstract model\/} level.
3971: This allows searches over any countable subset $X$
3972: of an algebra $A$ that has a computable enumeration
3973: $$
3974: \enumX:\ \NN\ \to\ X,
3975: $$
3976: since we can search $X$ in $A$ by assignments such as
3977: $$
3978: \xtt\ :=\ \enumX(\chooses\ \ztt:b(\enumX(\ztt))).
3979: $$
3980: \endpr
3981:
3982: \shead{4.2}{Examples}
3983: We now illustrate the use of the \WhileCCx\ \,language
3984: in topological partial algebras
3985: with examples,
3986: which involve computations which are either many-valued,
3987: or approximating, or both.
3988: The examples given in \S1.2 to motivate many-valued abstract computation
3989: are a good place to start.
3990: They can be displayed in the table:
3991:
3992: \bn
3993: \ruledtable
3994: \| Exact computation | Approximating computation \crthick
3995: Single-valued \| Gaussian elimination | $e^x$, sin($x$), etc. \cr
3996: Many-valued \| Approx. points in metric algebra | All simple roots of polynomial
3997: \endruledtable
3998: \sn
3999:
4000: Examples 4.2.1, 4.2.2 and 4.2.4 below are all based on the
4001: metric algebra derived from \,\RRRN\ \,(Example 2.3.3($b$)).
4002:
4003:
4004: \Examplen{4.2.1 \,(Gaussian elimination)}
4005: This is a single-valued exact computation.
4006: The algorithm can be found in any standard
4007: text of numerical computation,
4008: \eg, \cite{heath:book}.
4009: It is deterministic, but only in the weak sense
4010: (\cf\ Remark 3.2.6), since it contains, as an
4011: essential component, the computation of the {\it pivot\/} function (\S1.2),
4012: which is many-valued, and can be formalised simply with the
4013: `\chooses' construct:
4014: $$
4015: \align
4016: &\funcs \ \ \ins\ \ \xtt_1,\dots,\xtt_n\:\reals\\
4017: &\qquad\outs\ \ \itt\:\nats\\
4018: &\qquad\auxs\ \ \ktt\:\nats\\
4019: &\begins\\
4020: &\qquad\itt\,:=
4021: \,\chooses \ \ktt\: (\ktt = 1 \ \,\ands\ \,\xtt_1 \ne 0) \ \,\ors\\
4022: &\qqqquad\quad (\ktt = 2 \ \,\ands\ \,\xtt_2 \ne 0) \ \ors\\
4023: &\qqqquad\qqquad \dots\\
4024: &\qqqquad\quad (\ktt = n \ \,\ands\ \,\xtt_n \ne 0)\\
4025: &\ends.
4026: \endalign
4027: $$
4028:
4029:
4030: \Examplen{4.2.2 \,(Approximations to \,${\bk e}^{\bk x}$)}
4031: On the N-standard interval algebra \,\IIIN\ (Example 2.5.3($c$))
4032: we give a \While\ procedure to approximate the function $e^x$ on $I$.
4033: $$
4034: \align
4035: &\funcs \ \ \ins\ \ \ntt\:\nats,\qquad\curly{\tx{degree of approximation}}\\
4036: &\qqquad \xtt\:\intvls\\
4037: &\qquad\outs\ \ \stt\:\reals \qquad\,\curly{\tx{partial sum of power series}}\\
4038: &\qquad\auxs \ \ \ytt\:\reals,\quad\ \,\curly{\tx{current term of series}}\\
4039: &\qqquad \,\ktt\:\nats\qquad\,\curly{\tx{counter}}\\
4040: &\begins\\
4041: &\qquad\ktt\,:=\,0;\\
4042: &\qquad\ytt\,:=\,1;\\
4043: &\qquad\stt\,:=\, 1;\\
4044: &\qquad\whiles\ \,\ktt<2^{\ntt+1}\ \,\dos\\
4045: &\qqquad \ktt\,:=\,\ktt+1;\\
4046: &\qqquad\ytt\,:=\, \ytt\times\iI(\xtt)/\,\iN(\ktt);
4047: \qquad\curly{\ytt=\xtt^\ktt/\ktt\,!}\\
4048: &\qqquad\stt\,:=\,\stt+\ytt \qqquad\qquad\quad
4049: \curly{\stt = \sum_{i=0}^\ktt \xtt^i/i\,!}\\
4050: &\qquad \ods\\
4051: &\ends
4052: \endalign
4053: $$
4054: where \,$\iI:I\to\RR$
4055: \,is the embedding of $I$ in \RR,
4056: which is primitive in \Sig(\IIIN),
4057: and \,$\iN:\NN\to\RR$ \,is the embedding of \NN\ in \RR,
4058: which is easily definable in \While(\RRRN).
4059:
4060: Denoting the above function procedure by $P$,
4061: and \IIIN\ by $A$,
4062: we have the semantics
4063: $$
4064: P_n^A\: I \ \to\ \RR
4065: $$
4066: with
4067: $$
4068: P_n^A(x) \ = \ \sum_{i=0}^{2^{n+1}} {{x^i}\over{i\,!}}
4069: $$
4070: and so for all $x\in I$,
4071: $$
4072: \ds(P_n^A(x),\,e^x)\ < \ 2^{-n},
4073: $$
4074: \ie, $e^x$ is \While\ approximable on \,\IIIN\ by $P$.
4075:
4076: This computation of $e^x$ is single-valued, but approximating.
4077:
4078:
4079:
4080:
4081: \Examplen{4.2.3 \,(``Choosing" a member of an enumerated subspace
4082: close to an arbitrary element of a metric algebra)}
4083: Given a metric algebra $A$ with a countable dense
4084: subspace $C$, \ and an enumeration of $C$
4085: $$
4086: \enumC\: \NN\ \onto\ C
4087: $$
4088: in the signature,
4089: we want to compute a function
4090: $$
4091: F\:A\times\NN\ \to\ C
4092: $$
4093: such that
4094: $$
4095: F(a,n) \ =\ \tx{``some" $x\in C$ \,such that \,$\ds(a,x)\,<\,2^{-n}$}.
4096: $$
4097: This is a generalised version of the problem
4098: of approximating reals by rationals (Example 1.2.3).
4099:
4100: Here is a \WhileCCx\ procedure (in pseudo-code)
4101: for an exact computation of this function.
4102: (Note that the real-valued function \,$2^{-n}$ \,is \While\ computable on
4103: \,\RRRN, \,and hence on $A$.)
4104: $$
4105: \align
4106: &\funcs \ \ins\ \ \ \att:\spaces,\\
4107: &\qqquad \ntt:\nats\\
4108: &\qquad\outs\ \ \xtt:\spaces\\
4109: &\qquad\auxs\ \ \ktt:\nats\\
4110: &\begins\\
4111: &\qquad\xtt\,:=
4112: \,\enumC \big(\chooses \ \ktt: \ds(\att, \enumC(\ktt))<2^{-\ntt}\big)\\
4113: &\ends
4114: \endalign
4115: $$
4116: This computation is many-valued, but exact.
4117:
4118:
4119:
4120: \Examplen{4.2.4 \,(Finding simple roots of a polynomial)}
4121: We construct a
4122: \WhileCC\ procedure to approximate ``some" simple root
4123: of a polynomial $p(X)$ with real coefficients,
4124: using the method of bisection.
4125: By a {\it simple root of\/} $p(X)$ we mean a real root
4126: at which $p(X)$ changes sign.
4127: (See \cite{heath:book}. In practice, a hybrid method is generally used,
4128: involving bisection, Newton's method, etc.)
4129:
4130:
4131: Fundamental to the bisection method is the concept
4132: of
4133: a {\it bracket\/} for $p(X)$,
4134: which means an
4135: interval \,$[a,b]$
4136: \,such that $p(a)$ and $p(b)$ have opposite signs.
4137: By {\it rational bracket\/},
4138: we mean a bracket with rational endpoints.
4139:
4140:
4141: We note the following:
4142:
4143: \itemm{(1)}
4144: Any bracket for $p$ contains a
4145: root of $p$
4146: (by the Intermediate Value Theorem),
4147: in fact a simple root of $p$.
4148:
4149: \itemm{(2)}
4150: Conversely, any simple root of $p$
4151: is contained in
4152: a rational bracket for $p$
4153: of arbitrarily small width.
4154:
4155: \itemm{(3)}
4156: If $x$ is a simple root of $p$,
4157: then any bracket for $p$ of sufficiently small width
4158: which contains $x$,
4159: contains no other simple root of $p$.
4160:
4161: \itemm{(4)}
4162: If $[a,b]$ is a bracket for $p$,
4163: then, putting \,$m = (a+b)/2$,
4164: exactly one of the following holds:
4165: \itemmm{$(i)$}
4166: $p(m)= 0$; then $m$ is a root of $p$ (not necessarily simple);
4167: \itemmm{$(ii)$}
4168: $p(m)$ has the same sign as $p(a)$;
4169: then $[m,b]$ is a bracket for $p$;
4170: \itemmm{$(iii)$}
4171: $p(m)$ has the same sign as $p(b)$;
4172: then $[a,m]$ is a bracket for $p$.
4173:
4174: It follows from the above that
4175: starting with any
4176: rational bracket $J$ for $p$,
4177: we can, by repeated bisection,
4178: find a nested sequence of rational brackets
4179: $$
4180: J = J_0, \ J_1,\ J_2,\dots
4181: \qquad
4182: \tx{where}
4183: \qquad
4184: \bigcap_{n=0}^\infty J_n = \curl{x}
4185: $$
4186: for some simple root $x$ of $p$.
4187: Then, letting $r_n$ be the left-hand endpoint
4188: of $J_n$, we have a fast Cauchy sequence
4189: \,$\ang{r_n}_n$
4190: \,with limit $x$.
4191:
4192: One complication with our algorithm
4193: is the occurrence of case ($i$) in (4) above,
4194: \ie, the case that the midpoint $m$ of the bracket
4195: is itself a root of $p$,
4196: since by the co-semicomputabil\-ity of
4197: equality (Discussion 2.2.5) on \RR\ we can only verify when
4198: $f(m)\ne 0$, not when $f(m)=0$.
4199: We therefore proceed as follows.
4200: By means of the `\chooses' construct,
4201: we search in the middle third (say) of the bracket $[a,b]$
4202: for a ``division point", \ie, a rational point $d$ such that $f(d)\ne0$,
4203: producing
4204: either $[a,d]$ or $[d,b]$ as a sub-bracket.
4205:
4206: This new bracket may not halve the width
4207: of $[a,b]$; in the worst case its width
4208: is $2/3$ the width of $[a,b]$.
4209: However a second iteration of this procedure
4210: leads to a bracket of width at most
4211: $(2/3)^2 < 1/2$ the width of $[a,b]$,
4212: and so $2n$ iterations lead to a bracket of width
4213: less than $2^{-n}\,\times$ the width of $[a,b]$.
4214:
4215: This new bracket may not halve the width
4216: of $[a,b]$; in the worst case its width
4217: is $2/3(b-a)$.
4218: However a second iteration of this procedure
4219: leads to a bracket of width at most
4220: $(2/3)^2 < 1/2$ the width of $[a,b]$,
4221: and so $2n$ iterations lead to a bracket of width
4222: less than $2^{-n}(b-a)$.
4223:
4224: For convenience,
4225: we will use the following two conservative extensions
4226: to our ``official" programming notation:
4227:
4228: \itemm{($a$)}
4229: Simultaneously choosing two naturals with a single condition:
4230: $$
4231: \ktt_1,\ktt_2\ := \ \chooses\ \ztt_1, \ztt_2: b[\ztt_1,\ztt_2]
4232: $$
4233: which is easily expressible in \WhileCC\
4234: \,by the use of a primitive recursive pairing function
4235: \pairs\ on \NN\ and its inverses \,$\projs_1, \projs_2$:
4236: $$
4237: \align
4238: \ktt\ &:=\ \chooses\ \ztt: b[\projs_1(\ztt),\projs_2(\ztt)];\\
4239: \ktt_1,\ktt_2\ &:=\ \projs_1(\ktt), \projs_2(\ktt)
4240: \endalign
4241: $$
4242: \itemm{($b$)}
4243: Choosing a rational (of type \reals) satisfying a boolean condition:
4244: $$
4245: %\qtt\ := \ \chooses\ \rtt^\realss: \big(\Rat(\rtt) \ \ands \ b[\rtt]\big)
4246: \qtt\ := \ \chooses\ \rtt^\realss:
4247: \big(\tx{``\rtt\ is rational"} \ \ands \ b[\rtt]\big)
4248: $$
4249: Let \,$\rats: \NN\to \RR$
4250: \,be a \While-computable enumeration
4251: of the rationals in \RR.
4252: Then this can be interpreted as:
4253: $$
4254: \qtt := \rats\big(\chooses\ \ktt: b[\rats(\ktt)]\big)
4255: $$
4256:
4257: \n
4258: Finally, a polynomial $p(X)$ over \RR\
4259: will be represented by an element \px\ of \RRx:
4260: $$
4261: \px\ = \ (\tup{a}0{n-1})\ = \ \sum_{i=0}^{n-1}a_i X^{n-i}
4262: $$
4263: Its evaluation at a point $c$,
4264: denoted by $\px(c)$,
4265: is easily seen to be
4266: \While(\RRR) computable in \px\ and $c$.
4267:
4268:
4269: Now we give a \WhileCCx\ procedure for approximably computing
4270: some simple root of an
4271: input polynomial, in the signature of \RRR.
4272: $$
4273: \align
4274: &\funcs \ \ins\quad \ \ \ntt:\nats,\qquad
4275: \ \curly{\tx{degree of approximation}}\\
4276: &\qqquad \,\pttx:\reals\str\
4277: \qquad\curly{\tx{input polynomial, given by list of coefficients}}\\
4278: &\qquad\outs\ \ \ \ \xtt:\reals \qquad\ \curly{\tx{approximation to root}}\\
4279: &\qquad\auxs\ \att,\btt:\reals, \qquad\curly{\tx{endpoints of bracket}}\\
4280: &\qqquad\ \ \,\dtt:\reals,\qquad\curly{\tx{division point of bracket}}\\
4281: &\qqquad \ \ \ \ktt:\nats\qquad\ \curly{\tx{counter}}\\
4282: &\begins\\
4283: &\qquad\ktt\,:=\,0;\\
4284: &\qquad
4285: \att, \btt\,:=\, \chooses\ \att, \btt: (\tx{``\att\ and \btt\ are rational"}
4286: \ \ \ands\ \ \att < \btt < \att+1 \ \ \ands\\
4287: & \qqqquad\qqquad\ \ (\pttx(\att)>0 \ \,\ands\ \,\pttx(\btt)<0)\\
4288: & \qqqquad\qquad\quad
4289: \ \ors\ \ (\pttx(\att)<0 \ \,\ands\ \,\pttx(\btt)>0));\\
4290: &\qquad\whiles\ \,\ktt<2\ntt\ \,\dos\\
4291: &\qqquad \ktt\,:=\,\ktt+1;\\
4292: &\qqquad \dtt\,:=\, \chooses\ \dtt: (\tx{``\dtt\ is rational"}\ \ \ands
4293: \ \ (2\att+\btt)/3 < \dtt < (\att+2\btt)/3 \\
4294: &\qqqquad\qqquad \ands\ \ \pttx(\dtt)\ne 0);\\
4295: &\qqquad \ifs\ \ (f(\dtt)>0\ \,\ands\ \,f(\att)>0)
4296: \ \ \ors \ \ (f(\dtt)<0\ \,\ands\ \,f(\att)<0)\\
4297: &\qqquad\qquad\thens \ \ \att,\btt\,:=\, \dtt,\btt\qquad
4298: \curly{\tx{new bracket on right part of old}}\\
4299: &\qqquad\qquad\elses \ \ \,\,\att,\btt\,:=\, \att,\dtt\qquad
4300: \curly{\tx{new bracket on left part of old}}\\
4301: &\qqquad \fis\\
4302: &\qquad \ods;\\
4303: &\qquad \xtt\,:= \,\att \qqqquad\qquad
4304: \ \ \curly{\tx{$\xtt\,:=\,\btt$ \,would also work here}}\\
4305: &\ends.
4306: \endalign
4307: $$
4308: For input natural $n$ and polynomial $p$,
4309: the output is within $2^{-n}$ of some simple root of $p$.
4310: Further, for {\it any\/} simple root $e$ of $p$, there is
4311: {\it some\/} implementation of the `\chooses' operator
4312: which will give an output within $2^{-n}$ of $e$.
4313: Finally, the computation will diverge
4314: if, and only if, $p$ has no simple roots.
4315:
4316: This computation is both many-valued and approximating.
4317:
4318: \newpage
4319:
4320: \itemm{\bbf5\ \ }{\bbf Countably-many-valued functions; \
4321: Continuity of \WhileCCxbig
4322: \nl
4323: computable functions}
4324:
4325: \mn
4326: In this section we discuss the continuity of
4327: countably-many-valued functions, and then prove that the
4328: countably-many-valued functions
4329: computed by \WhileCCx\ programs
4330: are continuous.
4331:
4332: \shead{5.1}
4333: {Topology and continuity with countably many values and
4334: `$\bs \uparrow$'}
4335: Recall Notation 3.2.1.
4336:
4337:
4338: \Defn{5.1.1 \ (Totality)}
4339: The function \,$f:X\toto Y$
4340: \,is said to be {\it total\/} if for all \,$x\in X$, \,$f(x)$
4341: is a {\it non-empty\/} subset of $Y$,
4342: \ie, if \,$f:X\totop Y$.
4343: \endpr
4344:
4345: Our semantic functions (in Section 6) will typically be of the form
4346: $$
4347: \Phi: \ \Au \ \totop \ \Avua.
4348: \tag1
4349: $$
4350:
4351: \Remarkn{5.1.2}
4352: We think of the ``deterministic version" of (1)
4353: as being a total function \,\Ph, \,where
4354: for each $x\in X$, $\Ph(x)$ is a {\it singleton\/},
4355: containing either an element of \Av\ (to indicate convergence)
4356: or `\ua' (to indicate divergence).
4357: %In the present context, this is more appropriate
4358: %for the representation of a deterministic semantic (partial)
4359: %function than by specifying \,$\Ph(x) = \nil$ \,for divergence.
4360: (Recall Remark 3.2.2.)
4361: \endpr
4362:
4363: We must now consider what it means for such a function (1)
4364: to be {\it continuous\/}.
4365:
4366: \Defn{5.1.3 \ (Continuity)}
4367: Let \,$f\:X\toto Y$, where $X$ and $Y$ are topological spaces.
4368: \sn($a$)
4369: For any \,$V\sseq Y$,
4370: $$
4371: f^{-1}[V] \ \eqdf\ \ \curly{x\in X \br f(x)\cap V \ne \nil},
4372: $$
4373: \ie, \,$x\in f^{-1}[V]$ \,iff
4374: at least one of the elements of \,$f(x)$ \,lies in $V$.
4375: \sn($b$)
4376: $f$ is {\it continuous\/}
4377: (w.r.t. $X$ and $Y$) iff for all open \,$V\sseq Y$,
4378: \,$f^{-1}[V]$ \,is open in $X$.
4379: \endpr
4380:
4381: \Remarksn{5.1.4}
4382: ($a$) For metric spaces $X$ and $Y$, Definition 5.1.3($b$)
4383: becomes:
4384: \nl
4385: $f\:X\toto Y$ \,is continuous iff
4386: $$
4387: \all a\in X \,\all b\in f(a)\,\all\eps>0 \,\ex\del>0 \,\all x\in \Bb(a,\del)
4388: \,\bigl(f(x)\cap \Bb(b,\eps)\ne\nil\bigr).
4389: $$
4390: ($b$) Definition 5.1.3($b$) reduces to
4391: the standard definition of continuity for
4392: total single-valued functions from $X$ to $Y$.
4393: \sn
4394: ($c$) It also reduces to the definition of continuity for partial
4395: single-valued functions (Definition 2.5.1 and Remark 2.7.2($a$)),
4396: as we will see below (Remark 5.1.9).
4397: We must first see how to extend the topology on $Y$ to that on \Yua\
4398: (Definition 5.1.6 below).
4399: \endpr
4400:
4401: \Defn{5.1.5}
4402: For two functions
4403: \ $f\: X \toto Y$,
4404: \ $g\: X \toto Y$,
4405: \ we define
4406: $$
4407: f\,\sqsseq \,g \ \ \ifffdf\
4408: \ \tx{for all} \ x\in X, \ f(x) \,\sseq \,g(x).
4409: $$
4410: \endpr
4411:
4412: \Defn{5.1.6 \,(Topology on \,\Yua)}
4413: We extend the topology on $Y$ to
4414: \,\Yua\ ($= Y\cup\curly{\ua}$)
4415: by specifying that the only open set containing \,\curly{\ua}
4416: \,is \,\Yua. (So \,\Yua\ \,is a ``one-point compactification" of $Y$.)
4417: \endpr
4418:
4419:
4420: Now, given a function
4421: \,$f : \ X \toto \Yua$,
4422: \,we define functions
4423: \TOL
4424: $$
4425: \align
4426: \fua:& \ X \ \toto \ \Yua\\
4427: \fmin:& \ X \ \toto \ Y
4428: \tag"and"
4429: \endalign
4430: $$
4431: by
4432: $$
4433: \align
4434: \fua(x) \ &= \ f(x)\cup\curly{\ua}\\
4435: \fmin(x) \ &= \ f(x) \backslash \curly{\ua}.
4436: \endalign
4437: $$
4438: \TOR
4439: In other words, \,\fua\ \,{\it adds\/} \,`\ua' \,to the set \,$f(x)$
4440: \,for each \,$x\in X$
4441: \,and \,\fmin\ \,{\it removes\/} \,`\ua' \,from every such set.
4442: This changes the semantics of $f$
4443: (see Remark 3.2.2), but not its {\it continuity properties\/},
4444: as will be seen from the following technical lemma,
4445: which will be used
4446: in the proof of continuity
4447: of computable functions below (\S5.2).
4448:
4449: \Lemman{5.1.7}
4450: Let
4451: \ $f:\ X\ \toto \ Y$
4452: and
4453: \ $g:\ X\ \totop \ \Yua$
4454: \ be any two functions such that
4455: $$
4456: f\ \sqsseq\ g \ \sqsseq\ \fua,
4457: $$
4458: %for all \,$x\in X$,
4459: %$$
4460: %f(x) \ \sseq \ g(x) \ \sseq \ f(x)\cup\curly{\ua}
4461: %$$
4462: \ie, for all $x\in X$,
4463: \,$g(x) \ne\nil$,
4464: \,and either \,$g(x) = f(x)$ or $g(x) = f(x)\cup \curly{\ua}$.
4465: Then
4466: $$
4467: f\ \ \tx{is continuous} \ \ \ifff\ \ g\ \ \tx{is continuous}.
4468: $$
4469: \endpr
4470: \Pf
4471: ($\tto$)
4472: \ Suppose $f$ is continuous.
4473: We must show $g$ is continuous.
4474: Let $V$ be an open subset of \Yua.
4475: We must show \,$g^{-1}[V]$ \,is open in $X$.
4476: There are two cases, according as \ua\ is in $V$ or not.
4477: \sn
4478: {\it Case 1}: \,$\ua\notin V$, \ie, $V\sseq Y$.
4479: \ Then $V$ is also open in $Y$ (by definition of the topology on \Yua).
4480: Hence \,$f^{-1}[V]$ \,is open in $X$, and hence
4481: $$
4482: \align
4483: g^{-1}[V] \ &= \ \curly{x\in X \mid g(x)\cap V\ne\nil}\\
4484: &= \ \curly{x\in X\mid f(x)\cap V\ne\nil}\qquad\tx{since $\ua\notin V$}\\
4485: &= \ f^{-1}[V]
4486: \endalign
4487: $$
4488: is open in $X$.
4489: \sn
4490: {\it Case 2}: \,$\ua\in V$.
4491: \ Then $V = \Yua$
4492: (by definition of the topology on \Yua).
4493: Hence
4494: $$
4495: g^{-1}[V] \ = \ g^{-1}[\Yua] \ = \ X \qquad \tx{(since $g$ is total)},
4496: $$
4497: which is open in $X$.
4498: \sn
4499: ($\ffrom$)
4500: \ Suppose $g$ is continuous.
4501: We must show $f$ is continuous.
4502: Let $V$ be an open subset of $Y$.
4503: We must show \,$f^{-1}[V]$ \,is open in $X$.
4504: Since $V$ is also open in \Yua\
4505: (by definition of the topology on \Yua),
4506: $g^{-1}[V]$ \,is open in $X$. Hence
4507: $$
4508: \align
4509: f^{-1}[V] \ &= \ \curly{x\in X \mid f(x)\cap V\ne\nil}\\
4510: &= \ \curly{x\in X\mid g(x)\cap V\ne\nil}\qquad\tx{since $\ua\notin V$}\\
4511: &= \ g^{-1}[V]
4512: \endalign
4513: $$
4514: is open in $X$.
4515: \endpf
4516:
4517:
4518:
4519: \Corn{5.1.8}
4520: Suppose
4521: \ $f: X\ \totop \Yua$ \ (\ie, $f$ is total). Then
4522: $$
4523: f\ \ \tx{is continuous} \ \ \ifff\ \ \fmin\ \ \tx{is continuous}
4524: \ \ \ifff\ \ \fua\ \ \tx{is continuous}.
4525: $$
4526: \endpr
4527:
4528: \Pf
4529: Apply Lemma 5.1.7 twice:
4530: once with \,\fmin\ \,and $f$,
4531: and once with \,\fmin\ \,and \,\fua.
4532: \endpf
4533:
4534:
4535: \Remarkn{5.1.9 \,(Justification of Remark 5.1.4($c$))}
4536: Let \,$f:X\pto Y$
4537: \,be a single-valued partial function.
4538: Define
4539: \sn
4540: ($a$) \,$\fcheck\:X\toto Y$ \,by
4541: $$
4542: \fcheck(x) \ = \
4543: \cases
4544: \curly{f(x)} \ift{$x\in\dom{f}$}\\
4545: \nil \ow
4546: \endcases.
4547: $$
4548: ($b$) \,$\fhat\:X\totop \Yua$ \,by
4549: $$
4550: \fhat(x) \ = \
4551: \cases
4552: \curly{f(x)} \ift{$x\in\dom{f}$}\\
4553: \curly{\ua} \ow.
4554: \endcases
4555: $$
4556: (We can view either \,\fcheck\ \,or \,\fhat\ \,as
4557: ``representing" $f$ in the present context, \cf\ Remark 5.1.2.)
4558: \,Then
4559: $$
4560: \align
4561: &f\ \ \tx{is continuous \ (according to Def\. 2.5.1)} \\
4562: \ifff\ \ &\fcheck\ \ \tx{is continuous \ (according to Def\. 5.1.3)}\\
4563: \ifff\ \ &\fhat\ \ \tx{is continuous \ (according to Def\. 5.1.3)}
4564: \endalign
4565: $$
4566: The equivalence of the continuity of $f$ and \,\fcheck\
4567: \,follows immediately from the definitions.
4568: The equivalence of the continuity of \,\fcheck\ \,and \,\fhat\
4569: \,follows from Lemma 5.1.7.
4570: \endpr
4571:
4572: \Remarkn{5.1.10 \,(Comparison with W-continuity)}
4573: As in \S2.7, we can consider another notion of continuity
4574: for functions \,$f:X\toto Y$ \,by modifying Definition 5.1.3($b$);
4575: \,namely,
4576: $f$ is W-continuous
4577: iff for all open \,$V\sseq Y$,
4578: \,$f^{-1}[V]$ \,is open in \dom{f}.
4579: Note that Lemma 5.1.7, and
4580: the equivalences given in Remark 5.1.9,
4581: also hold for W-continuity.
4582: \endpr
4583:
4584: \Lemman{5.1.11}
4585: Given \,$f:X\toto \Yua$, \,extend it to
4586: \,$\ftil:\Xua\toto\Yua$ \,by stipulating that \,$\ftil(\ua) = \ua$.
4587: If $f$ is continuous and total, then \ftil\ is continuous.
4588: \endpr
4589:
4590: \Pf
4591: Let $V$ be an open subset of \Yua.
4592: We must show \,$\ftil^{-1}[V]$ \,is open in \Xua.
4593: There are two cases:
4594: \sn
4595: {\it Case 1}: \,$\ua\notin V$, \ie, $V\sseq Y$.
4596: Then \,$\ftil^{-1}[V] = f^{-1}[V]$,
4597: \,which is open in $X$, and hence in \Xua.
4598: \sn
4599: {\it Case 2}: \,$\ua\in V$.
4600: \ Then $V = \Yua$
4601: (by definition of the topology on \Yua).
4602: Hence
4603: $$
4604: \align
4605: \ftil^{-1}[V] \ &= \ \ftil^{-1}[\Yua] \\
4606: &= \ \dom{f}\cup \curly{\ua}\\
4607: &= \ X\cup\curly{\ua} \qquad\tx{(since $f$ is total)}
4608: \endalign
4609: $$
4610: which is open in \Xua.
4611: \endpf
4612:
4613: \Defn{5.1.12 \,(Composition)}
4614: \nl
4615: ($a$) Suppose \ $f:X\toto Y$ \ and \ $g:Y\toto Z$.
4616: \ We define \ $g\circ f:X\toto Z$ \ by
4617: $$
4618: (g\circ f) (x)\ = \ \bigcup\curly{g(y)\mid y\in f(x)}.
4619: %\ \ \curly{z\in \Zua \br \ex y\in f(x)\cap Y \,(z\in g(y))}
4620: $$
4621: ($b$)
4622: Suppose \ $f:X\toto \Yua$ \ and \ $g:Y\toto\Zua$.
4623: \ We define \ $g\circ f:X\totop \Zua$ \ by
4624: $$
4625: \align
4626: (g\circ f) (x)\ = \ &
4627: \quad\ \,\bigcup\curly{g(y)\mid y\in f(x)\cap Y}\\
4628: %\quad\ \,\curly{z\in \Zua \br \ex y\in f(x)\cap Y \,(z\in g(y))}\\
4629: &\cup\ \curly{\ua \br \ua \in f(x)}
4630: \endalign
4631: $$
4632: \endpr
4633: %Note that $g\circ f$, as defined in ($b$), is the composition
4634: %(in the sense of ($a$)) of \gtil\ (in the notation of Lemma 5.1.11)
4635: %and $f$.
4636:
4637: \Propn{5.1.13 \,(Continuity of composition)}
4638: \sn
4639: ($a$)
4640: If \ $f:X\toto Y$ \ and \ $g:Y\toto Z$ \ are continuous,
4641: then so is \ $g\circ f:X\toto Z$.
4642: \sn
4643: ($b$)
4644: If \ $f:X\totop \Yua$ \ and \ $g:Y\totop \Zua$ \ are continuous,
4645: then so is \ $g\circ f:X\totop \Zua$.
4646: \endpr
4647:
4648: \Pf
4649: ($a$) Just note that
4650: for \,$W\sseq Z$,
4651: $$
4652: (g\circ f)^{-1}[W] \ = \ f^{-1}[g^{-1}[W]].
4653: $$
4654: ($b$)
4655: We give two proofs:
4656: \ ($i$) Note that
4657: $$
4658: (g\circ f)^- \ = \ g^- \circ f^- :\ X \ \toto \ Z
4659: $$
4660: and use part ($a$) and Corollary 5.1.8.
4661: \sn
4662: ($ii$)
4663: Note that
4664: for \,$W\sseq \Zua$,
4665: $$
4666: (g\circ f)^{-1}[W] \ = \ f^{-1}[\gtil^{-1}[W]]
4667: $$
4668: (in the notation of Lemma 5.1.11), and apply Lemma 5.1.11.
4669: \endpf
4670:
4671: \Defn{5.1.14 \,(Union of functions)}
4672: Let \,$f_i:X\toto \Yua$ \,be a family of functions for \iinI.
4673: Suppose for all \,$x\in X$, \,$\bigcup_\iinI f_i(x)$
4674: \,is countable.
4675: Then we define
4676: $$
4677: \bigsqcup_\iinI f_i:\ X \ \toto \ \Yua
4678: $$
4679: by
4680: $$
4681: \big(\bigsqcup_\iinI f_i\big)(x) \ = \ \bigcup_\iinI f_i(x).
4682: $$
4683: \endpr
4684:
4685: \Lemman{5.1.15}
4686: If \,$f_i:X\toto \Yua$ \,is continuous for all \iinI,
4687: then so is \,$\bigsqcup_\iinI f_i$.
4688: \endpr
4689:
4690: \Pf
4691: This follows from the fact that for \,$V\sseq \Yua$,
4692: $$
4693: \big(\bigsqcup_\iinI f_i)^{-1}[V] \ = \ \bigcup_\iinI f_i^{-1}[V].
4694: \tag"$\square$"
4695: $$
4696:
4697: \Remarkn{5.1.16}
4698: Note that all the results of this subsection (5.1)
4699: hold for {\it arbitrary\/}
4700: multivalued functions \,$f:X\to \PPP(Y)$,
4701: \,not necessarily countably-many-valued.
4702: \endpr
4703:
4704: \shead{5.2}{Continuity of \WhileCC\ \,computable functions}
4705: Let $A$ be an N-standard topological \Sig-algebra.
4706:
4707: In order to prove that \WhileCCx\ \,procedures on $A$ are continuous,
4708: we first state and prove a lemma which says that
4709: such procedures are (almost) equivalent to
4710: \While\ \,procedures (without `\chooses')
4711: in an extended signature, which includes
4712: a symbol \,\fs\ \,for an ``oracle function". Then we apply Lemma 5.1.7.
4713:
4714: \Lemman{5.2.1 \,(Oracle equivalence lemma)}
4715: Given a \WhileCCSig\ \,statement $S$, and procedure
4716: $$
4717: P \ \ident \ \funcs\ \ins \ \att\ \outs \ \btt\ \auxs \ \ctt
4718: \ \begins \ S\ \ends,
4719: $$
4720: we can effectively construct a \While(\Sigf) statement \,\Sf\
4721: \,and procedure
4722: $$
4723: \Pfs \ \ident \ \funcs\ \ins \ \att\ \outs \ \btt\ \auxs \ \ctt
4724: \ \begins \ \Sf\ \ends
4725: $$
4726: \,in a signature \,\Sigf\ \,which extends \,\Sig\
4727: \,by a function symbol \,$\fs: \nats\to\nats$,
4728: \,such that, putting
4729: $$
4730: \PsqcupA \ \eqdf \ \bigsqcup_{f\in\FFF}\PfA,
4731: $$
4732: where \,$\FFF = \NN^\NN$ \,\ is
4733: the set of all functions \,$f\:\NN\to\NN$
4734: \,and \PfA\ is the interpretation of \,\Pfs\ in $A$ formed by interpreting
4735: \,\fs\ \,as $f$,
4736: \,we have
4737: $$
4738: \PA \ \sqsseq \ \PsqcupA \ \sqsseq \ (\PA)^\ua.
4739: \tag1
4740: $$
4741: \endpr
4742: \n
4743: (Recall Definitions 5.1.14 and 5.1.5,
4744: and the definition of
4745: \,$\PA\: \Au \,\totop\,\Avua$ \,in \S3.2($g$).)
4746:
4747: \Pf
4748: Intuitively, \,\fs\ \,represents a possible implementation
4749: of the `\chooses' operator: \,$\fs(n)$
4750: \,is a possible value for the $n$th call of this operator
4751: in any particular implementation of $P$.
4752: We will then take the union of the interpretations
4753: over all such possible implementations.
4754:
4755: In more detail:
4756: the construction of \,\Sf\ \,from $S$ is as follows.
4757: Let \,\ctt\ \,be a new ``counter", \ie,
4758: an auxiliary variable of sort \,\nats\
4759: \,which is not in $S$.
4760: First, it is clear that by ``splitting up" assignments in $S$,
4761: and introducing more auxiliary \,\nats\ \,variables,
4762: we can re-write $S$ in such a way
4763: that every occurrence of the `\chooses' construct
4764: is in the context of an assignment of the form
4765: $$
4766: \ztt' := \chooses \ \ztt:b.
4767: \tag2
4768: $$
4769: where the boolean term $b$ does not contain the `\chooses' construct.
4770: Now replace each assignment of the form (2) by
4771: the pair of assignments
4772: $$
4773: \align
4774: &\ctt := \ctt+1;\\
4775: &\ifs \ \,b\ang{\ztt/\fs(\ctt)}
4776: \ \,\thens \ \,\ztt' := \fs(\ctt)\ \,\elses \ \,\divs
4777: \endalign
4778: $$
4779: and initialise the value of \ctt\ (at the beginning of the statement)
4780: to 0.
4781: The result is a \,\Whilex(\Sigf) \,procedure \,\Pfs\
4782: \,with a body \Sf\ \,which, for a given interpretation $f$ of \fs,
4783: ``interprets" successive executions of \,`\chooses'
4784: by successive values of $f$, when this is possible
4785: (\ie, \,$b\ang{\ztt/f(\ctt)}$
4786: \,has \,\ttt\ \,as one of its values), and otherwise,
4787: causes the execution to diverge.
4788:
4789: For those $f$ which (for a given input)
4790: always give ``good" values for all the successive executions of \,`\chooses'
4791: assignments (2) in $S$, \,\PfA\ \,will give a possible implementation
4792: of $P$.
4793: For all other $f$, \,\PfA\ \,will diverge.
4794: Since (for a given input)
4795: each \,\PfA\ \,{\it either\/} simulates one possible implementation
4796: of successive executions of \,`\chooses' \,in $S$ {\it or\/} diverges,
4797: their ``union" \,\PsqcupA\ \,gives the result of
4798: {\it all\/} possible implementations
4799: of \,`\chooses', \,plus divergence; hence the conclusion (1).
4800: \endpf
4801:
4802: \Thmn{5.2.2}
4803: Let
4804: $$
4805: P \ \ident \ \funcs\ \ins \ \att\ \outs \ \btt\ \auxs \ \ctt
4806: \ \begins \ S\ \ends
4807: \tag3
4808: $$
4809: be a \,\WhileCC\ \,procedure,
4810: where \,$\att:u$ and $\btt:v$.
4811: Then the interpretation
4812: $$
4813: \PA: \ \Au \ \totop \Avua
4814: $$
4815: is continuous.
4816: \endpr
4817:
4818: \Pf
4819: In the notation of the Oracle Equivalence Lemma (5.2.1):
4820: \,\PfA\ \,is continuous for all \,$f\in\FFF$,
4821: \,by the continuity theorem for \,\While\ \,\cite[\S6.5]{tz:hb}.
4822: Hence \,\PsqcupA\ \,is continuous, by Lemma 5.1.15.
4823: Hence, by (1) and Lemma 5.1.7, so is \,\PA.
4824: \endpf
4825:
4826: \Remarkn{5.2.3}
4827: In the special case that
4828: \PA\ is deterministic, \ie, single-valued:
4829: $$
4830: \PA\: \Au \pto \Av,
4831: $$
4832: it follows by Remark 5.1.9 that
4833: \PA\ is continuous according to our definition (2.5.1)
4834: of continuity for single-valued partial functions.
4835: \endpr
4836:
4837: \newpage
4838:
4839: \Corn{5.2.4}
4840: A \WhileCCx\ \,computable function on $A$ is continuous.
4841: \endpr
4842:
4843: \Pf
4844: Such a function is \WhileCC\ \,computable on \Ax,
4845: hence (by Theorem 5.2.2) continuous on \Ax,
4846: and hence on $A$.
4847: \endpf
4848:
4849: \shead{5.3}{Continuity of \WhileCCx\ \,approximable functions}
4850: Recall Definiton 3.5.1 and \S2.7.
4851:
4852:
4853: \Thmn{5.3.1}
4854: Let $A$ be a metric \Sig-algebra,
4855: and let \,$F\:\Au\pto\Av$.
4856: \sn
4857: ($a$) If $F$ is \WhileCCx\ approximable then $F$ is W-continuous.
4858: \sn
4859: ($b$) If also \,\dom{F} is open in \Au\ \,then $F$ is continuous.
4860: \endpr
4861:
4862: \Pf
4863: \,Suppose $F$ is approximable on $A$ by the
4864: \WhileCCx\
4865: procedure \,$P\:\nats\times\utov$.
4866: We will show that $F$ is W-continuous, using Remark 2.7.2($b$).
4867: Given \,$a\in \dom{F}$ \,and \,$\eps>0$,
4868: \,choose $N$ such that
4869: $$
4870: 2^{-N}<{\eps/3}.
4871: \tag1
4872: $$
4873: Then by Definition 3.5.1,
4874: $$
4875: \nil \ \ne \ P^A_N(a)\ \sseq \ \Bb(F(a),\,2^{-N}).
4876: \tag2
4877: $$
4878: Choose $b\in P^A_N(a)$.
4879: By (2),
4880: $$
4881: \ds(F(a),b)\ < \ 2^{-N}.
4882: \tag3
4883: $$
4884: By Corollary 5.2.3, $P^A_N$ is continuous on $A$,
4885: and so by Remark 5.1.4($a$),
4886: there exists $\del>0$ such that
4887: $$
4888: \all x\in \Bb(a,\del), \ P^A_N(x)\cap \Bb(b,\eps/3)\ne\nil.
4889: \tag4
4890: $$
4891: Take any \,$x\in \Bb(a,\del)\cap\dom{F}$.
4892: By Definition 3.5.1 again,
4893: $$
4894: P^A_N(x)\ \sseq \ \Bb(F(x),\,2^{-N})
4895: \tag5
4896: $$
4897: By (4), choose \,$y\in P^A_N(x)\cap\Bb(b,\eps/3)$.
4898: So
4899: $$
4900: \ds(y,b)\ < \ \eps/3
4901: \tag6
4902: $$
4903: and by (5)
4904: $$
4905: \ds(F(x),y)\ <\ 2^{-N}.
4906: \tag7
4907: $$
4908: Hence
4909: $$
4910: \align
4911: \ds(F(x),F(a)) \ &\le \ \ds(F(x),y)+\ds(y,b)+\ds(b,F(a))\\
4912: &< \ \eps
4913: \endalign
4914: $$
4915: by (7), (6), (3) and (1).
4916: Part ($a$) follows by Remark 2.7.2($b$).
4917:
4918: Part ($b$) then follows by Proposition 2.7.1.
4919: \endpf
4920:
4921: \newpage
4922:
4923: \itemm{\bbf 6\ \ }
4924: {\bbf Concrete computability and the soundness of \WhileCCxbig
4925: \nl
4926: computation on countable algebras}
4927:
4928: \mn
4929: To compute on a metric algebra $A$ using a concrete model
4930: of computation,
4931: we choose a countable subspace $X$ of $A$ and an enumeration
4932: $$
4933: \al: \ \NN\ \to\ X.
4934: $$
4935: From this we build the space \,\CalX\ \,of \al-computable elements
4936: of $A$, and enumerate it with
4937: $$
4938: \albar: \ \NN\ \to\ \CalX.
4939: $$
4940: In this section
4941: we step back from topological algebras and consider
4942: computability on {\it arbitrary countable\/} algebras.
4943: We show that if an algebra $A$ is enumerated and
4944: its basic functions are effective, then
4945: functions that are \WhileCCx\ computable on $A$ are also effective.
4946: This result is a key lemma in the ssoundness theorem for
4947: \WhileCCx\ approximation in the next section.
4948:
4949: \shead{6.1}{Enumerations and tracking functions for partial functions}
4950: Let
4951: $$
4952: X \ = \ \ang{\Xs \br \sinSortSig}
4953: $$
4954: be a \SortSig-indexed family of non-empty sets.
4955:
4956: \Defn{6.1.1}
4957: An {\it enumeration\/} of $X$ is a family
4958: $$
4959: \al \ = \ \ang{\als\:\Oms\onto \Xs \br \sinSortSig}
4960: $$
4961: of surjective maps \,$\als\:\Oms\onto \Xs$,
4962: \,for some family
4963: $$
4964: \Om \ = \ \ang{\Om_s \br \sinSortSig}
4965: $$
4966: of sets \,$\Oms\sseq\NN$.
4967: The family $X$ is said to be
4968: {\it enumerated by\/} \al.
4969: We say that
4970: \,$\al\: \Om\onto X$
4971: \,is an {\it enumeration\/} of $X$,
4972: and call the pair \,\Xal\ \,an {\it enumerated family of sets\/}.
4973: (The notation `$\onto$' denotes surjections, or onto mappings.)
4974: \endpr
4975:
4976: We also write
4977: \,$\Oms = \Omals$
4978: \,to make explicit the fact that \,$\Oms = \dom{\als}$.
4979:
4980:
4981: \Defn{6.1.2 \ (Tracking and strict tracking functions)}
4982: We use the notation
4983: \nl
4984: \,$X^u = X_{s_1}\times\dots\times X_{s_m}$
4985: \,and
4986: \ $\Omalu = \Om_{\al,s_1}\times\dots\times\Om_{\al,s_m}$,
4987: \,where \,$u=\tuptimes{s}1m$.
4988: \nl
4989: Let \,$F\:\Xu\pto\Xs$ \,and \,$f:\Omalu\pto\Omals$,
4990: \itemm{($a$)}
4991: $f$ is a {\it tracking function with respect to\/} \al,
4992: \,or \,\al-{\it tracking function\/},
4993: \,for $F$,
4994: \,if the following diagram commutes:
4995: $$
4996: \commdiag{
4997: \Xu& &\mapright^{\dz F}_\bdot& &\Xs\cr
4998: \mapup\lft{\dz{\alu}}\rt\bdot& && &\mapup\lft\bdot\rt{\dz{\ \als}}\cr
4999: \NN^m& &\mapright_{\dz f}^\bdot& &\NN
5000: }
5001: $$
5002: \mn
5003: \itemm{}
5004: in the sense that
5005: \,for all \,$k\in \Omalu$
5006: $$
5007: F(\alu(k))\da \ \ \implies
5008: \ f(k)\da \,\con \,f(k)\in \Omals \,\con
5009: \,F(\alu(k)) = \als(f(k)).
5010: $$
5011: \itemm{($b$)}
5012: $f$ is a {\it strict \al-tracking function\/} for $F$
5013: %if $f$ is an \al-tracking function for $f$ as in ($a$), and also,
5014: if in addition,
5015: for all \,$k\in\Omalu$
5016: $$
5017: f(k)\da \ \ \implies
5018: \ F(\alu(k))\da.
5019: $$
5020:
5021: Here we use the notation
5022: \ $\alu(k) = (\al_{s_1}(k_1),\dots,$ $\al_{s_m}(k_m))$,
5023: \ where
5024: %\,$u=\tuptimes{s}1m$ \ and
5025: \ $k = (\tup{k}1m)$.
5026: (We will sometimes drop the type super- and subscripts.)
5027:
5028:
5029:
5030: \Defn{6.1.3 \ (\al-computability)}
5031: ($a$) \,Suppose $A$ is a \SortSig-family,
5032: and \,\Xal\ \,an enumerated subfamily of $A$,
5033: \,\ie, \,$\Xs \sseq A_s$ \,for all \Sig-sorts $s$.
5034: Suppose
5035: \,$F\:\Au\pto A_s$ \,and \,$f:\NN^m\pto\NN$,
5036: such that
5037: $$
5038: \align
5039: F\rest \Xu\:\Xu\ &\pto\ \Xs,\\
5040: f\rest \Omalu\:\Omalu\ &\pto\ \Omals,
5041: \endalign
5042: $$
5043: and \,$f\rest \Omalu$ \,is a ({\it strict\/}) \al-{\it tracking function\/}
5044: for \,$F\rest X$.
5045: We then say that $f$ is a ({\it strict\/})
5046: \al-{\it tracking function for\/} $F$.
5047: \sn($b$)
5048: \,Suppose now further that $f$ is a {\it computable\/} (\ie, recursive)
5049: partial function.
5050: Then $F$ is said to be ({\it strictly\/}) \al-{\it computable\/}.
5051: \endpr
5052:
5053: \Remarksn{6.1.4}
5054: ($a$) In the situation of Definition 6.1.3,
5055: we are not concerned with the behaviour of
5056: $F$ off \Xu, or the behaviour of $f$ off \,\Omalu.
5057: \sn
5058: ($b$)
5059: For convenience, we will always assume:
5060: $$
5061: \Om_{\al,\boolss} = \curl{0,1}, \qquad \al_\boolss(0) = \fff,
5062: \qquad \al_\boolss(1) = \ttt
5063: $$
5064: and also (when \Sig\ is N-standard):
5065: $$
5066: \Om_{\al,\natss} = \NN\ \ \tx{and \,$\al_\natss$ \,is the identity on \NN.}
5067: $$
5068: \endpr
5069:
5070:
5071: Assume now that
5072: $A$ is a \Sig-{\it algebra\/}
5073: and \,\Xal\ \,is a \SortSig-family of subsets of $A$,
5074: enumerated by \al.
5075:
5076: \Defn{6.1.5 \,(Enumerated \Sig-subalgebra)}
5077: \Xal\ is said to be an {\it enumerated \Sig-subalgebra of\/} $A$ if
5078: $X$ is a \Sig-subalgebra of $A$.
5079: \endpr
5080:
5081: \Defn{6.1.6 \,(\Sig-effective subalgebra)}
5082: Suppose $A$ is a \Sig-algebra and \Xal\ is an enumerated \Sig-subalgebra.
5083: Then \al\ is said to be
5084: \itemm{($a$)}
5085: \Sig-{\it effective\/} if all the basic \Sig-functions on $A$
5086: are \al-computable; \,and
5087: \itemm{($b$)}
5088: {\it strictly\/} \Sig-{\it effective\/} if all the basic \Sig-functions on $A$
5089: are strictly \al-computable.
5090: \endpr
5091:
5092: \newpage
5093:
5094: \shead{6.2}{Soundness Theorem for surjective enumerations}
5095: For the rest of this section we will be considering the special
5096: case of \S6.1 in which the enumerated subalgebra $X$ is $A$ itself,
5097: \ie, we assume the enumeration is {\it onto\/} $A$.
5098: To emphasise this special situation, we will denote the
5099: enumeration by
5100: $$
5101: \be\: \Ombe\ \onto\ A,
5102: $$
5103: so that \Abe\ is our {\it enumerated \Sig-algebra\/}.
5104:
5105: Given such an enumerated algebra \Abe\ and a function
5106: $$
5107: F\:\Au \ \pto \ A_s,
5108: $$
5109: we have two notions of computability for $F$:
5110: \itemm{($i$)}
5111: {\it abstract\/}, \ie, \WhileCCx\ computability,
5112: as described in Section 3; \,and
5113: \itemm{($ii$)}
5114: {\it concrete\/}, \ie, \be-computability,
5115: as in Definition 6.1.3, in the special case
5116: that $X = A$.
5117:
5118: We will prove a {\it soundness theorem\/} (Theorem \Ao),
5119: for these notions of abstract and concrete computability,
5120: \ie, \,$(i)\tto(ii)$, \,assuming {\it strict effectiveness\/} of \be.
5121:
5122: A more general soundness theorem (Theorem A),
5123: with more general notions of abstract computability
5124: (\WhileCCx\ {\it approximability\/})
5125: and concrete computability
5126: (computability w.r.t\. the {\it computable closure\/}
5127: of an enumeration),
5128: will be proved in Section 7.
5129:
5130: \Thmn{$\tx{\bf A}_{\bk0}$ \ (Soundness for countable algebras)}
5131: Let \,\Abe\ \,be an enumerated N-standard \Sig-algebra
5132: such that \be\
5133: is strictly \Sig-effective.
5134: If \,$F:\Au\pto A_s$
5135: \,is \,\WhileCCx\ computable on $A$, then $F$
5136: is strictly \be-computable on $A$.
5137: \endpr
5138:
5139: \shead{6.3}{Proof of Soundness Theorem $\tx{\bf A}_{\bk0}$}
5140: Assume, then, that \,\Abe\ \,is an enumerated N-standard \Sig-algebra
5141: and \be\
5142: is strictly \Sig-effective.
5143:
5144: We will show that each of the semantic functions
5145: listed in \S3.2$(a)$--$(g)$ has a computable
5146: tracking function.
5147: More precisely, we will work, not with the semantic
5148: functions themselves, but ``localised" functions representing them
5149: (\cf\ \cite[\S4]{tz:hb}).
5150:
5151: First we will prove a series of results of the form:
5152:
5153: \pr{Lemma Scheme 6.3.1}\sl
5154: For each semantic representing function
5155: $$
5156: \Phi: \ \Au \ \totop \ \Avua
5157: $$
5158: representing one of the semantic functions
5159: listed in \S3.2$(a)$--$(g)$,
5160: \,there is a
5161: computable tracking function w.r.t. \be,
5162: \,\ie, a function
5163: $$
5164: \ph:\ \Ombeu\ \pto\ \Ombev
5165: $$
5166: %(where \,$m = \arity{u}$ \,and \,$n=\arity{v}$),
5167: which commutes the diagram
5168:
5169: $$
5170: \commdiag{
5171: \Au &\ & \bimapright^{\raise1pt\hbox{$\dz\Phi$}} &{}^+& \Avua\cr
5172: \mapup\lft{\dz{\beu}} &\ &&& \mapup\rt{\dz{\,\bev}}\cr
5173: %&&&&\cr
5174: \Ombeu &\ & \mapright_{\dz \ph}^\bdot && \Ombev
5175: }
5176: $$
5177:
5178: \mn
5179: in the sense that for all \,$k,l\in\Ombeu$:
5180: $$
5181: \align
5182: \ph(k)\da l\ &\implies \ \bev(l)\,\in \,\Ph(\beu(k)),\\
5183: \ph(k)\,\ua \quad \ &\implies \ \ua\,\in \,\Ph(\beu(k)).
5184: \endalign
5185: $$
5186: \endpr
5187:
5188: \Remarksn{6.3.2}
5189: ($a$) \,Here \,\ph\ \,is a combination ``strict tracking function"
5190: and ``selection function".
5191: We can think of \,\ph\ \,as giving one possible implementation
5192: of \,\Ph.
5193: (Compare the representative functions for various semantic functions
5194: in \cite[\S4]{tz:hb}.)
5195: \sn
5196: ($b$) \,We are not concerned with the behaviour of \,\ph\ \,on
5197: \,$\NN^m\backslash\Ombeu$
5198: \,(where \,$m = \arity{u}$).
5199: (\Cf\ Remark 6.1.4($a$).)
5200: \endpr
5201:
5202: Theorem \Ao\ then follows easily (\S6.5) from this lemma scheme.
5203:
5204: \sn
5205: {\bf Proof of Lemma Scheme 6.3.1:}
5206: \ \ We proceed to prove this lemma scheme
5207: by constructing {\it concrete strict tracking functions for the semantic
5208: functions\/} in \S3.2.
5209:
5210: Let \xtt\ be a $u$-tuple of variables,
5211: where \,$u = \tuptimes{s}1m$.
5212: Let \,$\PTermx = \PTermx(\Sig)$ \,be the class of all \Sig-terms
5213: with variables among \xtt\ only,
5214: and for all sorts $s$ of \Sig, let \,$\PTermxs = \PTermxs(\Sig)$
5215: \,be the class of such terms of sort $s$.
5216:
5217: We consider in turn the semantic functions in \S3.2,
5218: or rather versions of these
5219: {\it localised to\/} \xtt,
5220: \,\ie, defined only in terms of the state values on \xtt\
5221: (\cf\ \cite[\S4]{tz:hb}).
5222: For example, we localise the set
5223: \,\StateA\
5224: \,of states on $A$ to the set
5225: $$
5226: \StatexA \ \eqdf \ \Au
5227: $$
5228: of $u$-tuples of elements of $A$,
5229: where a tuple \,\ainAu\ represents a state \sig\
5230: (relative to \xtt) if \,$\sig[\xtt] = a$.
5231: The set \Au\ is, in turn, represented (relative to \be)
5232: by the set \,\Ombeu.
5233:
5234: We assume an effective coding, or G\"odel numbering,
5235: of the syntax of \Sig.
5236: We use the notation
5237: $$
5238: \cnr{\PTerm_s} \eqdf \ \{\cnr{t} \mid t \in \PTerm_s \},
5239: $$
5240: etc., for sets of G\"odel numbers of syntactic expressions.
5241:
5242: \mn{\bf ({\bi a}) \,Tracking of term evaluation.}
5243: \sn
5244: The function
5245: $$
5246: \PTExsA:\ \PTermxs\times\StatexA \ \totop \ \Asua
5247: $$
5248: defined by
5249: $$
5250: \PTExsA(t,a) \ = \ \tA\sig
5251: $$
5252: for any state \sig\ on $A$ such that \,$\sig[\xtt] = a$,
5253: \,is strictly tracked by a computable function
5254: $$
5255: \ptexsAbe: \ \cnr{\PTermxs}\times \Ombeu \ \pto \ \Ombes
5256: $$
5257: so that the following diagram commutes:
5258:
5259: $$
5260: \commdiag{
5261: \PTermxs\times\StatexA&\ & \bimapright^{\raise5pt\hbox{$\dz\PTExsA$}}
5262: &{}^+&\Asua\cr
5263: \mapup\lft{\dz{\ang{\enum,\,\beu}}}&\ &&&\mapup\rt{\dz\,\bes}\cr
5264: \cnr{\PTermxs}\times\Ombeu&\ &\mapright_{\dz{\ptexsAbe}}^\bdot&&\Ombes
5265: }
5266: $$
5267: \mn
5268: (where \,\enum\ \,is the inverse of the G\"odel numbering function),
5269: in the sense that
5270: $$
5271: \aligned
5272: \ptexsAbe(\cnr{t},k)\da l\ &\implies \ \bes(l)\,\in \,\PTExsA(t,\,\beu(k)),\\
5273: \ptexsAbe(\cnr{t},k)\,\ua \quad\ &\implies \ \ua\,\in \,\PTExsA(t,\,\beu(k)).
5274: \endaligned
5275: \tag1
5276: $$
5277: In order to construct such a representing function,
5278: we first define the {\it state variant representing function\/},
5279: \ie, a (primitive) recursive function
5280: $$
5281: \vartxbe: \ \Ombeu\times\cnr{\Vars}\times\Ombes\ \to \ \Ombes
5282: $$
5283: such that
5284: $$
5285: \beu(\vartxbe(k,\cnr{\ytt},k_0)) \ = \ \beu(e)\curly{\ytt/\bes(k_0)}.
5286: $$
5287: for \,$k\in\Ombeu$,
5288: \,$\ytt\in\Vars$
5289: \,and \,$k_0\in\Ombes$
5290: \,(\cf\ Definition 3.2.3($b$)).
5291:
5292: We turn to
5293: the definition of \,$\ptexsAbe(\cnr{t},k)$.
5294: This is by induction on \,\cnr{t},
5295: \,or structural induction on \,$t\in\PTermx$,
5296: over all \Sig-sorts $s$.
5297: The cases are:
5298:
5299: \bull
5300: $t \ident c$, \ a primitive constant.
5301: Then define
5302: $$
5303: \ptexsAbe(\cnr{t},k) \ = \ k_0
5304: \qquad \tx{where} \qquad \be(k_0) \ = \ c^A.
5305: $$
5306: (Such a $k_0$ exists by the strict \Sig-effectivity of \be).
5307:
5308: \bull
5309: $t \ident \xtt_i$ \ for some $i=1,\dots,m$,
5310: \,where \,$\xtt \ident \tup{\xtt}1m$.
5311: Note that \,$k=(\tup{k}1m)\in \Ombeu$.
5312: \ So define
5313: $$
5314: \ptexsAbe(\cnr{t},k) \ = \ k_i.
5315: $$
5316:
5317: \bull
5318: $t\ident F(\tup{t}1m)$.
5319: \ Let \,$f$ be a computable strict tracking function for $F$,
5320: which exists by the strict \Sig-effectivity of \be.
5321: Then define
5322: $$
5323: \ptexsAbe(\cnr{t},k) \ \sq
5324: \ f(\pte\,_{\xtt,s_1}^{A,\ssbe}(\cnr{t_1},k),\,\dots,
5325: \,\pte\,_{\xtt,s_m}^{A,\ssbe}(\cnr{t_m},k))).
5326: $$
5327: From the induction hypothesis applied to \,\tup{t}1m,
5328: \,the definition of \PTE\ (\S3.2($a$))
5329: and the fact that $f$ {\it strictly\/} tracks $F$,
5330: we can infer (1) for $t$.
5331:
5332: \bull
5333: $t\ident \ifs(b,t_1,t_2)$. \ Define
5334: $$
5335: \ptexsAbe(t,k)\ \sq\
5336: \cases
5337: \ptexsAbe(t_1,k) \tif{$\pte_{\xtt,\boolss}^{A,\ssbe} (b,k) \da 1$}\\
5338: \ptexsAbe(t_2,k) \tif{$\pte_{\xtt,\boolss}^{A,\ssbe} (b,k) \da 0$}\\
5339: \ua \tif{$\pte_{\xtt,\boolss}^A (b,k) \ \ua$}.\\
5340: \endcases
5341: $$
5342: From the induction hypothesis applied to $b$, $t_0$ and $t_1$,
5343: \,and the definition of \PTE,
5344: \,we can infer (1) for $t$.
5345:
5346: \bull
5347: $t \ident (\chooses \ \ztt:t_0)$.
5348: \ We define \,$\ptexsAbe(\cnr{t},\,k)$
5349: \,by specifying its computation:
5350: \,find, by dovetailing (recall the discussion in \S4.1!) some $n$ such that
5351: $$
5352: \ptexsAbe(\cnr{t_0}, \,\vartxbe(k,\cnr{\ztt},n)) \ \da \ 1
5353: $$
5354: (remember, \,$\be(1) = \ttt$, by Remark 6.1.4($b$)),
5355: so that \,$\ptexsAbe(\cnr{t},\,k) =$ some such $n$,
5356: \,if it exists, and \,\ua\ \,otherwise.
5357: From the induction hypothesis applied to $t_0$,
5358: \,and the definition of \PTE,
5359: \,we can infer (1) for $t$.
5360:
5361: \mn{\bf ({\bi b}) \,Tracking of atomic statement evaluation.}
5362: \sn
5363: Let \AtStx\ be the class of atomic statements with variables among \xtt\ only.
5364: The atomic statement evaluation function on $A$ localised to \xtt,
5365: $$
5366: \AExA: \ \AtStx \times \StatexA \ \totop \ \StatexAua,
5367: $$
5368: defined by
5369: $$
5370: \AExA(S,a) \ = \ \angg{S}^A\sig
5371: $$
5372: for any state \sig\ such that \,$\sig[\xtt] = a$,
5373: \,is strictly tracked by a computable function
5374: $$
5375: \aexAbe: \ \cnr{\AtStx}\times \Ombeu \ \pto \ \Ombeu
5376: $$
5377: so that the following diagram commutes:
5378:
5379: $$
5380: \commdiag{
5381: \AtStx\times\StatexA&\ &\bimaprighturaise5{\AExA}&{}^+
5382: &\StatexAua\cr
5383: \mapupl{\ang{\enum,\,\beu}}&\ &&&\mapupr{\,\beu}\cr
5384: \cnr{\AtStx}\times\Ombeu&\ &\maprightd{\aexAbe}^\bdot&&\Ombeu
5385: }
5386: $$
5387: \mn
5388: in the sense that
5389: $$
5390: \aligned
5391: \aexAbe(\cS,k)\da l\ &\implies \ \be(l)\,\in \,\AExA\,(S,\,\be(k)),\\
5392: \aexAbe(\cS,k)\,\ua \quad\ &\implies \ \ua\,\in \,\AExA\,(S,\,\be(k)).
5393: \endaligned
5394: \tag2
5395: $$
5396: The definition of \,$\aexAbe(\cS,k)$
5397: \,is given by:
5398: $$
5399: \align
5400: \aexAbe(\cnr{\skips},\,k) \ &\da \ k\\
5401: \aexAbe(\cnr{\divs},\,k) \ &\ \ua\\
5402: \aexAbe(\cnr{\ytt:=t},\,k) \ &\sq
5403: \cases
5404: \vartxbe\,(k,\ytt,l)\tif{$\ptexsAbe(s\cnr{t},k)\da l$}\\
5405: \ua \tif{$\ptexsAbe(\cnr{t},k)\ \ua$.}
5406: \endcases\\
5407: \endalign
5408: $$
5409: Using (1) and the definition of \AExA\ (\S3.2($b$)),
5410: we can infer (2).
5411:
5412: \mn{\bf ({\bi c}) \,Tracking of \,\First\ \,and \,\Rest\ \,operations.}
5413: \sn
5414: Let \Stmtx\ be the class of statements with variables
5415: among \,\xtt\ \,only.
5416: Consider the functions \,\First\ \,and \,\RestA\ \,(\S3.2($c$)).
5417: Then \,\First\ \,is
5418: strictly tracked by a computable function
5419: $$
5420: \first \ : \cnr{\Stmt}\ \to\ \cnr{\AtSt}
5421: $$
5422: defined on G\"odel numbers in the obvious way,
5423: so that the following diagram commutes:
5424:
5425: $$
5426: \commdiag{
5427: \Stmt&\ &\maprightu{\First}&\ &\AtSt\cr
5428: \mapupl{\enum}&&&&\mapupr{\enum}\cr
5429: \cnr{\Stmt}&&\maprightd{\first}&&\cnr{\AtSt}
5430: }
5431: $$
5432:
5433: \mn
5434: (Note that \,\first, \,unlike most of the other representing functions here,
5435: does not depend on \,\StatexA, \,or, indeed, on $A$ or \,\xtt.)
5436: Next, the localised version of \,\RestA:
5437: $$
5438: \RestxA :
5439: \ \Stmtx\times\StatexA \ \totop \ \Stmtx
5440: $$
5441: defined by
5442: $$
5443: \RestxA(S,a) \ = \ \RestA(S,\sig)
5444: $$
5445: for any state \sig\ such that \,$\sig[\xtt] = a$,
5446: \,is strictly tracked by a computable function
5447: $$
5448: \restxAbe : \ \cnr{\Stmtx}\times\Ombeu\ \pto\ \cnr{\Stmtx}
5449: $$
5450: so that the following diagram commutes:
5451:
5452: $$
5453: \commdiag{
5454: \Stmtx\times\StatexA&\ &\bimaprighturaise5{\RestxA}&{}^+&\Stmtx\cr
5455: \mapupl{\ang{\enum,\,\beu}}&&&&\mapupr{\enum}\cr
5456: \cnr{\Stmtx}\times\Ombeu&&\maprightud{\bdot}{\restxAbe}&&\cnr{\Stmtx}
5457: }
5458: $$
5459:
5460: \mn
5461: in the sense that
5462: $$
5463: \aligned
5464: \restxAbe\,(\cS,k)\da \cnr{S'}\ \implies
5465: \ &S'\,\in \,\RestA\,(S,\,\be(k)),\\
5466: \restxAbe\,(\cS,k)\,\ua \quad\ \implies \ &\divs\,\in \,\RestA\,(S,\,\be(k))
5467: \endaligned
5468: \tag3
5469: $$
5470: The definition of
5471: \,$\restxAbe(\cS,\,k)$, \,as well as the proof of (3),
5472: are by
5473: induction on \,\cS, \, or structural induction on $S$.
5474:
5475: \bull
5476: $S$ is atomic. \ Then
5477: $$
5478: \restxAbe (\cS,\,k) \ = \ \cnr{\skips}.
5479: $$
5480: \bull
5481: $S \ \ident \ S_1;S_2$. \ Then
5482: $$
5483: \restxAbe(\cS,\,k) \ = \
5484: \cases
5485: \quad\cnr{S_2} \tif{$S_1$ is atomic}\\
5486: \quad\cnr{\restxAbe(S_1,\,k);S_2} \ow
5487: \endcases
5488: $$
5489: \bull
5490: $S \ \ident \ \ifs \ b \ \thens \ S_1 \ \elses \ S_2 \ \fis$.
5491: \ Then
5492: $$
5493: \restxAbe (\cS,\,k) \ \sq \
5494: \cases
5495: \cnr{S_1} \tif{$\pteboolsAbe(b,k)\da 1$}\\
5496: \cnr{S_2} \tif{$\pteboolsAbe(b,k)\da 0$}\\
5497: \ua \tif{$\pteboolsAbe(b,k)\ \ua$}.
5498: \endcases
5499: $$
5500: \bull
5501: $S \ \ident \ \whiles\ b \ \dos \ S_0 \ \ods$.
5502: \ Then
5503: $$
5504: \restxAbe(S,k) \ \sq\
5505: \cases
5506: S_0;S \tif{$\pteboolsAbe(b,k)\da1$},\\
5507: \skips \tif{$\pteboolsAbe(b,k)\da0$},\\
5508: \ua \tif{$\pteboolsAbe(b,k)\ \ua$}.\\
5509: \endcases
5510: $$
5511:
5512:
5513:
5514: \mn{\bf ({\bi d}) \,Tracking of a computation step.}
5515: \sn
5516: The computation step function (\S3.2($d$)) localised to \,\xtt:
5517: $$
5518: \CompStepxA :\ \Stmtx\times\StatexA \ \totop \ \StatexA^\ua
5519: $$
5520: defined by
5521: $$
5522: \CompStepxA(S,a) \ = \ \CompStepA(S,\sig)
5523: $$
5524: for any state \sig\ such that \,$\sig[\xtt] = a$,
5525: \,is represented by the computable function
5526: $$
5527: \compstepxAbe: \ \cnr{\Stmtx}\times\Ombeu \ \pto \ \Ombeu
5528: $$
5529: defined by
5530: $$
5531: \compstepxAbe(\cS,k) \ \sq \ \aexAbe(\first(\cS),\,k).
5532: $$
5533: This makes the following diagram commute:
5534:
5535: $$
5536: \commdiag{
5537: \Stmtx\times\StatexA&\ &\bimaprighturaise5{\CompStepxA}&{}^+ &\StatexA^\ua\cr
5538: \mapupl{\ang{\enum,\,\beu}}&\ &&&\mapupr{\,\beu}\cr
5539: \cnr{\Stmtx}\times\Ombeu&\ &\maprightud{\bdot}{\compstepxAbe}&&\Ombeu
5540: }
5541: $$
5542: \mn
5543: in the sense that
5544: $$
5545: \aligned
5546: \compstepxAbe\,(\cS,k)\da l\ &\implies
5547: \ \be(l)\,\in \,\CompStepxA\,(S,\,\be(k)),\\
5548: \compstepxAbe\,(\cS,k)\,\ua \quad\ &\implies
5549: \ \ua\,\in \,\CompStepxA\,(S,\,\be(k).
5550: \endaligned
5551: \tag4
5552: $$
5553: This is proved easily from the definitions and (2).
5554:
5555: \mn{\bf ({\bi e}) \,Tracking of a computation sequence.}
5556: \sn
5557: Now consider localised versions of the computation tree stage
5558: and computation tree of \S3.2.($e$):
5559: $$
5560: \align
5561: \CompTreeStagexA:\ \Stmtx\times\StatexA\times\NN\
5562: &\to\ \PPP((\StatexAua)^{<\om})\\
5563: \CompTreexA:\ \Stmtx\times\StatexA \ &\to \ \PPP((\StatexAua)^{\le\om})
5564: \endalign
5565: $$
5566: We will define a function which {\it selects a path
5567: through the computation tree\/}:
5568: $$
5569: \compseqxAbe: \ \cnr{\Stmtx}\times\Ombeu\times\NN\ \pto
5570: \Ombeu\cup \curly{\cnr*}
5571: $$
5572: (where `$*$' is a symbol meaning ``already terminated")
5573: by recursion on $n$:
5574: $$
5575: \align
5576: &\compseqxAbe(\cS,\,k,\,0) \ =\ e \\
5577: &\compseqxAbe(\cS,\,k,\,n+1)\ \sq \\
5578: &\qqquad\cases
5579: \cnr* \ \ \tx{if $S$ is atomic and $n>0$ and
5580: \,$\compseqxAbe(\cS,\,k,\,n)\da$}\\
5581: \ \ua \ \quad\tx{if $S$ is atomic and $n>0$ and
5582: \,$\compseqxAbe(\cS,\,k,\,n)\ \ua$}\\
5583: \compseqxAbe(\restxAbe(\cS,k),\ \compstepxAbe(\cS,k),\ n)\\
5584: \qquad \ \tx{otherwise.}
5585: \endcases
5586: \endalign
5587: $$
5588: (This is a ``tail recursion": \ compare definition of
5589: \,\CompIA\ \,in \cite[\S3.4]{tz:hb}.)
5590:
5591: Writing \,$k_n = \compseqxAbe(\cS,k,n)$,
5592: \,this defines a
5593: (concrete) {\it computation sequence\/}
5594: $$
5595: \kbar \ = \ k_0,\ k_1,\ k_2,\ \dots
5596: $$
5597: for $S$ from the
5598: initial state $k= k_0$.
5599: (Our notation here includes the possibility that
5600: some of the $k_i$ may be \,\cnr{*} \, or \,\ua.)
5601: As can easily be checked,
5602: there are three possibilities for \,\ebar\
5603: \,(compare the discussion in \S3.2($e$)):
5604:
5605: \itemm{($i$)}
5606: For some $n$, \,$k_i \in \Ombeu$ \,for all $i\le n$
5607: \,and \,$k_i = *$ \,for all $i>n$.
5608: This represents a computation which {\it terminates\/} at stage $n$,
5609: with {\it final state\/} \,$k_n$.
5610:
5611: \itemm{($ii$)}
5612: For some $n$, \,$k_i \in \Ombeu$ \,for all $i< n$
5613: \,and \,$k_i = \ua$ \,for all $i\ge n$.
5614: This represents a {\it non-terminating\/} computation, with
5615: {\it local divergence\/} at stage $n$.
5616:
5617: \itemm{($iii$)}
5618: For all $i$, \,$k_i\in \Ombeu$.
5619: This represents {\it non-terminating\/} computation,
5620: with {\it global divergence\/}.
5621:
5622: We write
5623: \,$\kbarn = $ the initial segment \,$k_0,k_1,\dots,k_n$,
5624: \,with length \,$\lgth{\kbarn} = n+1$.
5625: We put \,$\lgth{\kbar}=\infty$.
5626: The \,$k_i$ \,are called {\it components\/} of \,\kbar,
5627: \,and of \,\kbarn, \,for all $i\le n$.
5628:
5629: The computation sequence \,\kbar\ \,then has the following connection
5630: with the computation tree \,\CompTreexA.
5631: Extend (for now) the definition of \,\be\ \,by
5632: \,$\be(\cnr{*}) = *$,
5633: \,$\be(\ua) = \ua$,
5634: \,and
5635: $$
5636: \align
5637: \be(\kbar) \ &\eqdf\ \be(k_0),\ \be(k_1),\ \be(k_2),\ \dots\\
5638: \be(\kbarn) \ &\eqdf\ \be(k_0),\ \be(k_1),\ \be(k_2),
5639: \ \dots, \ \be(k_n).
5640: \endalign
5641: $$
5642: Let \,$\tau = \CompTreexA(S,\,\be(k))$.
5643: Then
5644:
5645: \itemm{($i$)}
5646: If the computation sequence \,\kbar\ \,terminates at stage $n$,
5647: then \,\be(\kbarn) \,is a path through \,\ta\
5648: \,from the root to a leaf ($= \be(k_0)$, \,the final state).
5649:
5650: \itemm{($ii$)}
5651: If for some (smallest) $n$, \,$k_n=\ua$,
5652: \,then \,\be(\kbarn) \,is a path through \,\ta\
5653: \,from the root to a leaf ($=\ua$, \,local divergence).
5654:
5655: \itemm{($iii$)}
5656: If for all $n$, \,$k_n\in \Ombeu$,
5657: \,then \,\be(\kbar) is an infinite path through \,\ta\
5658: \,(global divergence).
5659:
5660: To prove this, we first define
5661: an initial segment of \,\kbar\
5662: \,(including \,\kbar\ \,itself) to be {\it acceptable\/}
5663: if ($i$) no component is equal to `$*$', \,and
5664: \,($ii$) no component, except possibly the last, is equal to \,\ua.
5665: Further, an acceptable initial segment of \,\kbar\ \,is
5666: {\it maximal (acceptable)\/}
5667: if it has no acceptable extension.
5668: Thus if \,\kbar\ \,is acceptable, it is automatically maximal.
5669: If \,\kbarn\ \,is acceptable,
5670: it is maximal acceptable provided
5671: either \,$k_{n+1}= *$ \,or \,$k_n = \ua$.
5672: We then show:
5673:
5674: \Lemman{6.3.3}
5675: Given a computation sequence \,$\kbar = k_0,k_1,\dots$
5676: \,for \,\cS\ \,from $k$,
5677: where \,$k_n = \compseqxAbe(\cS,\,k,\,n)$,
5678: \,let \,$\tau = \CompTreexA(S,\,\be(k))$.
5679: Then
5680: with every acceptable initial segment \,\kbarn\ \,of \,\kbar,
5681: \,$\be(\kbarn)$
5682: \,is a path through \,\ta\
5683: \,from the root.
5684: If \,\kbarn\ \,is maximal,
5685: then \,$\be(k_n)$ \,is a leaf.
5686: \endpr
5687:
5688: \Pf
5689: Put \,$\taun = \CompTreeStagexA(S,\,\be(k_0),\,n)$.
5690: The proof is by induction on $n$,
5691: comparing the inductive definitions of \,$k_n$
5692: \,and \,\taun.
5693:
5694: \sn
5695: {\it Basis:\/} \ $n=0$.
5696: This is immediate from the definitions:
5697: \,$k_0 = k$, \,and \,$\tau[0] = \curly{\be(k_0)}$.
5698:
5699: \sn
5700: {\it Induction step:\/}
5701: Assume the induction hypothesis holds for the initial segment
5702: of length $n$ of the computation sequence for \,\cnr{S'}
5703: \,from $k_1$, where
5704: $$
5705: \align
5706: S' \ &= \ \restxAbe(\cS,\,\be(k)),\\
5707: e_1 \ &= \ \compseqxAbe(\cS,\,k,\,1)\\
5708: &\sq\ \compseqxAbe(\restxAbe(\cS,k),\,\compstepxAbe(\cS,k),\,0)\\
5709: &\sq\ \compstepxAbe(\cS,e)
5710: \endalign
5711: $$
5712: \ie, assume the induction hypothesis for the segment \,\lbar\
5713: \,of length $n$:
5714: $$
5715: l_0,\ l_1,\ l_2,\ \dots\ ,l_n
5716: $$
5717: where \,$l_i = e_{i+1}$ \,($i=1,\dots,n$).
5718: Now apply the inductive definitions for \,$\compseqxAbe (\cS,$ $\,k, \,n+1)$
5719: \,(above) and \,$\CompTreeStagexA(S,\,\be(k),\,n+1)$
5720: \,(\S3.2($e$)), and use (3) and (4).
5721:
5722: \mn{\bf ({\bi f}) \,Tracking of statement evaluation.}
5723: \sn
5724: First we need a
5725: constructive computation length function
5726: $$
5727: \complengthxAbe:\ \cnr{\Stmtx}\times\Ombeu\ \pto\ \NN
5728: $$
5729: by (\cf\ \cite[\S3.4]{tz:hb})
5730: $$
5731: \complengthxAbe(\cS,\,k) \ \sq \ \mu n [\compseqxAbe(\cS,\,k,\,n+1)\da *\,]
5732: $$
5733: \ie, the least $n$ (if it exists) such that for all $i\le n$,
5734: \,$\compseqxAbe(\cS,\,k,\,i)\da\ \ne *$ \,and\
5735: \,$\compseqxAbe(\cS,\,k,\,n+1)\da*$.
5736:
5737: Thus \,$\complengthxAbe(\cS,\,k)$ \,is undefined (\ua)
5738: in the case of local or global divergence
5739: of the computation sequence for \,\cS\ \,from $k$.
5740:
5741: Now the statement evaluation function (\S3.2($f$)) localised to \,\xtt:
5742: $$
5743: \SExA: \ \Stmtx\times\StatexA\ \ \totop\ \StatexAua
5744: $$
5745: defined by
5746: $$
5747: \SExA(S,a) \ = \ \SA(\sig)
5748: $$
5749: for any state \sig\ such that \,$\sig[\xtt] = a$,
5750: \,is strictly tracked by the computable function
5751: $$
5752: \sexAbe: \ \cnr{\Stmtx}\times\Ombeu\ \ \pto\ \Ombeu
5753: $$
5754: defined by
5755: $$
5756: \sexAbe(\cS,\,k) \ \sq\ \compseqxAbe(\cS,\,k,\,\complengthxAbe(\cS,\,k)).
5757: $$
5758: This makes the following diagram commute:
5759:
5760: $$
5761: \commdiag{
5762: \Stmtx\times\StatexA&\ &\bimaprighturaise5{\SExA}&{}^+&\StatexA^\ua\cr
5763: \mapupl{\ang{\enum,\,\beu}}&\ &&&\mapupr{\,\beu}\cr
5764: \cnr{\Stmtx}\times\Ombeu&\ &\maprightud{\bdot}{\sexAbe}&&\Ombeu
5765: }
5766: $$
5767: \mn
5768: in the sense that
5769: $$
5770: \aligned
5771: \sexAbe\,(\cS,k)\da l\ &\implies \ \be(l)\,\in \,\SExA\,(S,\,\be(k)),\\
5772: \sexAbe\,(\cS,k)\,\ua \quad\ &\implies \ \ua\,\in \,\SExA\,(S,\,\be(k)).
5773: \endaligned
5774: \tag5
5775: $$
5776: This result is clear from the definition of
5777: \,\complength\ \,and Lemma 6.3.1.
5778:
5779: \newpage
5780:
5781: \mn{\bf ({\bi g}) \,Tracking of procedure evaluation.}
5782: \sn
5783: For a specific triple of lists of variables
5784: \,$\att:u, \,\btt:v,\,\ctt:w$,
5785: \,let \,\Procabc\ \,be the class of all \WhileCCx\ \,procedures
5786: of type \,\utov,
5787: \,with declaration
5788: \ `$\ins \ \att\ \outs \ \btt\ \auxs \ \ctt$'.
5789: The procedure evaluation function (\S3.2($g$))
5790: localised to this declaration:
5791: $$
5792: \PEabcA: \ \Procabc\times\Au \totop\ \Avua
5793: $$
5794: defined by
5795: $$
5796: \PEabcA(P,\,a) \ = \ \PA(a),
5797: $$
5798: is strictly tracked by the computable function
5799: $$
5800: \peabcAbe: \ \cnr{\Procabc}\times\Ombeu\ \pto\ \Ombev
5801: $$
5802: defined by the following algorithm.
5803: Let \,$P\in \Procabc$; \,say
5804: $$
5805: P \ \ident \ \procs\ \ins \ \att\ \outs \ \btt\ \auxs \ \ctt\
5806: \begins \ S\ \ends
5807: $$
5808: and let \,$k_0\in\Ombeu$.
5809: Take any \,$k_1\in\Ombev$
5810: \,and
5811: \,$k_2 \in \Ombew$.
5812: \,(The choice of $k_1$ and $k_2$ is irrelevant,
5813: by Remark 3.2.4.)
5814: Put
5815: \,$k\ident k_0,k_1,k_2$ \,and put
5816: \,$\xtt \ident \att,\btt,\ctt$.
5817: Compute
5818: \,$\sexAbe(\cS,k)$. Suppose this converges to
5819: \,$l\ident \,l_0,l_1,l_2$, \,where
5820: \,$l_0\in \Ombeu$,
5821: \,$l_1\in \Ombev$
5822: \,and
5823: \,$l_2\in \Ombew$.
5824: Then we define \,$\peabcAbe(\cP,\,k_0) \da l_1$.
5825: The following diagram then commutes:
5826:
5827: $$
5828: \commdiag{
5829: \Procabc\times\Au&\ &\bimaprighturaise5{\PEabcA}&^+&\Avua\cr
5830: \mapupl{\ang{\enum,\,\beu}}&\ &&&\mapupr{\,\bev}\cr
5831: \cnr{\Procabc}\times\Ombeu&\ &\maprightud{\bdot}{\peabcAbe}&&\Ombev
5832: }
5833: $$
5834: \mn
5835: in the sense that
5836: $$
5837: \aligned
5838: \peabcAbe\,(\cP,k)\da l\ &\implies \ \be(l)\,\in \,\PEabcA\,(P,\,\be(k)),\\
5839: \peabcAbe\,(\cP,k)\,\ua \quad\ &\implies \ \ua\,\in \,\PEabcA\,(P,\,\be(k)).
5840: \endaligned
5841: \tag6
5842: $$
5843: This is proved from (5)
5844: and the definitions of \,\PE\ \,and \,\pe.
5845:
5846: This concludes the proof of Lemma Scheme 6.3.1.
5847: \endpf
5848:
5849:
5850: \mn
5851: {\bf Proof of Theorem $\tx{\bf A}_{\bk 0}$ \,(conclusion):}
5852: \ \ Suppose
5853: \,$F:\Au\pto A_s$
5854: \,is \WhileCCx\ computable on $A$.
5855: Then there is a deterministic \WhileCCx\ \,procedure (Definitions 3.2.5/6)
5856: $$
5857: P\: u\ \to \ s
5858: $$
5859: such that for all \ainAu,
5860: $$
5861: \align
5862: F(x) \da y \ &\impp \ \PA(x) = \{y\},\\
5863: F(x) \ \ua \,\ \ \ &\impp \ \PA(x) = \{\ua\}.
5864: \endalign
5865: $$
5866: Hence by ($g$) (above) there is a computable (partial) function
5867: $$
5868: f\: \Ombeu\ \pto\ \Ombes
5869: $$
5870: which strictly tracks $F$, as required.
5871: \endpf
5872:
5873: \newpage
5874:
5875: \Shead7{\bbf Soundness of \WhileCCxbig\ \,approximation}
5876: In this section we address the general situation
5877: introduced in \S6.2, of a partial metric \Sig-algebra $A$
5878: with an enumerated subalgebra \Xal,
5879: and prove a more general soundness theorem (Theorem A) for
5880: \WhileCCx\ approximation.
5881:
5882:
5883: \shead{7.1}{Enumerated subspace of metric algebra; \,Computational closure}
5884: Let $A$ be an N-standard metric \Sig-algebra,
5885: and \Xal\ an enumerated \SortSig-family
5886: \,\ang{\Xsal\mid\sinSortSig}
5887: \,of subsets \,$X_s\sseq A_s$ \,(\sinSortSig).
5888: Each \Xs\ can be viewed as a {\it metric subspace\/}
5889: of the metric space \As.
5890: We call \Xal\ a \SortSig-{\it enumerated (metric) subspace\/} of $A$.
5891:
5892: %Assume now for convenience that \,$\Omals = \NN$ \,for all sorts $s$.
5893: We define from \Xal\ a family
5894: $$
5895: \CalX \ = \ \ang{\CalXs \br \sinSortSig}
5896: $$
5897: of sets \,\CalXs\ \,of \al-{\it computable elements of\/} \,\As,
5898: \,\ie, limits in \As\ of effectively convergent Cauchy sequences
5899: (to be defined below)
5900: of elements of \,\Xs,
5901: \,so that
5902: $$
5903: \Xs\ \sseq\ \CalXs\ \sseq \ \As,
5904: $$
5905: with corresponding enumerations
5906: $$
5907: \albars:\ \Omalbars \ \onto \ \CalXs.
5908: $$
5909: Writing \,$\albar = \ang{\albars\mid\sinSortSig}$,
5910: we call the enumerated subspace \,\CalXalbar\
5911: \,the {\it computable closure\/} of \Xal\ in $A$.
5912:
5913: We will generally be interested in (strictly) \albar-computable
5914: (rather than \al-computable)
5915: functions on $A$ (\cf\ Definition 6.1.3),
5916: as our more general model of {\it concrete computability\/} on $A$.
5917:
5918: The sets \,$\Omalbars\sseq\NN$
5919: consist of
5920: {\it codes\/} for \,\CalXs\ \,(w.r.t\. \al),
5921: \,\ie, \,pairs of numbers
5922: \,$c = \ang{e,m}$ \,where
5923: \itemm{($i$)}
5924: $e$ is an index for a total recursive function defining a
5925: sequence \,$\al\circ\curl{e}$ \,in \Xs, \ie, the sequence
5926: $$
5927: \als(\{e\}(0)),\ \als(\{e\}(1)), \ \als(\{e\}(2)), \ \dots\ ,
5928: \tag1
5929: $$
5930: of elements of \Xs,
5931: \itemm{($ii$)}
5932: $m$ is an index for a modulus of convergence for this sequence:
5933: $$
5934: \all k, l\ge\{m\}(n):
5935: \ \ds_i(\al(\{e\}(k)),\,\al(\{e\}(l))) < 2^{-n} .
5936: \tag2
5937: $$
5938: \sn
5939: For any such code \,$c=\ang{e,m}\in\Omalbars$,
5940: \,$\albars(c)$ \,is defined as the limit in \As\ of the Cauchy sequence (1),
5941: and \,\CalXs \,is the range of \,\albars:
5942: $$
5943: \commdiag{
5944: \Xs&\quad\sseq\quad&\CalXs&\ \ \sseq\ \ &A\cr
5945: \mapup\lft{\dz{\als}}&&\mapup\lft{\dz{\albars}}\cr
5946: \Omals&\ &\Omalbars
5947: }
5948: $$
5949:
5950:
5951: \Remarkn{7.1.1}
5952: We may assume, when convenient,
5953: that the modulus of convergence for a given code is the {\it identity\/},
5954: \ie, replace (2) by the simpler condition
5955: $$
5956: \all k, l\ge n:
5957: \ \ds_i(\al(\{e\}(k)),\,\al(\{e\}(l))) < 2^{-n} .
5958: $$
5959: or, equivalently,
5960: $$
5961: \all k > n:
5962: \ \ds_i(\al(\{e\}(k)),\,\al(\{e\}(n))) < 2^{-n} .
5963: \tag3
5964: $$
5965: This is because any code \,$c=\ang{e,m}$ \,satisfying (2)
5966: may be effectively replaced by a code
5967: for the same element of \,\CalXs\ \,satisfying (3),
5968: namely \,$c'=\ang{e',m_1}$,
5969: \,where $m_1$ is a standard code for the identity function on \,\NN,
5970: \,and \,$e'=\comp(e,m)$,
5971: \,where \,$\comp(x,y)$ \,is a primitive recursive function
5972: for ``composition" of (indices of) computable functions, \ie,
5973: \,$\curly{\comp(e,m)}(x) \sq \curly{e}(\curly{m}(x))$.
5974:
5975: In case of a code \,$c=\ang{e,m_1}$
5976: \,satisfying (3), the sequence (1)
5977: is called a {\it fast (\al-effective) Cauchy sequence\/}.
5978: In such a case
5979: we will often, for simplicity,
5980: refer to $e$ itself as the ``code",
5981: and the argument of \,\albars.
5982: In this way we will shift between ``$c$-codes" and ``$e$-codes"
5983: as convenient.
5984: \endpr
5985:
5986: \Remarkn{7.1.2}
5987: In the case \,$s = \nats$,
5988: \,we can simply take \,$\Om_{\albar,\natss} = \Om_{\al,\natss} = \NN$,
5989: and \,$\albar_\natss$ \,and \,$\al_\natss$
5990: \,as the identity mappings on \,\NN.
5991: Similarly, in the case \,$s=\bools$, \,we can take
5992: \,$\Om_{\albar,\boolss} = \Om_{\al,\boolss} = \curly{0,1}$,
5993: with \,$\albar(0) = \al(0) = \fff$
5994: \,and
5995: \,$\albar(1) = \al(1) = \ttt$.
5996: (\Cf\ Remark 6.1.3($b$).)
5997: \endpr
5998:
5999: \Remarkn{7.1.3 \,(Closure of \alb-computability operation)}
6000: The subspace \,\CalXalbar\ \,is ``computationally closed in $A$",
6001: in the sense that
6002: the limit of a (fast) \albar-effective Cauchy sequence
6003: of elements of \,\CalX\ \,is again in \CalX,
6004: \,\ie, \,$\Calbar(\CalX) = \CalX$.
6005: %iterating the operation \,$\al\mapsto\albar$
6006: %\,does not add new elements to \CalX.
6007: %In other words,
6008: ({\it Easy exercise.\/})
6009: \endpr
6010:
6011: \Remarkn{7.1.4}
6012: We will usually assume that \Omals\ is decidable,
6013: in fact, that \,$\Omals = \NN$ \,for all sorts $s$, \,which is
6014: typical in practice, unlike the case for \Omalbar.
6015: (See the following Example.)
6016: \endpr
6017:
6018: \Examplen{7.1.5 \,(Constructible reals)}
6019: The best known nontrivial example of an enumerated subspace \Xal,
6020: and its extension to a subspace of \al-computable elements,
6021: is the following. Let $A$ be the metric algebra \RRR\ of reals
6022: (Example 2.6.1),
6023: with signature \Sig.
6024: Let \,$X_\realss$ \,be the set of rationals \,$\QQ\sset\RR$,
6025: \,let \,$\Omalreal = \NN$
6026: \,and let
6027: $$
6028: \alreal\: \NN\ \to\ \QQ
6029: $$
6030: be a canonical enumeration of \QQ.
6031: Then \,$\CalQQ \eqdf \Cals(X)_\realss\sset \RR$
6032: \,is the subspace of {\it recursive\/} or
6033: {\it constructible reals\/}.
6034: Note that it is a {\it subfield\/} of \RR, and
6035: hence \,\CalX\ \,is a {\it subalgebra\/} of \RRR.
6036: Further, it is easily verified that \albar\ is strictly \SigRRR-effective.
6037: (\Cf\ Definition 6.1.6.)
6038: Note that \,$\Omalreal = \NN$,
6039: \,unlike \,\Omalbarreal, \,which, by contrast, is non-recursive.
6040: (See the previous Remark.)
6041: \endpr
6042:
6043:
6044: \Remarkn{7.1.6 \ (Extension of enumeration to \Ax)}
6045: Given an enumeration \al\
6046: of a \Sig-subspace $X$
6047: \,of $A$, we can extend this canonically to an enumeration \alx\
6048: of a \Sigx-subspace \Xx\ \,of \Ax.
6049: ({\it Easy exercise\/}.)
6050: This in turn generates an enumeration \,\albarx\
6051: \,of a \Sigx-subspace \CalXx\
6052: \,of \alx-computable elements of \Ax.
6053: It is easy to see that
6054: \itemm{($i$)}
6055: if \CalX\ is an \Sig-subalgebra of $A$, then \,\CalXx\ \,is a
6056: \Sigx-subalgebra of \Ax;
6057: \itemm{($ii$)}
6058: if \albar\ is (strictly) \Sig-effective, then \,\albarx\ \,is
6059: (strictly) \Sigx-effective.
6060: \sn
6061: We will usually use this extension (of \Xal\ and \,\CalXalbar)
6062: to \Ax\ implicitly,
6063: \ie, writing `\al' instead of `\alx' etc.
6064: %without displaying the superscript `\str'.
6065: \endpr
6066:
6067: \shead{7.2}{Soundness Theorem for effective numberings}
6068: We now prove the first main theorem mentioned in the Introduction.
6069:
6070: \Thmn{A \ (Soundness)}
6071: Let $A$ be an N-standard metric \Sig-algebra,
6072: and \Xal\ an enumerated \SortSig-subspace.
6073: Suppose the enumerated \SortSig-space \CalXalbar\ of
6074: \al-computable elements of $A$ is a \Sig-subalgebra of $A$,
6075: and \albar\ is strictly \Sig-effective.
6076: If \,$F:\Au\pto \As$
6077: \,is \,\WhileCCx-approximable on $A$, then $F$
6078: is \albar-computable on $A$.
6079: \endpr
6080:
6081: \Pf
6082: The proof uses the Soundness Theorem $A_0$
6083: (Section 6), or rather the Lemma Scheme 6.4.1
6084: (specifically, part ($g$) of the proof)
6085: applied to the enumerated subalgebra \,\CalXalbar\
6086: \,in place of \Abe.
6087:
6088: So suppose
6089: \,$F:\Au\pto \As$
6090: \,is effectively uniformly \WhileCCx\ \,approximable on $A$.
6091: Then there is a \WhileCCxSig\ \,procedure
6092: $$
6093: P:\nats\times u\to s
6094: $$
6095: such that
6096: for all \,\ninNN\ \,and \,all $x\in\dom{F}$:
6097: $$
6098: \ua\,\notin\,\PAn(x)\ \sseq\ \Bb(F(x),\,2^{-n}).
6099: \tag1
6100: $$
6101: (see Definition 3.5.1).
6102: By \S6.4($g$) (applied to \,\CalXalbar\ \,in place of \Abe)
6103: there is a computable function
6104: $$
6105: f:\ \NN\times\Omalbaru\ \pto\ \Omalbars
6106: $$
6107: which tracks \PA\ strictly,
6108: in the sense that for all \,\ninNN, \,$e\in\Omalbaru$
6109: \,and $e'\in\Omalbars$
6110: \,(and writing $f_n = f(n,\,\cdot\,)$):
6111: $$
6112: \aligned
6113: f_n(e)\da e' \ &\implies\ %e'\in\Omalbars\,\con\,
6114: \albar(e')\in \PAn(\albar(e)),\\
6115: f_n(e)\ \ua \ \ \ \ &\implies\ \ua\in \PAn(\albar(e)).
6116: \endaligned
6117: \tag2
6118: $$
6119: We will show how to define a partial recursive \albar-tracking function
6120: $$
6121: g: \ \Omalbaru\ \to \ \Omalbars
6122: $$
6123: for $F$ as follows.
6124:
6125: Given any $e\in\Omalbaru$,
6126: suppose \,$\albar(e)\in\dom{F}$, \,\ie,
6127: $$
6128: F(\albar(e))\da \ \in \As.
6129: \tag3
6130: $$
6131: We must show how to define an \albar-tracking function $g$ for $F$,
6132: \ie, such that
6133: $$
6134: g(e)\in \Omalbars \qquad\tx{and}
6135: \qquad \albar(g(e)) \ = \ F(\albar(e)).
6136: \tag4
6137: $$
6138: By (1), for all $n$
6139: $$
6140: \ua \,\notin \, \PAn(\albar(e)) \ \sseq\ \Bb(F(\albar(e)),\,2^{-n}).
6141: \tag5
6142: $$
6143: Hence by (2), for all $n$
6144: %$$
6145: %f_n(e)\da \,\in\,\Omalbars \qquad\tx{and}\qquad
6146: % \albar(f_n(e))\,\in\,\PAn(\albar(e)).
6147: %\tag6
6148: %$$
6149: $$
6150: f_n(e)\da \,\in\,\Omalbars
6151: \tag{6$a$}
6152: $$
6153: and
6154: $$
6155: \albar(f_n(e))\,\in\,\PAn(\albar(e)).
6156: \tag{6$b$}
6157: $$
6158: and so by (6$a$) we may assume (by definition of \Omalbar)
6159: that for all $n$
6160: $$
6161: \tx{$\al\circ\curl{f_n(e)}$ \,is a fast Cauchy sequence,
6162: with limit \,$\albar(f_n(e))$.}
6163: \tag7
6164: $$
6165: %(Note the notation \curl{e}
6166: %for the partial recursive function with index $e$.)
6167: Also by (6$b$) and (5),
6168: $$
6169: \ds\bigl(\albar(f_n(e)), \ F(\albar(e))\bigr) \ <\ 2^{-n}.
6170: \tag8
6171: $$
6172: Now let $e'$ be a ``canonical" index for the (partial) function
6173: $$
6174: \curl{e'}:\ n\ \mapsto \curl{f_n(e)}(n)
6175: \tag9
6176: $$
6177: obtained uniformly effectively in $e$.
6178: So \curl{e'}
6179: is the ``diagonal" function
6180: formed from the sequence of functions with indices
6181: $f_n(e)$.
6182: Consider
6183: the sequence \,$\als\circ \curl{e'}$, \,\ie,
6184: $$
6185: \als(\{e'\}(0)),\ \als(\{e'\}(1)), \ \als(\{e'\}(2)), \ \dots,
6186: \tag{10}
6187: $$
6188: {\bf Claim:}
6189: \,(10) is a Cauchy sequence in \As, with modulus of convergence
6190: \,$\lam n(n+2)$.
6191: \endpr
6192:
6193: \n{\bf Proof of claim:}
6194: \ For any $n$ and $k>n$:
6195: $$
6196: \align
6197: &\quad\ \ \ds\big(\al(\curl{e'}(k)),\ \al(\curl{e'}(n)\big) \\
6198: &= \ \ds\big(\al(\curl{f_k(e)}(k),\ \al(\curl{f_n(e)}(n)\big)
6199: \qquad\tx{by def\. (9) of $e'$}\\
6200: &\le \ \ds\big(\al(\curl{f_k(e)}(k)),\ \albar(f_k(e))\big)
6201: \ + \ \ds\big(\albar(f_k(e)),\ \albar(f_n(e))\big)
6202: \ + \ \ds\big(\albar(f_n(e)),\ \al(\curl{f_n(e)}(n))\big)\\
6203: &=\ \ds_1\ + \ \ds_2\ + \ \ds_3 \qquad\tx{(say)}
6204: \endalign
6205: $$
6206: where
6207: $$
6208: \align
6209: &\ds_1 \ \le \ 2^{-k},\\
6210: &\ds_3 \ \le \ 2^{-n},
6211: \endalign
6212: $$
6213: by (7), and
6214: $$
6215: \align
6216: \ds_2 \ &\le \ \ds\big(\albar(f_k(e)),\ F(\albar(e))\big)
6217: \ + \ \ds\big(F(\albar(e)),\ \albar(f_n(e))\big) \\
6218: &< \ 2^{-k} \ + \ 2^{-n}
6219: \endalign
6220: $$
6221: by (8).
6222: Therefore
6223: $$
6224: \align
6225: \ds\big(\al(\curl{e'}(k)),\ \al(\curl{e'}(n)\big)
6226: \ &\le \ \ds_1\ + \ \ds_2\ + \ \ds_3\\
6227: &< \ 2\cdot 2^{-k} \ + \ 2\cdot 2^{-n}\\
6228: &< \ 2^{-n+2}.
6229: \endalign
6230: $$
6231: This proves the claim.
6232: \endpf
6233: Further, by the method of Remark 7.1.1
6234: (composing \curl{e'} with the modulus of convergence),
6235: we can replace the index $e'$ by an $e$-code
6236: $e''$ for a fast Cauchy sequence:
6237: $$
6238: \curl{e''}(n) \ \sq \ \curl{e'}(n+2).
6239: \tag{11}
6240: $$
6241: Then we define
6242: $$
6243: g(e) \ = \ e''.
6244: \tag{12}
6245: $$
6246: We show that $g$ is an \albar-tracking function for $F$,
6247: \ie, (assuming (3)) we show (4).
6248: %$$
6249: %g(e)\in \Omalbars \qquad\tx{and}
6250: %\qquad \albar(g(e)) \ = \ F(\albar(e)).
6251: %\tag{12}
6252: %$$
6253: Since \,$\al\circ \curl{e''}$ \,is a
6254: fast Cauchy sequence, with the same limit in $A$
6255: (if it exists) as \,$\al\circ \curl{e'}$ \,(by its definition (11)),
6256: \,to prove (4) it is enough to show (by (12)) that
6257: $$
6258: \al(\curl{e'}(n)) \ \to \ F(\albar(e)) \qquad \tx{as}\qquad n \ \to\ \infty.
6259: \tag{13}
6260: $$
6261: This follows since
6262: $$
6263: \aligned
6264: \ds\big(\al(\curl{e'}(n),\ F(\albar(e) )\big)
6265: \ &= \ \ds\big(\al(\curl{f_n(e)}(n)),\ F(\albar(e))\big)
6266: \qqquad\tx{by def\. (9) of $e'$}\\
6267: \ &\le\ \ds\big(\al(\curl{f_n(e)}(n)), \ \albar(f_n(e))\big)
6268: \ + \ \ds\big(\albar(f_n(e)), \ F(\albar(e))\big)\\
6269: \ &<\ 2^{-n}\ \ + \ \ 2^{-n} \qquad\qqqquad\tx{by (7) and (8)}\\
6270: \ &=\ 2^{-n+1}
6271: \endaligned
6272: $$
6273: proving (13).
6274: \endpf
6275:
6276: \Remarkn{7.2.1}
6277: A deterministic version of Theorem A
6278: (\ie, without `\chooses')
6279: was proved in \cite{stewart:thesis}.
6280:
6281:
6282: \newpage
6283:
6284: \itemm{\bbf 8 \ }{\bbf Interpretation of concrete in abstract model:
6285: \,Adequacy of
6286: \nl
6287: \WhileCCxbig\ \,approximation}
6288:
6289: \shead{8.1}{Adequacy Theorem}
6290: In this section we will prove Theorem B, a converse to the result of
6291: the previous section.
6292: Assume that $A$ is an N-standard metric \Sig-algebra,
6293: and \Xal\ an enumerated \Sig-subspace,
6294: with \al-computable closure \,\CalXalbar.
6295:
6296: Note that we are not assuming in this section that
6297: \,\CalX\ \,is a subalgebra of $A$,
6298: \,or even that
6299: \,\albar\ \,is \Sig-effective.
6300:
6301: Before stating the theorem,
6302: we need a definition.
6303:
6304: \Defn{8.1.1 \,(\al-effective local uniform continuity)}
6305: A partial function
6306: \,$F:\Au\pto\As$
6307: \,is {\it effectively locally uniformly continuous\/\ }
6308: (with respect to \al) \,if
6309: there is a recursive sequence
6310: $$
6311: (k_0,l_0),\ (k_1,l_1),\ (k_2,l_2),\ \dots
6312: $$
6313: of pairs of naturals such that
6314: $$
6315: \dom{F} \ \sseq\ \bigcup_{i=0}^\infty\Bbu\big(\al(k_i),\,2^{-l_i}\big)
6316: $$
6317: and there is a total recursive function
6318: \ $\LUF: \NN^2\to\NN$
6319: \ (a modulus of local uniform continuity for $F$) such that
6320: for all $i$, all \,$x,y\in\Bbu\big(\al(k_i),\,2^{-l_i}\big)\cap\dom{F}$,
6321: \,and all $n$:
6322: $$
6323: \dsu(x,y)\,< \,2^{-\LUFs(i,n)} \ \implies\ \ \dss(F(x),F(y))\,<\,2^{-n}.
6324: $$
6325: Here \,$\Bbu(a,\del)$ \,is the open ball in \Au\ with centre
6326: $a$ and radius \del.
6327: (Recall the definition (2.6.3) of the product metric \dsu\ on \Au.).
6328: \endpr
6329:
6330: \Examplen{8.1.2}
6331: This phenomenon typically occurs
6332: in the situation where $A$ is a countable union of
6333: neighbourhoods with compact closure;
6334: for example, in the algebra \,\RRRp\ \,of reals,
6335: \,\RR\ \,is the union of the neighbourhoods
6336: \,$(-k,\,k)$ \,for $k=1,2,\dots$.
6337: Then a continuous function $F$ on $A$ will be uniformly continuous
6338: on each of these neighbourhoods.
6339: \endpr
6340:
6341: We are now ready for the theorem.
6342:
6343: \Thmn{B \ (Adequacy)}
6344: Let $A$ be an N-standard metric \Sig-algebra,
6345: \Xal\ an enumerated \SortSig-subspace,
6346: and \,\CalXalbar\ the \SortSig-subspace
6347: \,of \al-computable elements of $A$. Suppose
6348: that for all \Sig-sorts $s$:
6349: \sn
6350: ($i$) \ \Xs\ is dense in \As, \,and
6351: \sn
6352: ($ii$) \ $\als:\NN\to\As$ \,is \WhileCCx-computable on $A$.
6353: \sn
6354: Let \,$F:\Au\pto \As$ \,be a function on $A$
6355: such that
6356: \sn
6357: ($iii$) \ $F$
6358: is effectively locally uniformly continuous w.r.t\. \al, \,and
6359: \sn
6360: ($iv$) \ \dom{F} is open.
6361: \sn
6362: If $F$ is strictly \albar-computable on $A$,
6363: then $F$ is \WhileCCx\ \,approximable on $A$.
6364: \endpr
6365:
6366: Note the extra condition in Theorem B
6367: (apart from assumptions ($i$)--($iv$)),
6368: that $F$ be {\it strictly\/} \albar-computable.
6369:
6370: \Remarkn{8.1.3}
6371: From the proof of the theorem, it will be apparent that
6372: only sorts $s$ in the domain of $F$ have to satisfy condition ($i$),
6373: and only sorts $s$ in the domain or range of $F$ have to
6374: satisfy condition ($ii$).
6375: \endpr
6376:
6377: The proof uses the following notation.
6378:
6379: \Notationn{8.1.4}
6380: For any \,$k\in\NN$, \,let \,\econk\ \,be a canonical index for
6381: the constant function \,on \,\NN\
6382: \,with constant value $k$,
6383: \ie, for all $n\in\NN$,
6384: $$
6385: \curl{\econk}(n) \ = \ k.
6386: $$
6387: Note that \,$\econk\in\Omalbar$ \,and
6388: $$
6389: \albar(\econk) \ = \ \al(k).
6390: $$
6391: \endpr
6392:
6393: \shead{8.2}{Proof of Theorem B: \,Overview}
6394: As an aid to the reader,
6395: we first give an informal overview
6396: of the proof of Theorem B.
6397: (See Figure 3.)
6398:
6399: \midinsert
6400: \epsfxsize = 4in
6401: \ce{\epsfbox{fig3.eps}}
6402: \mn
6403: \ce{\sc Figure 3}
6404: \sn
6405: \endinsert
6406:
6407: Given the assumptions \,$(i)\to(iv)$
6408: \,of Theorem B,
6409: suppose
6410: \,$F:\Au\,\pto\,\As$ \,is strictly \albar-computable by
6411: \,$f:\Omalbaru\pto\Omalbars$.
6412: (In Figure 3, we represent $f$ as mapping
6413: \,\Omalu\ \,to \,\Omals,
6414: \,rather than mapping
6415: \,\Omalbaru\ \,to \,\Omalbars,
6416: \,as a useful approximation,
6417: as we will see.)
6418: We must describe a \WhileCCx\ \,procedure
6419: which approximates $F$ on $A$.
6420:
6421: Let \xinAu.
6422: Suppose \,$F(x)\da y$.
6423: By the {\it density\/} of \,$X=\ran{\alu}$ in \Au,
6424: and by the {\it openness\/} of \dom{F},
6425: for each $n$
6426: we can find
6427: (using the \,`\chooses' \,operator,
6428: as well as the \WhileCCx\ \,computability of \al)
6429: an element \,$k_n$ of \Omalu\
6430: \,such that
6431: \,$x_n \eqdf \alu(k_n) \in\dom{F}$,
6432: \,and also
6433: \,$\ds(x_n,x) < 2^{-n}$.
6434:
6435: Now compute
6436: an element \,$l_n$ of \Omalu\
6437: which is a close approximation to
6438: $f(k_n)$, or rather to $f(e_{\conss[k_n]})$.
6439: More precisely, let
6440: \,$e'_n \eqdf f(e_{\conss[k_n]})$,
6441: \,and let
6442: \,$l_n \,\eqdf \,\curl{e'_n}(n)$.
6443: Then
6444: \,$\ds(\al(l_n), \albar(e'_n)) < 2^{-n}$.
6445: Put \,$y_n = \al(l_n)$.
6446:
6447: We must now check that the mapping
6448: \,$(x,n)\mapsto y_n$
6449: \,defined above is \WhileCCx\
6450: \,computable, and approximates $F$.
6451: By {\it effective local uniform continuity\/} of $F$,
6452: since
6453: \,$(x_n)_n$
6454: \,is a fast Cauchy sequence with limit $x$,
6455: \,$(y_n)_n$
6456: \,is a Cauchy sequence with computable modulus of convergence and limit $y$.
6457: Note also that \WhileCCx\ \,computability of $y_n$
6458: (as a function of $x$ and $n$)
6459: uses the \WhileCCx\ \,{\it computability\/} of \al.
6460: Hence we can define a \WhileCCx\
6461: \,procedure
6462: \,$P:\nats\times u \,\to\,s$
6463: \,with \,$P^A(n,x)$
6464: \,equal to
6465: the set of all such $y_n$, obtainable
6466: in this way from all possible implementations of the
6467: \,`\chooses' \,operator.
6468: Hence $F$ is computably approximable by $P$.
6469:
6470: We turn to a precise proof of the theorem.
6471:
6472:
6473: \shead{8.3}{Proof of Theorem B}
6474: First we show, from assumption ($iii$),
6475: that $F$ has a \WhileCCx\ \,modulus of continuity,
6476: \ie, a function
6477: $$
6478: \MCF:\ \Au\times\NN\ \pto\ \NN
6479: $$
6480: such that \,$\dom{F}\sseq\dom{\MCF}$, \,and
6481: for all \,$x,y\in\dom{F}$ \,and for all $n$,
6482: $$
6483: %\ds(x,y)\,<\,2^{-\MCFs(\dz{x,n})}\ \implies \ \ds(F(x),F(y))\,<\,2^{-n}.
6484: \ds(x,y)\,<\,2^{-\MCFs(\dz{x,n})}\ \implies \ \ds(F(x),F(y))\,<\,2^{-n}.
6485: \tag1
6486: $$
6487: A \WhileCCx\ \,algorithm for this
6488: is easily constructed as follows
6489: (using the notation of Definition 8.1.1).
6490: With input \xinAu\ \,and $n$:
6491: \,first find $i$ such that
6492: $$
6493: x\in\Bb(\al(k_i),\ 2^{-l_i}).
6494: \tag2
6495: $$
6496: (If $x\notin\dom{F}$,
6497: there may be no such $i$, and the algorithm
6498: for $\MCF(x,n)$ would then diverge, which is fine, from our viewpoint.)
6499: \,Note that
6500: the sequences ($k_i$) and ($l_i$)
6501: are computable, and also
6502: (by assumption ($ii$))
6503: \,\al\ \,is \WhileCCx\ computable.
6504: We also use
6505: the primitive operations
6506: \,\ds\ \,and \,`$<$' (partial!) on \,\RR,
6507: \,as well as the \,`\chooses' \,construct,
6508: in ``finding" a suitable $i$.
6509:
6510: Next (by (2)) find a natural number $d_0$ such that
6511: $$
6512: \ds(x,\,\al(k_i)) \,+ \,2^{-d_0} \ < \ 2^{-l_i}.
6513: \tag3
6514: $$
6515: Here again we use
6516: the \WhileCCx\ \,computability of \al,
6517: and
6518: the primitive operations
6519: \,\ds, \,`$+$' \,and \,`$<$
6520: on \,\RR, \,
6521: as well as the \,`\chooses' \,construct,
6522: to find a suitable $d_0$.
6523:
6524: From (2) and (3),
6525: $$
6526: \Bb(x,\ 2^{-d_0}) \ \sseq\ \Bb(\al(k_i),\ 2^{-l_i}).
6527: $$
6528: So define
6529: $$
6530: \MCF(x,n) \ := \ \max(d_0,\,\LUF(i,n))
6531: $$
6532: which is \,\WhileCCx\ \,computable, by the above remarks.
6533:
6534: Now we will describe (in pseudo-\WhileCCx\ \,code)
6535: an algorithm for a \WhileCCx-computable function
6536: $$
6537: G:\ \NN\times\Au\ \totop\ \Asua
6538: $$
6539: which approximates $F$, in the sense that
6540: for all $n$ and all $x\in\dom{F}$,
6541: %\,$G_n(x)\sseq\As$, \,and
6542: $$
6543: %\tx{for all} \ \ y\,\in \,G_n(x), \quad \ds(F(x),\,y)\ <\ 2^{-n}.
6544: G_n(x)\ \sseq\ \Bb(F(x),\,2^{-n})\ \sseq\ A_s.
6545: \tag4
6546: $$
6547: With input \,$n,\,x$:
6548: \sn
6549: ($1^\circ$)
6550: \ Compute
6551: $$
6552: M\ :=\ \MCF(x, \,n+1).
6553: \tag5
6554: $$
6555: \ ($2^\circ$)
6556: We want to find some $k$ such that both
6557: $$
6558: \ds(\al(k),\ x) \ < \ 2^{-M}
6559: \tag6
6560: $$
6561: and
6562: $$
6563: \albar(\econk) \ = \ \al(k) \,\in\,\dom{F}.
6564: \tag7
6565: $$
6566: Assume $x\in\dom{F}$.
6567: By the density assumption ($i$)
6568: and \ openness assumption ($iv$),
6569: such a $k$ exists.
6570: Further, by assumption, $F$ has a
6571: computable strict \albar-tracking function $f$.
6572: Then (7) is equivalent to
6573: $$
6574: f(\econk)\da.
6575: \tag8
6576: $$
6577: So using the \,`\chooses' \,construct again,
6578: search for some $k$ satisfying both (6) and (8).
6579: (Note that in practice
6580: this `\chooses' operation would be implemented by dovetailing ---
6581: recall the discussion in \S4.1.)
6582: \sn
6583: ($3^\circ$)
6584: Compute \,$f(\econk)\da e'$.
6585: By (7), \,$e'\in\Omal$ \,and
6586: $$
6587: F(\al(k)) \ = \ F(\albar(\econk)) \ = \ \albar(f(\econk)) \ = \ \albar(e').
6588: $$
6589: Hence by (1), (5) and (6),
6590: $$
6591: \ds\big(F(x),\ \albar(e')\big)\
6592: = \ \ds\big(F(x),\ F(\al(k))\big) \ < \ 2^{-n-1}.
6593: \tag9
6594: $$
6595: ($4^\circ$)
6596: \ Finally compute
6597: $$
6598: y\ :=\ \al\big(\{e'\}(n+1)\big)
6599: \tag{10}
6600: $$
6601: This is possible by assumption ($ii$) again.
6602: Then, since \,$\al\circ\{e'\}$ \,is a fast Cauchy sequence,
6603: $$
6604: \ds\big(y,\ \albar(e')\big) \ =
6605: \ \ds\big(\al(\{e'\}(n+1)),\ \albar(e')\big) \ \le\ 2^{-n-1}.
6606: \tag{11}
6607: $$
6608: Hence by (11) and (9),
6609: $$
6610: \align
6611: \ds\big(y,\,F(x)\big) \ &\le
6612: \ \ds\big(y,\,\albar(e')\big)\,+\,\ds\big(\albar(e'),\,F(x)\big)\\
6613: &<\ 2^{-n-1}\,+\,2^{-n-1}\\
6614: &=\ 2^{-n}.
6615: \endalign
6616: $$
6617: Define \,$G_n(x)$ \,to be the set of all possible $y$ computed as in (10),
6618: by all possible implementations of the \,`\chooses' \,construct
6619: as used in the above algorithm.
6620: %(see Discussion 3.2.7).
6621: Then $G$ satisfies (4), and is \WhileCCx\ \,computable,
6622: by the above discussion.
6623: \endpf
6624:
6625:
6626: \Shead9{Completeness of \WhileCCxbig\ \,approximation}
6627: Under certain assumptions,
6628: we can combine Theorems A and B into a single equivalence,
6629: Theorem C below.
6630: We will then look at several examples of metric algebras where our
6631: abstract and concrete models are equivalent according to this Theorem.
6632:
6633: \shead{9.1}{Effective openness}
6634: Note first the following problem:
6635: Theorem A concludes with \albar-computability of $F$,
6636: whereas Theorem B assumes {\it strong\/} \albar-computability.
6637: To deal with this, we must make an assumption
6638: of ``effective openness" of \dom{F}.
6639: This is handled by strengthening the ``effective local uniform continuity"
6640: assumption, as follows.
6641:
6642: Assume, as before, that $A$ is an N-standard metric
6643: \Sig-algebra,
6644: \Xal\ \,is an enumerated \Sig-subspace of $A$,
6645: and \,\CalXalbar\ \, is its computable closure in $A$.
6646:
6647: \Defn{9.1.1 \ (\al-effective openness)}
6648: A subset $U$ of \Au\ ($u$ a \Sig-product type)
6649: is {\it effectively open\/} (with respect to \al)
6650: \,if there is a recursive sequence
6651: $$
6652: (k_0,l_0),\ (k_1,l_1),\ (k_2,l_2),\ \dots
6653: $$
6654: of pairs of naturals such that
6655: $$
6656: U \ =\ \bigcup_{i=0}^\infty\Bbu\big(\al(k_i),\,2^{-l_i}\big).
6657: $$
6658: \endpr
6659:
6660: \Defn{9.1.2 \ (Strong \al-effective local uniform continuity)}
6661: A partial function
6662: \,$F:\Au\pto\As$
6663: \,is {\it strongly effectively locally uniformly continuous\/}
6664: (with respect to \al)
6665: \,if there is a recursive sequence
6666: $$
6667: (k_0,l_0),\ (k_1,l_1),\ (k_2,l_2),\ \dots
6668: $$
6669: of pairs of naturals such that
6670: $$
6671: \dom{F} \ =\ \bigcup_{i=0}^\infty\Bbu\big(\al(k_i),\,2^{-l_i}\big)
6672: \tag1
6673: $$
6674: and
6675: there is a total recursive function
6676: \ $\LUF: \NN^2\to\NN$
6677: \ (a modulus of local uniform continuity for $F$) such that
6678: for all $i$, all \,$x,y\in\Bbu\big(\al(k_i),\,2^{-l_i}\big)$,
6679: \,and all $n$:
6680: $$
6681: \ds(x,y)\,< \,2^{-\LUFs(i,n)} \ \implies\ \ \ds(F(x),F(y))\,<\,2^{-n}.
6682: $$
6683: \endpr
6684:
6685: \Remarkn{9.1.3}
6686: The only difference between effective local uniform continuity
6687: (Definition 8.1.1) and the ``strong" version above
6688: is the equality in equation (1).
6689: \endpr
6690:
6691: Let
6692: \,$F:\Au\pto \As$
6693: \,be a function on $A$. Then clearly:
6694:
6695: \Lemman{9.1.4}
6696: Strong \al-effective local uniform continuity of $F$
6697: implies \al-effective openness of \dom{F}.
6698: \endpr
6699:
6700: \Lemman{9.1.5}
6701: Suppose \dom{F} is \al-effectively open,
6702: and \albar\ is strictly \Sig-effective.
6703: Then
6704: $$
6705: \tx{$F$ is \,\albar-computable}
6706: \ \ \ifff
6707: \ \ \tx{$F$ is strictly \,\albar-computable.}
6708: $$
6709: \endpr
6710:
6711: \Pf
6712: ($\tto$)
6713: Note first that the assumptions imply that
6714: $$
6715: \domal{F} \ \eqdf\ (\albar)^{-1}(\dom{F})
6716: \ = \ \curly{e\in \Omalbaru\mid \albar(e)\in \dom{F}}
6717: $$
6718: is an r.e. (recursively or computably enumerable)
6719: subset of \NN, since for all $e\in\NN$
6720: $$
6721: e\in \domal{F} \ \ifff\
6722: \ex i \,\big[\ds(\albar(e), \al(k_i)) \,< \,2^{-l_i}\big]
6723: $$
6724: (in the notation of Definition 9.1.2)
6725: which is an r.e\.
6726: condition, by strict \albar-computability of \,\ds\ \,and \,\lsreal\
6727: \,(implied by strict \Sig-effectiveness of \albar).
6728: Hence, if $f$ is a computable \albar-tracking function for $F$,
6729: it can be replaced by a strict \albar-tracking function $f'$,
6730: defined by
6731: $$
6732: f'(e) \ \simeq\
6733: \cases
6734: f(e) \ift{$e\in\domal{F}$}\\
6735: \ua \ow
6736: \endcases
6737: $$
6738: which is easily seen to be computable.
6739: \endpf
6740: \Lemman{9.1.6}
6741: Suppose \dom{F} is \al-effectively open,
6742: and the mappings \,$\als:\NN\to\As$ \,are \WhileCCx\ computable.
6743: Then
6744: $$
6745: \tx{$F$ is \WhileCCx-approximable}
6746: \ \ \ifff
6747: \ \ \tx{$F$ is strictly \WhileCCx-approximable.}
6748: $$
6749: \endpr
6750: \n
6751: (Recall Definition 3.5.1.)
6752: \,The proof is an easy exercise.
6753:
6754:
6755: \shead{9.2}{Completeness}
6756: We are ready to state the completeness theorem
6757: for \WhileCCx\ approximability relative to
6758: \albar-computability.
6759:
6760: \newpage
6761:
6762: \Thmn{C \,(Completeness)}
6763: Let $A$ be an N-standard metric \Sig-algebra,
6764: and \Xal\ an enumerated \SortSig-subspace.
6765: Suppose the enumerated \SortSig-space \CalXalbar\ of
6766: \al-computable elements of $A$ is a \Sig-subalgebra of $A$.
6767: Assume also that for all \Sig-sorts $s$,
6768: \sn
6769: ($i$) \ \albar\ \,is strictly \Sig-effective,
6770: \sn
6771: ($ii$) \ \Xs\ \,is dense in \As, \,and
6772: \sn
6773: ($iii$) \ $\als:\NN\to\As$ \,is \WhileCCx-computable on $A$.
6774: \sn
6775: Let \,$F:\Au\pto \As$
6776: \,be a function on $A$,
6777: such that
6778: \sn
6779: ($iv$) \ $F$
6780: is strongly effectively locally uniformly continuous w.r.t\. \al.
6781: \sn
6782: Then
6783: $$
6784: \tx{$F$ is (strictly) \WhileCCx\ approximable on $A$}
6785: \ \ \ifff
6786: \ \ \tx{$F$ is (strictly) \,\albar-computable on $A$.}
6787: $$
6788: \endpr
6789: \n
6790: Note that the word ``strictly" in the equivalence
6791: may be omitted or inserted in either side at will.
6792:
6793: \Pf
6794: From Theorems A and B, together with Lemmas 9.1.4, 9.1.5 and 9.1.6.
6795: \endpr
6796:
6797: \sheads{9.3}{Examples of the application of the Completeness Theorem}
6798: \mn
6799: {\bf ({\bi a}) \,Canonical enumerations\/}
6800: \sn
6801: The purpose of this example is
6802: to make plausible condition ($iii$) of Theorem C
6803: (and, of course, condition ($ii$) of Theorem B in Section 8),
6804: \ie, the assumption of \WhileCCx\ computability
6805: of the enumeration \al, by describing a commonly occurring
6806: situation which implies it.
6807:
6808: Suppose \Xal\ is an enumerated \Sig-subalgebra of $A$.
6809:
6810: \Defn{9.3.1}
6811: The enumeration
6812: \,$\al\:\NN\onto X$
6813: \,is {\it effectively determined by a system of generators\/}
6814: \,$G = \ang{g^s_0,g^s_1,g^s_2,\dots}_\sinSortSig$
6815: \,if, and only if,
6816: \sn($i$) \,$G$ generates $X$ as a \Sig-subalgebra of $A$;
6817: \sn($ii$) \,\al\ \,is defined as the composition of the maps
6818: $$
6819: \commdiag{
6820: \NN\,\maprighturaise3{\enumSig} \,\TermSig\,\maprighturaise3{\evalG}\,X
6821: }
6822: $$
6823: where \,\enumSig\ \,is the inverse of the G\"odel numbering
6824: of \,\TermSig, \,and \,\evalG\
6825: \,is the term evaluation induced by $G$,
6826: %$$
6827: %\xtt_i^s \ \mapsto \ g_i^s,
6828: %$$
6829: \ie,
6830: $$
6831: \evalG(t) \ = \ \bb{t}\sigG,
6832: $$
6833: where \sigG\ is the state defined by
6834: $$
6835: \sigG(\xtt_i^s) \ = \ g_i^s
6836: $$
6837: for some standard enumeration
6838: \,$\xtt_0^s, \,\xtt_1^s, \,\xtt_2^s, \dots$
6839: \,of the \Sig-variables of sort $s$; \,and
6840: \sn($iii$)
6841: if, for any \Sig-sort $s$,
6842: the sequence
6843: \,\ang{g^s_0,g^s_1,g^s_2,\dots}
6844: \,is finite, then each $g^s_i$ is a \Sig-constant,
6845: \,whereas if this sequence is infinite,
6846: then the map
6847: \,$i \mapsto g_i^s$
6848: \,is a \Sig-function.
6849: \endpr
6850:
6851: An enumeration constructed in this way is called {\it canonical\/}
6852: w.r.t\. $G$.
6853:
6854: \Remarkn{9.3.2 \,(Totality of \evalG)}
6855: We assume here that \,\evalG\
6856: \,(and hence \al) is total.
6857: This is achieved by assuming that either
6858: \itemm{($i$)}
6859: $A$ is total, \,or
6860: \itemm{($ii$)}
6861: \TermSig\ \,is replaced by some decidable subset
6862: \,$\Term'(\Sig)$
6863: \,on which \,\evalG\ \,is total
6864: (for example, omitting all terms involving division by 0).
6865: \sn
6866: Either one of these assumptions holds in each of the following examples;
6867: for example, ($i$) holds in example ($b$) below, and ($ii$) in example ($c$),
6868: resulting in the same ``canonical" enumeration \al\ of \QQ\
6869: in both cases (even though the algebras are different).
6870: \endpr
6871:
6872: \Propn{9.3.3}
6873: If \,\al\ \,is effectively determined
6874: by a system of generators, then the canonical
6875: enumerations \,\als\ \,are \Whilex\ computable for all \Sig-sorts $s$.
6876: \endpr
6877:
6878: \Pf
6879: This follows from the \Whilex\ computability
6880: of term evaluation \cite[Cor\. 4.7]{tz:hb}.
6881: \endpf
6882:
6883: The significance of the above definition
6884: and proposition is this:
6885: it is quite common for an enumeration to be effectively determined
6886: by a system of generators;
6887: and in such a situation,
6888: condition ($ii$) in Theorem B, and ($iii$) in Theorem C,
6889: will be (more than) satisfied.
6890: This will be the case in the following examples.
6891: \endpr
6892:
6893: \mn
6894: {\bf ({\bi b}) \,Partial real algebra\/}
6895: \sn
6896: Recall the example (7.1.5) of the enumeration \al\
6897: of \QQ\ as a subspace of the N-standardised metric
6898: algebra \,\RRRN\ \,of reals
6899: (Examples 2.5.3($b$) and 2.6.1)
6900: and the corresponding enumeration \albar\
6901: of the set \,\CalQQ\ \,of {\it recursive reals\/}.
6902: Note that \al\ is canonical,
6903: being effectively determined by the generators \curl{0,1},
6904: and is hence \Whilex\ computable over \RRR.
6905: Further, \QQ\ is dense in \RR,
6906: \,\CalQQ\ \,is a subfield of \RR,
6907: and \albar\ is strictly \SigRRR-effective.
6908: We then have,
6909: as a corollary to Theorem C:
6910:
6911: %Now let
6912: %$$
6913: %F\:\RR^n\ \pto\ \RR
6914: %$$
6915: %be any partial function on \RR\ which is strongly effectively
6916: %locally uniformly continuous.
6917: %(Examples of such a function are all the common functions
6918: %of elementary calculus, such as \ $1/x$, $\log(x)$ and $\tan(x)$.)
6919:
6920: \Corn{9.3.4}
6921: Suppose
6922: \,$F\:\RR^n\ \pto\ \RR$
6923: \,is strongly effectively
6924: locally uniformly continuous.
6925: Then
6926: %\sn
6927: %\ce{$F$ is (strictly) \WhileCCx-approximable on \RRRN\ \ \ifff\
6928: %\ $F$ is (strictly) \albar-computable on \RR.}
6929: $$
6930: \multline
6931: \tx{$F$ is (strictly) \WhileCCx-approximable on \RRRN}\\
6932: \llongtofrom
6933: \ \ \tx{$F$ is (strictly) \albar-computable on \RR.}
6934: \endmultline
6935: $$
6936: \endpr
6937:
6938: Examples of functions satisfying the assumption
6939: (and also the equivalence)
6940: are all the common (partial) functions
6941: of elementary calculus, such as \ $1/x$, \,$\log x$ \,and \,$\tan x$.
6942:
6943: \newpage
6944:
6945: \mn
6946: {\bf ({\bi c}) \,Banach spaces with countable bases\/}
6947: \sn
6948: Let $X$ be a Banach space over \RR\ with a countable basis
6949: \,$e_0,e_1,e_2,\dots $,
6950: which means that any element $x\in X$ can be represented uniquely
6951: as an infinite sum
6952: $$
6953: x \ = \ \sum_{i=0}^\infty r_i e_i
6954: $$
6955: with coefficients \,$r_i\in\RR$
6956: (where the infinite sum is understood as denoting convergence
6957: of the partial sums in the norm of $X$).
6958: (Background on Banach space theory can be found in
6959: any of the standard texts, \eg, \cite{royden,taylor-lay}.)
6960: To program with $X$, we construct a many-sorted algebra \XXX\ of the form
6961: \mn
6962: $$
6963: \boxed{
6964: \matrix \format\l&\quad\l\\
6965: \algebras &\XXX \\
6966: \imports &\RRRN\\
6967: \carrierss &X\\
6968: \functionss
6969: &0\:\ \ \to X,\\
6970: &+\:X^2 \to X,\\
6971: &-\:X \to X,\\
6972: &\odot\:\RR\times X\to X,\\
6973: &\normfn\:X\to \RR,\\
6974: &\es\:\NN\to X,\\
6975: &\ifs_X\:\BB\times X^2\to X\\
6976: \ends&
6977: \endmatrix
6978: }
6979: $$
6980: \mn
6981: where \,$\odot$ \,is scalar multiplication,
6982: \,\normfn\ \,is the norm function and
6983: and \,\es\ \,is the enumeration of the basis:
6984: \,$\es(i) = e_i$.
6985: Note that the algebras \BBB\ and \NNN\ are
6986: implicitly imported, as parts of \RRRN,
6987: so that there are four carriers:
6988: \,$X$, \RR, \BB\ \,and \,\NN,
6989: \,of sorts
6990: \,\vectors, \,\scalars, \,\bools\ \,and \,\nats\
6991: \,respectively.
6992:
6993:
6994: Let \,$\Sig = \Sig(\XXX)$.
6995: Let \Sigo\ be \Sig\ without the norm function \,\normfn,
6996: \,and let \XXXo\ be the reduct of \XXX\ to \Sigo.
6997: Then \Sigo\ is the signature of an N-standardised vector space
6998: over \RR, with explicit countable basis.
6999:
7000: This can be turned into a metric algebra
7001: in the standard way,
7002: by defining a distance function on $X$
7003: in terms of the norm:
7004: $$
7005: \ds(x,y) \ \eqdf\ \norm{x-y}.
7006: $$
7007:
7008: Let \,$\LQQe\sset X$ \,be the set of all finite
7009: linear combinations of basis elements from \es\ with
7010: coefficients in \QQ.
7011: The following are easily shown:
7012: \bull
7013: \LQQe\ \,is countable; in fact it has a canonical enumeration
7014: $$
7015: \al\: \NN\ \onto\ \LQQe
7016: $$
7017: w.r.t\. the generators \,\es,
7018: \,which (by ($a$) above)
7019: is \Whilex\ computable;
7020: \bull
7021: \LQQe\ is dense in $X$;
7022: \bull
7023: \LQQe, with scalar field \QQ\
7024: (together with carriers \NN\ and \BB)
7025: is a \Sigo-subalgebra of \XXXo.
7026:
7027: \sn
7028: Now let \,(\CalLQQe,\ \albar) \,be the enumerated subspace of
7029: \al-computable vectors. Then we can see that
7030:
7031: \bull
7032: \CalLQQe, with scalar field \,\CalQQ\
7033: (together with carriers \NN\ and \BB)
7034: is also a \Sigo-subalgebra of \XXXo;
7035: \,and moreover,
7036:
7037: \bull
7038: \albar\ \,is strictly \Sigo-effective.
7039:
7040: \sn
7041: However \,\CalLQQe\ \,is {\it not\/} necessarily a {\it normed\/}
7042: subspace of \XXX, since it may not be
7043: closed under \,\normfn,
7044: \,\ie, \,\norm{x} may not be in \,\CalQQ\ \,for all $x\in \CalLQQe$;
7045: for example, if \XXX\ is the space \,\lp\ \,or
7046: \,$\Lp[0,1]$
7047: \,where $p$ is a nonrecursive real (see Examples 9.3.8 below).
7048: We must therefore make an explicit assumption
7049: for the Banach space \,\Xnorm\ \,with respect to
7050: both the {\it closure\/} of \,\CalLQQe\ \,under \,\normfn,
7051: \,and the \,\albar-{\it computability\/} of \,\normfn.
7052:
7053: \Assumptionn{9.3.5 \,(\albar-computable norm assumption for \,\Xnorm)}
7054: \nl
7055: For all $x\in \CalLQQe$, \,$\norm{x}\in\CalQQ$.
7056: Furthermore, the norm function \,\normfn\
7057: \,is strictly \,\albar-computable.
7058: \endpr
7059:
7060: \n
7061: As we will see, many common examples of Banach spaces satisfy
7062: this assumption.
7063:
7064: %\Remarkn{9.3.6}
7065: Note that ssumption 9.3.5 is equivalent to the
7066: following (apparently weaker) assumption,
7067: which is often easier to prove:
7068: \endpr
7069:
7070: \Assumptionn{9.3.6 \,(\alalbar-computable norm assumption for \,\Xnorm)}
7071: For all $x\in \LQQe$, \,$\norm{x}\in\CalQQ$.
7072: Further, \,\normfn\ \,has a computable \alalbar-tracking function,
7073: \ie, a computable function \,$f\:\NN\to\NN$
7074: \,such that the following diagram commutes:
7075:
7076: \bn
7077: $$
7078: \commdiag{
7079: \LQQe& &\maprighturaise3{\normfn}& &\CalQQ\cr
7080: \mapupl{\al}& && &\mapupr{\ \albar}\cr
7081: \NN& &\maprightd{f}& &\Omalbar
7082: }
7083: $$
7084: \endpr
7085:
7086: \mn
7087: Suppose now that \,\Xnorm\ \,satisfies the \albar-computable norm assumption.
7088: Then the \Sigo-subalgebra \,\CalLQQe\ \,of \XXXo\
7089: can be expanded to a \Sig-subalgebra of \XXX\
7090: (which we will also write as \,\CalLQQe), enumerated by \albar,
7091: which is strictly \Sig-effective.
7092:
7093: Now let \,$F\:X\to \RR$ \,be a (total) {\it linear functional on\/} $X$.
7094: $F$ is said to be {\it bounded\/} if for some real $M$,
7095: $$
7096: |F(x)| \ \le \ M\norm{x} \ \ \ \tx{for all} \ \,x\in X.
7097: \tag1
7098: $$
7099: Write \norm{F} for the least $M$ for which (1) holds.
7100: Then if $F$ is bounded,
7101: $$
7102: |F(x)-F(y)| \ \le\ \norm{F}\cdot\norm{x-y} \ \ \ \tx{for all}\ \,x,y\in X,
7103: $$
7104: and so $F$ is uniformly continuous, in fact it is clearly
7105: {\it effectively locally uniformly continuous\/},
7106: and strongly so (since it is total).
7107: We may therefore apply Theorem C to $F$.
7108:
7109: \Corn{9.3.7 \,(Completeness for computation on Banach spaces)}
7110: Let $X$ be a Banach space over \RR\ with countable basis, and
7111: let \,\CalLQQe\ \,be the enumerated subspace of \al-computable vectors,
7112: where \al\ is a canonical enumeration of the subspace \,\LQQe.
7113: Suppose \Xnorm\ satisfies the \,\alalbar-computable norm assumption.
7114: Then for any bounded linear functional $F$ on $X$,
7115: $$
7116: \tx{$F$ is (strictly) \WhileCCx\ approximable on \XXX}
7117: \ \ifff
7118: \ \tx{$F$ is (strictly) \,\albar-computable on $X$,}
7119: $$
7120: where \XXX\ is the N-standard algebra formed from $X$ as above.
7121: \endpr
7122:
7123: Finally we give examples of Bananch spaces which satisfy this
7124: \albar-computable norm assumption.
7125:
7126: \Examplesn{9.3.8 \,(Banach spaces with computable norms)}
7127: \itemm{($i$)}
7128: For $1\le p<\infty$, we have the space \,\lp\
7129: \,of all sequences $x = \ang{x_n}_{n=0}^\infty$
7130: \,of reals such that \,$\sum_{n=0}^\infty |x_n|^p < \infty$,
7131: with norm defined by
7132: $$
7133: \norm{x}_p \ = \ \big(\sum_{n=0}^\infty |x_n|^p\big)^{1/p},
7134: $$
7135: and a countable basis given by \,$e_i = \ang{e_{i,n}}_{n=0}^\infty$,
7136: \,where
7137: $$
7138: e_{i,n} \ = \
7139: \cases
7140: 1 \ift{$i=n$},\\
7141: 0 \ow.
7142: \endcases
7143: $$
7144: It is not hard to see that
7145: $$
7146: \tx{\sl if $p$ is a recursive real, then
7147: \,\lp\ \,satisfies the computable norm assumption,}
7148: $$
7149: and hence Corollary 9.3.7 can be applied to it.
7150:
7151: \itemm{($ii$)}
7152: For $1\le p<\infty$, we have the space
7153: \,$\Lp[0,1]$
7154: \,of all Lebesgue measurable functions $f$ on
7155: the unit interval $[0,1]$
7156: such that \,$\int_0^1 |f|^p<\infty$,
7157: \,with norm defined by
7158: $$
7159: \norm{f}_p \ = \ \big(\int_0^1 |f|^p\big)^{1/p},
7160: $$
7161: and a countable basis given by (\eg)
7162: some standard enumeration of all
7163: step functions on $[0,1]$ with rational values
7164: and (finitely many) rational points of discontinuity,
7165: or of all
7166: polynomial functions on $[0,1]$ with rational coefficients.
7167: Again, it is not hard to see that
7168: $$
7169: \tx{\sl if $p$ is a recursive real, then \,$\Lp[0,1]$
7170: \,satisfies the computable norm assumption,}
7171: $$
7172: and hence Corollary 9.3.7 can be applied to it.
7173:
7174: \itemm{($iii$)}
7175: The space \,$C[0,1]$
7176: \,of all continuous functions $f$ on $[0,1]$,
7177: with norm defined by
7178: $$
7179: \norm{f}_{\tx{sup}} \ = \ \sup_{t\in I}|f(t)|
7180: $$
7181: and a countable basis given by a standard enumeration
7182: of all
7183: zig-zag functions on $[0,1]$ with (finitely many) turning points
7184: with rational coordinates,
7185: or of all
7186: polynomial functions on $[0,1]$
7187: with rational coefficients.
7188: Again, we see that
7189: $$
7190: \tx{\sl $C[0,1]$ \,satisfies the computable norm assumption.}
7191: $$
7192:
7193:
7194: \Shead{10}{Conclusion}
7195: We have compared two theories of computable functions on topological
7196: algebras, one based on an abstract, high level model of programming and
7197: another based on a concrete, low-level implementation model. Our
7198: examples and results here, combined with our earlier results
7199: \cite{tz:top,tz:hb}
7200: and those of Brattka \cite{brattka96,brattka:thesis},
7201: show that the following are surprisingly necessary features
7202: of a comprehensive theory of computation on topological algebras:
7203:
7204: \item{1.}
7205: The algebras have partial operations.
7206: \item{2.}
7207: Functions are both continuous and multivalued.
7208: \item{3.}
7209: Classical algorithms in analysis require nondeterministic
7210: constructs for their proper expression
7211: in programming languages.
7212: \item{4.}
7213: Indeed, multivalued subfunctions are needed to compute even single-valued
7214: functions, and abstract models must be nondeterministic even to compute
7215: deterministic problems.
7216: \item{5.}
7217: Abstract models and effective approximations by abstract models
7218: are generally sound for concrete models.
7219: \item{6.}
7220: Abstract models even with approximation or limit operators are
7221: adequate to capture concrete models only in special circumstances.
7222: \item{7.}
7223: Nevertheless there are interesting examples where equivalence holds.
7224: \item{8.}
7225: The classical computable functions of analysis can be characterised
7226: by abstract models of computation.
7227:
7228: Specifically, we examined abstract computation by the basic
7229: imperative model of \qwhiles-array programs. Many
7230: algorithms in practical computation are presented in
7231: pseudo-code based on the \qwhiles\ language. To meet the
7232: requirement of feature 2 above we added the simplest form of
7233: countable choice to the assignments of the language, and we
7234: defined the \WhileCCx\ approximable computations. We proved
7235: a Soundness Theorem (Theorem A) and an Adequacy Theorem
7236: (Theorem B), and combined these into a Completeness Theorem (Theorem C),
7237: in the case of metric algebras with partial
7238: operations. We considered algebras
7239: of real numbers and Banach spaces where equivalence
7240: theorems hold.
7241:
7242: There are, of course, interesting technical questions to
7243: answer in working out the details of the computability
7244: theory for the \WhileCCx\ model (\cf\ the theory
7245: for single-valued functions on total algebras in
7246: \cite{tz:hb}). There are several other important
7247: abstract models of computation that may be extended
7248: with nondeterminsitic constructs in order to establish
7249: equivalence with concrete models. The abstract model of
7250: schemes in \cite{brattka:thesis} is quite general in a number of
7251: ways. The topological properties of many valued functions
7252: are also in need of investigation.
7253:
7254: However, returning to the general problem posed in the
7255: Introduction, the features 1--8 above suggest that new
7256: research directions are needed to develop a comprehensive
7257: theory of specification, computation and reasoning
7258: with infinite data. What are the appropriate programming
7259: constructs for working with topological computations? What
7260: specification techniques are appropriate for continuous
7261: systems? What logics are needed to support verification
7262: of programs that approximate functions? Our work on
7263: computation suggests that some advanced semantic features
7264: are necessary. It suggests that the nondeterminism that
7265: played an important role in programming methodologies of
7266: the late 1970s (\eg, \cite{dijkstra:book} seems to be needed in
7267: the proper development of topological programming. There
7268: are plenty of algorithms in scientific modelling, numerical
7269: analysis and graphics to investigate, using such new theoretical tools.
7270:
7271:
7272: \bigskip
7273: \bigskip
7274: \goodbreak
7275:
7276: \cbb{References}\bigskip
7277:
7278: \bibliographystyle{alpha}
7279: \bibliography{abbrev,bib}
7280:
7281: \enddocument
7282: